§
    ŠŠtjg  ã                   ó  — d dl mZ d dlZd dlmZmZmZ d dlmZ d dl	m
Z
 dedeeee         f         dee         fd	„Zdedeeee         f         dee         fd
„Zdedeeee         f         defd„Zdedz  defd„ZdS )é    )ÚAnyN)ÚGraphÚmap_argÚNode)Ú
OrderedSet)Útree_flattenÚnodeÚnode_to_additional_depsÚreturnc                 ó¸   — t          t                   ¦   «         }t          | j        | j        f|j        ¦  «         | |v r|                     ||          ¦  «         |S ©N)Úlistr   r   ÚargsÚkwargsÚappendÚextend©r	   r
   r   s      úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_dynamo/graph_utils.pyÚ_get_flat_argsr      sU   € õ •Œ9‰;Œ;€DÝˆTŒY˜œÐ$ d¤kÑ2Ô2Ð2ØÐ&Ð&Ð&Ø�ŠÐ+¨DÔ1Ñ2Ô2Ð2Ø€Kó    c                 ó¸   — t          t                   ¦   «         }t          | j        | j        f|j        ¦  «         | |v r|                     ||          ¦  «         |S r   )r   r   r   r   r   ÚaddÚupdater   s      r   Ú_get_flat_args_uniquer      sX   € õ •dÔÑÔ€DÝˆTŒY˜œÐ$ d¤hÑ/Ô/Ð/ØÐ&Ð&Ð&Ø�ŠÐ+¨DÔ1Ñ2Ô2Ð2Ø€Kr   Úgraphc           
      ó*  — i }t          | j        ¦  «        D ]û}||v rŒ|t          t          ||¦  «        ¦  «        fg}d||<   |rÍ|d         \  }}	 t	          |¦  «        }t          |t          ¦  «        sŒ3|                     |d¦  «        }|dk    rd„ |D ¦   «         |gz   }	d|	› �c S |dk    r7d||<   |                     |t          t          ||¦  «        ¦  «        f¦  «         n)# t          $ r | 
                    ¦   «          d||<   Y nw xY w|°ÍŒüdS )Né   éÿÿÿÿr   c                 ó   — g | ]\  }}|‘ŒS © r    )Ú.0r	   Ú_s      r   ú
<listcomp>z"_detect_cycles.<locals>.<listcomp>>   s   € Ð!<Ð!<Ð!<©7¨4° $Ð!<Ð!<Ð!<r   zcycle detected in path: é   zno cycle detected)ÚreversedÚnodesÚiterr   ÚnextÚ
isinstancer   Úgetr   ÚStopIterationÚpop)
r   r
   ÚstateÚrootÚstackÚparentÚchildrenÚchildÚchild_stateÚ
cycle_paths
             r   Ú_detect_cyclesr5   "   su  € ð  €Eå˜œÑ%Ô%ð &"ð &"ˆØ�5ˆ=ˆ=Øð �Õ2°4Ð9PÑQÔQÑRÔRÐSÐTˆØˆˆd‰àð 	"Ø$ RœyÑˆF�Hð"Ý˜X™œ�å! %­Ñ.Ô.ð Øà#Ÿiši¨¨qÑ1Ô1�à !Ò#Ð#à!<Ð!<°eÐ!<Ñ!<Ô!<À¸wÑ!F�JØB°jÐBÐBÐBÐBÐBà !Ò#Ð#Ø#$�E˜%‘LØ—L’Là!Ý Õ!6°uÐ>UÑ!VÔ!VÑWÔWðñô ð øøõ !ð "ð "ð "à—	’	‘”�Ø !��f‘��ð"øøøð5 ð 	"øð> Ðs   Á$C'Á60C'Â)=C'Ã'#DÄDc                 ó®  — | €dS dt           dt          fd„}dt          dt          dt          t                    fd„}| j        D ]’}dD ]!} |||¦  «        D ]} ||¦  «        c c c S Œ"|j        d	k    r0d
D ]-}|j        |k    r|c c S |j        dk    r||j        v r|c c S Œ.t          |j        |j	        f¦  «        \  }}|D ]} ||¦  «        c c S Œ“dS )NÚcpuÚxr   c                 ó”   — t          | t          j        ¦  «        r| j        S t          | t          j        ¦  «        r| j        j        S dS )Nr7   )r)   ÚtorchÚdeviceÚtypeÚTensor)r8   s    r   Ú_device_typez(_graph_device_type.<locals>._device_typeW   s@   € Ý�a�œÑ&Ô&ð 	Ø”6ˆMÝ�a�œÑ&Ô&ð 	!Ø”8”=Ð Øˆur   r	   Úkeyc                 óV   — || j         vrg S t          | j         |         ¦  «        \  }}|S r   )Úmetar   )r	   r?   Úflatr"   s       r   Ú_flatten_metaz)_graph_device_type.<locals>._flatten_meta^   s0   € Ø�d”iÐÐØˆIÝ˜tœy¨œ~Ñ.Ô.‰ˆˆaØˆr   )ÚvalÚexample_valueÚcall_method)ÚcudaÚxpuÚto)
r   Ústrr   r   r&   ÚopÚtargetr   r   r   )	r   r>   rC   r	   r?   ÚobjÚgpuÚ	flat_argsr"   s	            r   Ú_graph_device_typerP   S   so  € Ø€}Øˆuð�ð ¥ð ð ð ð ð�Dð ¥sð ­tµC¬yð ð ð ð ð ”ð %ð %ˆØ+ð 	)ð 	)ˆCØ$�} T¨3Ñ/Ô/ð )ð )�Ø#�| CÑ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð)ð Œ7�mÒ#Ð#Ø&ð ð �Ø”; #Ò%Ð%Ø�J�J�J�J�JØ”; $Ò&Ð&¨3°$´)Ð+;Ð+;Ø�J�J�J�J�Jøõ $ T¤Y°´Ð$<Ñ=Ô=‰ˆ	�1Øð 	%ð 	%ˆCØ�< Ñ$Ô$Ð$Ð$Ð$Ð$Ð$ð	%àˆ5r   )Útypingr   r:   Útorch.fxr   r   r   Útorch.utils._ordered_setr   Útorch.utils._pytreer   Údictr   r   r   rJ   r5   rP   r    r   r   ú<module>rV      sM  ðØ Ð Ð Ð Ð Ð à €€€Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø /Ð /Ð /Ð /Ð /Ð /Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðØ
ðØ)-¨d°J¸tÔ4DÐ.DÔ)Eðà	ˆ$„Zðð ð ð ðØ
ðØ)-¨d°J¸tÔ4DÐ.DÔ)Eðà�Ôðð ð ð ð.Øð.Ø+/°°jÀÔ6FÐ0FÔ+Gð.àð.ð .ð .ð .ðb"˜e d™lð "¨sð "ð "ð "ð "ð "ð "r   