§
    Ÿ²Åjt*  ã                   ó|  — U d dl Z d dlZd dlZd dlmZmZmZmZmZ d dl	Z	d dl
Z	d„ Zd„ Zd„ Zd„ Zdd„Zd	„ Zdd
œd„Ze	j        j        ee	j        j        ee	j        ee	j        j        j        ee	j        j        ee	j        ee	j        eiZeeef         ed<   d„ Z G d„ de	j        j        ¦  «        Z G d„ de¦  «        Z  G d„ de ¦  «        Z!d„ Z" G d„ de	j        j#        ¦  «        Z$	 	 ddee	j        j%        edef         f         deee&e	j'        f                  deee&ef                  de	j        j(        fd„Z)dS )é    N)ÚAnyÚCallableÚDictÚOptionalÚUnionc                 óX   — t          j        g |j        ¢| j        j        d         ‘R ddiŽS )NéÿÿÿÿÚdeviceÚmeta)ÚtorchÚemptyÚshapeÚweight©ÚselfÚinputs     úRC:\Projects\Historical\venv\Lib\site-packages\torch/fx/experimental/meta_tracer.pyÚembedding_overrider      s1   € ÝŒ;ÐJ˜œÐJ T¤[Ô%6°rÔ%:ÐJÐJÐJÀ6ÐJÐJÐJó    c                 ó   — |S ©N© r   s     r   Únn_layernorm_overrider      s   € Ø€Lr   c                 ó   — | S r   r   )Úxs    r   Útorch_relu_overrider      ó   € Ø€Hr   c                 ó   — |S r   r   )r   r   s     r   Útorch_nn_relu_overrider      r   r   Fc                 ó   — |r
J d¦   «         ‚| S )Nz<dont support inplace functional.relu for metatensor analysisr   )r   Úinplaces     r   Úfunctional_relu_overrider"      s   € ØÐVÐVÐVÑVÔVˆ;Ø€Hr   c                 óŠ   — |                       d¬¦  «        |                      d¬¦  «        z   |                      d¬¦  «        z   S )Nr   ©r
   )Úto)Ú	conditionr   Úys      r   Útorch_where_overrider(       s>   € ð �<Š<˜vˆ<Ñ&Ô&¨¯ª°V¨Ñ)<Ô)<Ñ<¸q¿tºtÈ6¸tÑ?RÔ?RÑRÐRr   )Úoutc                ó   — |�
J d¦   «         ‚| S )Nz1Dont support in-place abs for MetaTensor analysisr   )r   r)   s     r   Útorch_abs_overrider+   &   s   € Øˆ;ˆ;ÐK‰;Œ;ˆ;Ø€Lr   Úmanual_meta_overridesc                 óJ   ‡ — t          j        ‰ ¦  «        ˆ fd„¦   «         }|‰ fS )Nc                  óö   •‡— d Šˆfd„}t           j        j                             | |¦  «         t           j        j                             ||¦  «         ‰�‰j                             d‰| |¦  «        S  ‰| i |¤ŽS )Nc                 óN   •— t          | t          j        j        ¦  «        r| Šd S d S r   )Ú
isinstancer   ÚfxÚProxy)ÚvÚproxys    €r   Úcheck_has_proxyzAgen_constructor_wrapper.<locals>.wrapper.<locals>.check_has_proxy;   s,   ø€ Ý˜!�UœXœ^Ñ,Ô,ð à���ðð r   Úcall_function)r   r1   ÚnodeÚmap_aggregateÚtracerÚcreate_proxy)ÚargsÚkwargsr5   r4   Útargets      @€r   Úwrapperz(gen_constructor_wrapper.<locals>.wrapper7   s�   øø€ àˆð	ð 	ð 	ð 	ð 	õ
 	ŒŒ×#Ò# D¨/Ñ:Ô:Ð:ÝŒŒ×#Ò# F¨OÑ<Ô<Ð<àÐØ”<×,Ò,¨_¸fÀdÈFÑSÔSÐSà�6˜4Ð* 6Ð*Ð*Ð*r   )Ú	functoolsÚwraps)r=   r>   s   ` r   Úgen_constructor_wrapperrA   6   s=   ø€ Ý„_�VÑÔð+ð +ð +ð +ñ Ôð+ð  �Fˆ?Ðr   c                   ój   — e Zd Zd„ Zd	d„Zd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	d„ Z
dS )
Ú	MetaProxyc                 ó   — || _         d S r   )Ú_tensor_meta)r   Útensor_metas     r   Úinstall_tensor_metazMetaProxy.install_tensor_metaL   s   € Ø'ˆÔÐÐr   Nc                 ó    — t          | d¦  «        r| j        � | j        j        |r|gng Ž S | j                             dd|r| |fn| fi ¦  «        S )NrE   Úcall_methodÚsize)ÚhasattrrE   rJ   r9   r:   )r   Údims     r   rJ   zMetaProxy.sizeO   sm   € Ý�4˜Ñ(Ô(ð 	A¨TÔ->Ð-JØ)�4Ô$Ô)°CÐ+?¨C¨5¨5¸RÐ@Ð@ØŒ{×'Ò'Ø˜6°#Ð#B D¨# ; ;¸D¸7ÀBñ
ô 
ð 	
r   c                 óž   — t          | d¦  «        r | j        �| j                             ¦   «         S | j                             dd| fi ¦  «        S )NrE   rI   rL   )rK   rE   rL   r9   r:   ©r   s    r   rL   zMetaProxy.dimV   sO   € Ý�4˜Ñ(Ô(ð 	+¨TÔ->Ð-JØÔ$×(Ò(Ñ*Ô*Ð*ØŒ{×'Ò'¨°u¸t¸gÀrÑJÔJÐJr   c                 óš   — t          | d¦  «        r| j        �| j        j        S | j                             dt
          j        | dfi ¦  «        S )NrE   r6   r   )rK   rE   r   r9   r:   ÚbuiltinsÚgetattrrN   s    r   r   zMetaProxy.shape[   óR   € å�4˜Ñ(Ô(ð 	+¨TÔ->Ð-JØÔ$Ô*Ð*ØŒ{×'Ò'Ø�XÔ-°°g¨Àñ
ô 
ð 	
r   c                 óš   — t          | d¦  «        r| j        �| j        j        S | j                             dt
          j        | dfi ¦  «        S )NrE   r6   Údtype)rK   rE   rT   r9   r:   rP   rQ   rN   s    r   rT   zMetaProxy.dtypec   rR   r   c                 ó"   — t          | d¦  «        S )Nr
   )ÚMetaDeviceAttributerN   s    r   r
   zMetaProxy.devicek   s   € õ # 4¨Ñ2Ô2Ð2r   c                 óX   — |dk    r|                       |¦  «        S t          | |¦  «        S )NrE   )Ú__getattribute__ÚMetaAttribute)r   Úks     r   Ú__getattr__zMetaProxy.__getattr__q   s3   € Ø�ÒÐØ×(Ò(¨Ñ+Ô+Ð+õ ˜T 1Ñ%Ô%Ð%r   r   )Ú__name__Ú
__module__Ú__qualname__rG   rJ   rL   Úpropertyr   rT   r
   r[   r   r   r   rC   rC   K   s©   € € € € € ð(ð (ð (ð
ð 
ð 
ð 
ðKð Kð Kð
 ð
ð 
ñ „Xð
ð ð
ð 
ñ „Xð
ð ð3ð 3ñ „Xð3ð
&ð &ð &ð &ð &r   rC   c                   ó6   — e Zd Zdefd„Zed„ ¦   «         Zd„ ZdS )rY   Úattrc                 óH   — || _         || _        |j        | _        d | _        d S r   )Úrootra   r9   Ú_node)r   rc   ra   s      r   Ú__init__zMetaAttribute.__init__z   s$   € ØˆŒ	ØˆŒ	Ø”kˆŒØˆŒ
ˆ
ˆ
r   c                 óŽ   — | j         €8| j                             dt          | j        | j        fi ¦  «        j        | _         | j         S )Nr6   )rd   r9   r:   rQ   rc   ra   r7   rN   s    r   r7   zMetaAttribute.node€   sG   € ð Œ:ÐØœ×1Ò1Ø¥¨4¬9°d´iÐ*@À"ñô äð ŒJð ŒzÐr   c                 óX   — | j                              d| j        | j        f|z   |¦  «        S )NrI   )r9   r:   ra   rc   )r   r;   r<   s      r   Ú__call__zMetaAttribute.__call__Š   s0   € ØŒ{×'Ò'Ø˜4œ9 t¤y l°TÑ&9¸6ñ
ô 
ð 	
r   N)r\   r]   r^   Ústrre   r_   r7   rh   r   r   r   rY   rY   y   sY   € € € € € ð 3ð ð ð ð ð ðð ñ „Xðð
ð 
ð 
ð 
ð 
r   rY   c                   ó   — e Zd ZdS )rV   N)r\   r]   r^   r   r   r   rV   rV   �   s   € € € € € Ø€Dr   rV   c                 ó  — t          | t          ¦  «        rdS t          | t          j        j        ¦  «        rPt          | t
          ¦  «        sJ dt          | ¦  «        › �¦   «         ‚t          | d¦  «        s
J d¦   «         ‚| j        S | S )Nr   zExpected MetaProxy but got rE   z*MetaProxy does not have an associated meta)	r0   rV   r   r1   r2   rC   ÚtyperK   rE   )r3   s    r   Úproxys_to_metasrm   ”   s‰   € Ý�!Õ(Ñ)Ô)ð ØˆvÝ�!•U”X”^Ñ$Ô$ð Ý˜!�YÑ'Ô'ÐPÐPÐ)PÅtÈAÁwÄwÐ)PÐ)PÑPÔPÐ'Ý�q˜.Ñ)Ô)ÐWÐWÐ+WÑWÔWÐ)ØŒ~ÐØ€Hr   c                   óÐ   ‡ — e Zd ZU dZeed<   g d¢Z	 	 	 dˆ fd„	Zˆ fd„Zˆ fd„Z	de
j        j        d	efd
„Zde
j        j        d	efˆ fd„Zd„ Zddeee
j        f         fˆ fd„Zˆ xZS )Ú
MetaTracerTÚallow_insert_stateless_mods)ÚarangeÚzerosÚonesÚ	full_likeÚeyeNc           	      ó@  •— t          ¦   «                              |||||||¦  «        }|dk    r+|| j        v r"|                     | j        |         ¦  «         |S || j        v r	d|v rd|d<   	 t
          j        j                             |t          ¦  «        }	t
          j        j                             |t          ¦  «        }
|dk    r%t                               ||¦  «        } ||	i |
¤Ž}�n?|dk    r(t          |	d         |¦  «        } ||	dd …         i |
¤Ž}�n|dk    r„t          | d	¦  «        sJ ‚d
| _        	 | j                             |¦  «        }t#          |¦  «        }|t          v rt          |         |g|	¢R i |
¤Ž}n | j        |	i |
¤Ž}d| _        n“# d| _        w xY w|dk    rd
| _        	 | j        }|                     d¦  «        }|D ]}t          ||¦  «        }Œt)          |t
          j        ¦  «        sJ ‚|                     d¬¦  «        }d| _        n# d| _        w xY w|S t)          |t
          j        j        ¦  «        s
J d¦   «         ‚|                     |¦  «         n4# t0          $ r'}t3          j        d|› d|› d|› �¦  «         Y d }~nd }~ww xY w|S )NÚplaceholderr
   r   r6   rI   r   é   Úcall_moduleÚorig_forwardTFÚget_attrú.r$   z!Dont support composite output yetzCould not compute metadata for z target z: )Úsuperr:   Ú	meta_argsrG   Úorig_fnsr   r1   r7   r8   rm   r,   ÚgetrQ   rK   Ú_disable_module_getattrrc   Úget_submodulerl   rz   Úsplitr0   ÚTensorr%   r2   Ú	ExceptionÚwarningsÚwarn)r   Úkindr=   r;   r<   ÚnameÚ	type_exprÚproxy_factory_fnÚrvÚ
args_metasÚkwargs_metasÚmeta_targetÚmeta_outÚmodÚmod_typeÚattr_itrÚatomsÚatomÚeÚ	__class__s                      €r   r:   zMetaTracer.create_proxy£   s8  ø€ õ ‰WŒW×!Ò!Ø�&˜$ ¨¨iÐ9Iñ
ô 
ˆð �=Ò Ð  V¨t¬~Ð%=Ð%=Ø×"Ò" 4¤>°&Ô#9Ñ:Ô:Ð:ØˆIà�T”]Ð"Ð"ð ˜6Ð!Ð!Ø#)��xÑ ð*	YÝœœ×4Ò4°T½?ÑKÔKˆJÝ œ8œ=×6Ò6°v½ÑOÔOˆLà�Ò&Ð&Ý3×7Ò7¸ÀÑGÔG�Ø&˜;¨
ÐC°lÐCÐC�‘Ø˜Ò&Ð&Ý% j°¤m°VÑ<Ô<�Ø&˜;¨
°1°2°2¬ÐG¸,ÐGÐG�‘Ø˜Ò&Ð&Ý˜t ^Ñ4Ô4Ð4Ð4Ð4Ø/3�Ô,ð
9Øœ)×1Ò1°&Ñ9Ô9�CÝ# C™yœy�HØÕ#8Ð8Ð8Ý#8¸Ô#BØð$Ø",ð$ð $ð $Ø0<ð$ð $˜˜ð $5 4Ô#4°jÐ#QÀLÐ#QÐ#Q˜à38�DÔ0Ð0ø°5�DÔ0Ð8Ð8Ð8Ð8Ø˜Ò#Ð#Ø/3�Ô,ð9Ø#œy�HØ"ŸLšL¨Ñ-Ô-�EØ %ð ;ð ;˜Ý#*¨8°TÑ#:Ô#:˜˜Ý% hµ´Ñ=Ô=Ð=Ð=Ð=Ø'Ÿ{š{°&˜{Ñ9Ô9�Hà38�DÔ0Ð0ø°5�DÔ0Ð8Ð8Ð8Ð8à�	õ ˜b¥%¤(¤.Ñ1Ô1ÐVÐVÐ3VÑVÔVÐ1Ø×"Ò" 8Ñ,Ô,Ð,Ð,øÝð 	Yð 	Yð 	YÝŒMÐW¸DÐWÐWÈ&ÐWÐWÐTUÐWÐWÑXÔXÐXÐXÐXÐXÐXÐXøøøøð	Yøøøð ˆ	sQ   Á-CI* Ä:AF ÆI* Æ	F!Æ!I* Æ2A#H ÈI* È	H&È&I* È+>I* É*
JÉ4JÊJc                 óp   •— t          | dd¦  «        r|S t          ¦   «                               |||¦  «        S )Nr�   F)rQ   r}   )r   ra   Úattr_valÚparameter_proxy_cacher—   s       €r   rQ   zMetaTracer.getattrì   s9   ø€ Ý�4Ð2°EÑ:Ô:ð 	JØˆOå‘7”7—?’? 4¨Ð3HÑIÔIÐIr   c                 óZ   •— || _         t          ¦   «                              ||||¦  «        S r   )rz   r}   ry   )r   ÚmÚforwardr;   r<   r—   s        €r   ry   zMetaTracer.call_moduleò   s)   ø€ Ø#ˆÔÝ‰wŒw×"Ò" 1 g¨t°VÑ<Ô<Ð<r   r‘   Úreturnc                 óö   — d}|j         j                             ¦   «         }|› d|› �}t          | j        |¦  «        r!|› d|› �}|dz  }t          | j        |¦  «        °!| j                             ||¦  «         |S )zb
        Helper method which tries to insert a module that was not declared as submodule.
        r   Ú_rx   )r—   r\   ÚlowerrK   rc   Ú
add_module)r   r‘   ÚidxÚmod_nameÚpaths        r   Ú_insert_module_as_submodulez&MetaTracer._insert_module_as_submoduleö   s—   € ð ˆØ”=Ô)×/Ò/Ñ1Ô1ˆØÐ"Ð"˜SÐ"Ð"ˆÝ�d”i Ñ&Ô&ð 	ØÐ&Ð& Ð&Ð&ˆDØ�1‰HˆCõ �d”i Ñ&Ô&ð 	ð 	Œ	×Ò˜T 3Ñ'Ô'Ð'Øˆr   c                 ó|  •— 	 t          ¦   «                              |¦  «        S # t          $ r� | j        r„t	          t          |                     ¦   «         ¦  «        ¦  «        dk    rRt	          t          |                     ¦   «         ¦  «        ¦  «        dk    r |                      |¦  «        }|| _	        |cY S ‚ w xY w)Nr   )
r}   Úpath_of_moduleÚ	NameErrorrp   ÚlenÚlistÚ
parametersÚbuffersr¦   Úprev_module)r   r‘   r¥   r—   s      €r   r¨   zMetaTracer.path_of_module  sµ   ø€ ð	Ý‘7”7×)Ò)¨#Ñ.Ô.Ð.øÝð 		ð 		ð 		àÔ0ðå�˜SŸ^š^Ñ-Ô-Ñ.Ô.Ñ/Ô/°1Ò4Ð4Ý�˜SŸ[š[™]œ]Ñ+Ô+Ñ,Ô,°Ò1Ð1à×7Ò7¸Ñ<Ô<�Ø#'�Ô Ø���Øð		øøøs   ƒ $ ¤BB;Â9B;c                 ó"   — t          || ¦  «        S r   )rC   )r   r7   s     r   r4   zMetaTracer.proxy  s   € Ý˜˜tÑ$Ô$Ð$r   r~   c                 ó|  •— t          |t          ¦  «        sJ ‚|| _        d„ | j        D ¦   «         | _        t          ¦   «         | _        | j                             ¦   «         D ]8\  }\  }}t          t          ||¦  «         | j         
                    |¦  «         Œ9	 t          ¦   «                              ||¦  «        }d|i|_        || j                             ¦   «         D ]\  }\  }}t          t          ||¦  «         ŒS # | j                             ¦   «         D ]\  }\  }}t          t          ||¦  «         Œw xY w)Nc           	      óT   — i | ]%}|t          t          t          |¦  «        ¦  «        “Œ&S r   )rA   rQ   r   )Ú.0r=   s     r   ú
<dictcomp>z$MetaTracer.trace.<locals>.<dictcomp>  s=   € ð &
ð &
ð &
àð Õ+­GµE¸6Ñ,BÔ,BÑCÔCð&
ð &
ð &
r   r~   )r0   Údictr~   Ú_TORCH_METHODS_TO_PATCHÚpatched_torch_methodsÚsetr   ÚitemsÚsetattrr   Úaddr}   ÚtraceÚ_tracer_extras)
r   rc   r~   Úconcrete_argsr‰   r>   ÚorigÚgraphr    r—   s
            €r   r»   zMetaTracer.trace  sR  ø€ Ý˜)¥TÑ*Ô*Ð*Ð*Ð*Ø"ˆŒð&
ð &
àÔ6ð&
ñ &
ô &
ˆÔ"õ ™œˆŒà%)Ô%?×%EÒ%EÑ%GÔ%Gð 	$ð 	$Ñ!ˆD‘/�7˜DÝ•E˜4 Ñ)Ô)Ð)ØŒM×Ò˜dÑ#Ô#Ð#Ð#ð	+Ý‘G”G—M’M $¨Ñ6Ô6ˆEØ$/°Ð#;ˆEÔ Øà#'Ô#=×#CÒ#CÑ#EÔ#Eð +ð +‘�‘i�q˜$Ý�˜t TÑ*Ô*Ð*Ð*ð+ø 4Ô#=×#CÒ#CÑ#EÔ#Eð +ð +‘�‘i�q˜$Ý�˜t TÑ*Ô*Ð*Ð*ð+øøøs   Â,D Ä:D;)NNNr   )r\   r]   r^   rp   ÚboolÚ__annotations__rµ   r:   rQ   ry   r   ÚnnÚModuleri   r¦   r¨   r4   r   r„   r»   Ú__classcell__)r—   s   @r   ro   ro   ž   s@  ø€ € € € € € Ø(,Ð Ð,Ð,Ñ,àMÐMÐMÐð ØØðGð Gð Gð Gð Gð GðRJð Jð Jð Jð Jð=ð =ð =ð =ð =ð¨u¬x¬ð À3ð ð ð ð ð %¤(¤/ð °cð ð ð ð ð ð ð%ð %ð %ð+ð + T¨#¨u¬|Ð*;Ô%<ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +r   ro   rc   .r~   r½   rž   c                 ó   — t          ¦   «         }|                     | ||¦  «        }t          | t          j        j        ¦  «        r| j        j        n| j        }t          j         	                    |j
        ||¦  «        }|S r   )ro   r»   r0   r   rÂ   rÃ   r—   r\   r1   ÚGraphModulerc   )rc   r~   r½   r9   r¿   r‰   Úgms          r   Úsymbolic_tracerÈ   ,  sk   € õ
 ‰\Œ\€FØ�LŠL˜˜y¨-Ñ8Ô8€Eå#-¨dµE´H´OÑ#DÔ#DÐWˆŒÔÐÈ$Ì-ð 	õ 
Œ×	Ò	˜fœk¨5°$Ñ	7Ô	7€BØ€Ir   )F)NN)*rP   r?   r†   Útypingr   r   r   r   r   r   Útorch.fxr   r   r   r   r"   r(   r+   rÂ   Ú	EmbeddingÚ	LayerNormÚreluÚ
functionalÚReLUÚwhereÚabsr,   rÁ   rA   r1   r2   rC   rY   rV   rm   ÚTracerro   rÃ   ri   r„   rÆ   rÈ   r   r   r   ú<module>rÓ      s°  ðà €€€€Ø Ð Ð Ð Ø €€€Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7à €€€Ø €€€ðKð Kð Kðð ð ðð ð ðð ð ðð ð ð ð
Sð Sð Sð &*ð ð ð ð ð ð 
„HÔÐ*Ø	„HÔÐ-Ø	„JÐ#Ø	„HÔÔÐ6Ø	„H„MÐ)Ø	„KÐ%Ø	„IÐ!ð3Ð �t˜H hÐ.Ô/ð ð ñ ðð ð ð*+&ð +&ð +&ð +&ð +&�””ñ +&ô +&ð +&ð\
ð 
ð 
ð 
ð 
�Iñ 
ô 
ð 
ð.	ð 	ð 	ð 	ð 	˜-ñ 	ô 	ð 	ðð ð ðK+ð K+ð K+ð K+ð K+�””ñ K+ô K+ð K+ð` 48Ø.2ðð Ø
�”” ¨#¨s¨(Ô!3Ð3Ô
4ðà˜˜S %¤,Ð.Ô/Ô0ðð ˜D  c œNÔ+ðð „XÔð	ð ð ð ð ð r   