Ë
    P/æjÊ  ã                   óÌ  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
mZ d dlZd dlmZ d dlZd dlZd dlmZ d dlmZ d dlmZmZmZmZmZ d dlmZ ddlm Z m!Z! dd	l"m#Z# dd
l$m%Z%m&Z&m'Z' ddl(m)Z) ddl*m+Z+m,Z, ddl-m.Z. ddl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z? 	 d dl@ZAerd dlCmDZD  ejŠ                  eF«      ZGej�                  ej’                  ej”                  ej–                  ej˜                  ejš                  dœZNejž                  ej                   ej˜                  ejš                  dœZQi eN¥eQ¥ZReSj©                  eNj«                  «       «      ZVeSj©                  eQj«                  «       «      ZW G d„ de;«      ZX G d„ de;«      ZY G d„ deX«      ZZ G d„ deX«      Z[ G d„ deX«      Z\ G d „ d!e;«      Z] G d"„ d#e;«      Z^y# eB$ r dZAY �Œ*w xY w)$é    N)ÚDictÚListÚTYPE_CHECKING)Úcompiled_autograd)Úis_sparse_any)Úguard_scalarÚGuardOnDataDependentSymNodeÚhas_free_symbolsÚis_symbolicÚSymTypes)Úis_traceable_wrapper_subclassé   )ÚconfigÚ	variables)Útrace_wrapped)ÚunimplementedÚ	UserErrorÚUserErrorType)Úcall_hook_from_backward_state)ÚGuardBuilderÚinstall_guard)Ú
AttrSource)
ÚfqnÚget_custom_getattrÚget_fake_valueÚget_real_valueÚguard_if_dynÚobject_has_getattributeÚproductÚproxy_args_kwargsÚset_example_valueÚtensortype_to_dtypeé   )ÚVariableTracker)ÚConstantVariable)ÚSizeVariable©ÚInstructionTranslator)ú>ú<z>=z<=ú==ú!=)Úiszis notr+   r,   c                   óº  ‡ — e Zd ZdZdddddddd	d
dddddhej
                  £Zd„ Zdddddœdej                  j                  ddfˆ fd„Z
d„ Zd„ Zd„ Zedej                  fd„«       ZdZd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd „ Zd!„ Zd"„ Zd#„ Zd$„ Zd%„ Zd&„ ZdZd'„ZdZd(„Zd)„ Z d*„ Z!d[dZd+„Z"d,„ Z#	 	 	 	 	 	 d\d-„Z$d.„ Z%d/„ Z&d[d0„Z'd1„ Z(e(Z)d2„ Z*e*Z+d3„ Z,d4„ Z-d[d5„Z.d]d7„Z/d8„ Z0d9„ Z1d:„ Z2d6d;œd<„Z3d=„ Z4d>„ Z5d?„ Z6d@„ Z7e e8jr                  d«      dA„ «       «       Z:dB„ Z;ddCœdD„Z<dE„ Z=dF„ Z>dG„ Z?dH„ Z@dI„ ZAdJ„ ZBddKœdL„ZCddCœdM„ZDdN„ ZEdO„ ZFdP„ ZGdQ„ ZHdR„ ZIdSeJdTefdU„ZKd^dV„ZLdW„ ZMdX„ ZNdSeJfdY„ZOˆ xZPS )_ÚTensorVariablez=A torch.Tensor input or an intermediate value in the FX graphÚproxyÚdtypeÚdeviceÚlayoutÚndimÚsizeÚstrideÚrequires_gradÚis_quantizedÚis_contiguousÚ	is_sparseÚ
class_typeÚspecialized_valueÚ_is_name_setc                 ój   — t        | j                  j                  | j                  j                  «      S )zá
        Get the actual value represented by this variable if computation is run
        using the user-provided inputs.
        NOTE: this runs actual tensor computation and may be
        slow and memory-intensive.
        )r   r0   ÚnodeÚtracer©Úselfs    úa/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/_dynamo/variables/tensor.pyr   zTensorVariable.get_real_valueq   s#   € ô ˜dŸj™jŸo™o¨t¯z©z×/@Ñ/@ÓAÐAó    N)r5   r6   r9   r=   Úreturnc                ó2  •— t        ‰| �  di |¤Ž || _        || _        || _        || _        || _        || _        || _        || _	        || _
        || _        || _        |	| _        |
| _        |€#| j                  j                  j                   dk(  }|| _        y )NÚplaceholder© )ÚsuperÚ__init__r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   Úhas_grad_fnr?   Úopr=   )rB   r0   r1   r2   r3   r4   r7   r8   r:   r;   rK   r5   r6   r9   r=   ÚkwargsÚ	__class__s                   €rC   rJ   zTensorVariable.__init__z   sš   ø€ ô& 	‰ÑÑ"˜6Ò"ØˆŒ
ØˆŒ
ØˆŒØˆŒØˆŒ	ØˆŒ	ØˆŒØ*ˆÔØ(ˆÔØ*ˆÔØ"ˆŒØ$ˆŒØ&ˆÔØÐàŸ:™:Ÿ?™?×-Ñ-°Ñ>ˆLØ".ˆÕrD   c                 óZ   — t        | j                  j                  j                  d   «      S ©NÚexample_value)Úreprr0   r?   ÚmetarA   s    rC   Ú
debug_reprzTensorVariable.debug_repr    s    € ä�D—J‘J—O‘O×(Ñ(¨Ñ9Ó:Ð:rD   c                 ó   — | j                   S ©N©r0   rA   s    rC   Úas_proxyzTensorVariable.as_proxy¤   ó   € Ø�z‰zÐrD   c                 ó   — | j                   S rV   )r;   rA   s    rC   Úpython_typezTensorVariable.python_type§   s   € Ø�‰ÐrD   Úvaluec           
      ó¢  — | j                   | j                  | j                  t        | j                  «      | j
                  | j                  | j                  t        | «      dœ}	 | j                  d u|d<   t        | «      rMt        | «      sBt        | j                  «       D �cg c]  }t        |«      rt        |«      n|‘Œ c}«      |d<   |S t        | «      sÒt        | j                  «       D �cg c]  }t        |«      rt        |«      n|‘Œ c}«      |d<   t        | j!                  «       «      |d<   t"        j$                  j&                  j)                  | «      rd |d<   |S t        t"        j*                  j,                  D �cg c]  }| j/                  |¬«      r|‘Œ c}«      |d<   |S # t        $ r	 d|d<   Y �ŒHw xY wc c}w c c}w c c}w )N)r1   r2   r3   r4   r7   r8   r:   r;   rK   Fr5   r6   r9   ©Úmemory_format)r1   r2   r3   Úintr4   r7   r8   r:   ÚtypeÚgrad_fnÚ	Exceptionr   r
   Útupler5   r   r6   ÚtorchÚ_CÚ
_functorchÚis_batchedtensorÚ_prims_commonÚ_memory_formatsr9   )r\   ÚpropsÚsÚxs       rC   Ú
specializezTensorVariable.specializeª   s©  € ð —[‘[Ø—l‘lØ—l‘lÜ˜Ÿ
™
“OØ"×0Ñ0Ø!×.Ñ.ØŸ™Ü˜u›+ñ	
ˆð	)Ø#(§=¡=¸Ð#<ˆE�-Ñ ô ˜ÔÔ(8¸Ô(?Ü!Ø:?¿*¹*»,ÖG°Qœ; qœ>”�Q”¨qÑ0ÒGóˆE�&‰Mð8 ˆô3 " %Ô(ô "ð ;@¿*¹*»,ÖG°Qœ; qœ>”�Q”¨qÑ0ÒGóˆE�&‰Mô
 $ E§L¡L£NÓ3ˆE�(‰OÜ�x‰x×"Ñ"×3Ñ3°EÔ:ð *.��oÑ&ð ˆô */ô "'×!4Ñ!4×!DÑ!DöàØ ×.Ñ.¸QÐ.Ô?ò òó*��oÑ&ð ˆøôE ò 	)ð $)ˆE�-Ô ð	)üò Hùò Hùòs$   Á%F- Â#GÃ0GÆGÆ-F?Æ>F?c                 ó:  — | j                   j                  j                  d   }| j                  s»t	        |«      r°| j                   j                  j                  d   }|j                  «       \  }}t        | j                  «       |«      }t        ||«      }||v r-t        |t        j                  «      sJ ‚ddlm}  ||||¬«      S t        |«      sddlm}	 |	j                  ||«      S | j                  r| j                  j!                  «       st"        ‚|j$                  j&                  |j$                  j(                  dœ}
	 t+        | j                  j-                  «       |
«      }|€t"        ‚t1        |«      rt"        ‚t3        |«      rt"        ‚t        ||«      }t        |«      rt"        ‚ddlm} dd	lm} t;        | j                  |«      }t=        |j?                  |j@                  «      «         |||«      |«      S # t.        $ r}t"        |‚d }~ww xY w)
NrQ   r#   ©Úwrap_fx_proxy)Útxr0   rQ   ©ÚSourcelessBuilder©ÚLÚGr   )r   ©ÚVariableBuilder)!r0   r?   rS   Úsourcer   Ú__tensor_flatten__ÚgetattrrX   Ú
isinstancere   ÚTensorÚbuilderrq   Úcallablert   ÚcreateÚsubguards_allowedÚNotImplementedErrorÚoutputÚlocal_scopeÚglobal_scopeÚevalÚnamerc   r   r   Úguardsr   ry   r   r   Ú
make_guardÚHASATTR)rB   rr   rˆ   Úfake_valÚattrsÚctxr0   rQ   rq   rt   ÚscopeÚ_input_associated_real_valueÚexcÚ
real_valuer   ry   Úattr_sources                    rC   Údynamic_getattrzTensorVariable.dynamic_getattrÜ   sÃ  € Ø—:‘:—?‘?×'Ñ'¨Ñ8ˆð �{Š{Ô<¸XÔFØ—z‘z—‘×+Ñ+¨OÑ<ˆHØ!×4Ñ4Ó6‰JˆE�3Ü˜DŸM™M›O¨TÓ2ˆEÜ# H¨dÓ3ˆMØ�u‰}ä! -´·±Ô>Ð>Ð>Ý2á$¨°%À}ÔUÐUô ˜mÔ,Ý6à(×/Ñ/°°MÓBÐBà—’ §¡× =Ñ =Ô ?Ü%Ð%ð —i‘i×+Ñ+°"·)±)×2HÑ2HÑIˆð	/ô ,0°·±×0@Ñ0@Ó0BÀEÓ+JÐ(ð (Ð/Ü%Ð%ä"Ð#?Ô@Ü%Ð%äÐ:Ô;Ü%Ð%äÐ9¸4Ó@ˆ
Ü�JÔô &Ð%å)Ý,ä  §¡¨dÓ3ˆÜ�k×,Ñ,¨\×-AÑ-AÓBÔCØ/‰˜r ;Ó/°
Ó;Ð;øô1 ò 	/Ü%¨3Ð.ûð	/ús   Å$H È	HÈHÈHc                 ó€   — | j                   �t        j                  | j                   «      S | j                  |dg i «      S )NÚdim)r4   r%   r�   Úcall_method©rB   rr   s     rC   Úmethod_attr_ndimzTensorVariable.method_attr_ndim  s8   € Ø�9‰9Ð Ü#×*Ñ*¨4¯9©9Ó5Ð5à×#Ñ# B¨¨r°2Ó6Ð6rD   c                 óZ   — | j                   �t        j                  | j                   «      S y rV   )r1   r%   r�   r˜   s     rC   Úmethod_attr_dtypez TensorVariable.method_attr_dtype%  s&   € Ø�:‰:Ð!Ü#×*Ñ*¨4¯:©:Ó6Ð6ð "rD   c                 óZ   — | j                   �t        j                  | j                   «      S y rV   )r2   r%   r�   r˜   s     rC   Úmethod_attr_devicez!TensorVariable.method_attr_device)  ó&   € Ø�;‰;Ð"Ü#×*Ñ*¨4¯;©;Ó7Ð7ð #rD   c                 óZ   — | j                   �t        j                  | j                   «      S y rV   )r3   r%   r�   r˜   s     rC   Úmethod_attr_layoutz!TensorVariable.method_attr_layout-  rž   rD   c                 ót   — | j                   �,t        j                  | j                   j                  dk(  «      S y )NÚcuda)r2   r%   r�   ra   r˜   s     rC   Úmethod_attr_is_cudaz"TensorVariable.method_attr_is_cuda1  s1   € Ø�;‰;Ð"Ü#×*Ñ*¨4¯;©;×+;Ñ+;¸vÑ+EÓFÐFð #rD   c                 óÎ   — | j                   �A| j                   D �cg c]!  }t        j                  j                  |«      ‘Œ# }}t	        |«      S | j                  |dg i «      S c c}w ©Nr5   )r5   r   r%   r�   r&   r—   )rB   rr   rm   Úsizess       rC   Úmethod_attr_shapez TensorVariable.method_attr_shape5  s\   € Ø�9‰9Ð ØCGÇ9Á9ÖM¸a”Y×/Ñ/×6Ñ6°qÕ9ÐMˆEÐMÜ Ó&Ð&à×#Ñ# B¨°°BÓ7Ð7ùò Ns   ›&A"c                 óZ   — | j                   �t        j                  | j                   «      S y rV   )r7   r%   r�   r˜   s     rC   Úmethod_attr_requires_gradz(TensorVariable.method_attr_requires_grad<  s*   € Ø×ÑÐ)Ü#×*Ñ*¨4×+=Ñ+=Ó>Ð>ð *rD   c                 óZ   — | j                   �t        j                  | j                   «      S y rV   )r8   r%   r�   r˜   s     rC   Úmethod_attr_is_quantizedz'TensorVariable.method_attr_is_quantized@  s*   € Ø×ÑÐ(Ü#×*Ñ*¨4×+<Ñ+<Ó=Ð=ð )rD   c                 óZ   — | j                   �t        j                  | j                   «      S y rV   )r:   r%   r�   r˜   s     rC   Úmethod_attr_is_sparsez$TensorVariable.method_attr_is_sparseD  s&   € Ø�>‰>Ð%Ü#×*Ñ*¨4¯>©>Ó:Ð:ð &rD   c                 ó”   — t        j                  t        j                  j                  j
                  «      j                  || gi «      S rV   )r   ÚTorchInGraphFunctionVariablere   rf   Ú	_autogradÚ_get_data_attrÚcall_functionr˜   s     rC   Úmethod_attr_datazTensorVariable.method_attr_dataH  s8   € Ü×5Ñ5Ü�H‰H×Ñ×-Ñ-ó
ç
‰-˜˜T˜F BÓ
'ð	(rD   c                 ó\   — | j                   rt        d«       y t        j                  d «      S )NzTensorVariable has a grad_fn)rK   r   r   r%   r˜   s     rC   Úmethod_attr_grad_fnz"TensorVariable.method_attr_grad_fnM  s%   € Ø×ÒÜÐ8Õ9ä×-Ñ-¨dÓ3Ð3rD   c                 ó\   — ddl m} t        j                  |«      j	                  || gi «      S )Nr   )Ú_tensor_version)Útensor_version_opr·   r   r¯   r²   )rB   rr   r·   s      rC   Úmethod_attr__versionz#TensorVariable.method_attr__versionS  s,   € Ý7ä×5Ñ5°oÓF×TÑTØ��˜ó
ð 	
rD   c                 óN  — ddl m} ddlm} 	  |t        «      j                  || t        |«      gi «      }t        ||«       }| j                  r<t        t        | j                  |«      j                  t        j                  «      «       t        |«      S # t        $ r d}Y Œ`w xY w)Nr#   ©ÚGetAttrVariable)ÚBuiltinVariableF)Ú r¼   Úbuiltinr½   r|   r²   r%   r}   ÚAttributeErrorrz   r   r   rŠ   r   r‹   )rB   rr   rˆ   r¼   r½   ÚvarÚret_vals          rC   Úcall_hasattrzTensorVariable.call_hasattrZ  s˜   € Ý%Ý,ð	Ù!¤'Ó*×8Ñ8Ø�TÔ+¨DÓ1Ð2°BóˆCô
 % S¨/Ó:Ð:ˆGð �;Š;ÜÜ˜4Ÿ;™;¨Ó-×8Ñ8¼×9MÑ9MÓNôô   Ó(Ð(øô ò 	ØŠGð	ús   Ž5B ÂB$Â#B$c                 ó.  ‡ ‡‡— ddl m} ‰ j                  ‰«      r!‰‰ j                  «       v rt	        d‰› d�«       ‰dk(  r |‰ j                  «       «      S t        ‰ d‰› �d «      }|� |‰«      nd }|�}‰ j                  rq‰ j                  j                  «       rW‰dvr|j                  «       sCt        ‰ j                  t        j                  «      «       t        ‰ j                  ‰«      |_        ‰ j                  �æt        t         j"                  j$                  ‰«      rÂt        t         j"                  j$                  ‰«      }t        |d«      r’t        ||j'                  «       d	   «      rut         j(                  j*                  t        ||j'                  «       d	   «      j,                  v r4t.        j0                  j3                  t        ‰ j                  ‰«      ¬
«      S |€‰dk7  rˆˆ ˆfd„} |«       }|€‰ j5                  ‰‰«      }|€t6        ‚|S )Nr#   )ÚUserDefinedClassVariablezIllegal getattr invocation ú in strict moderN   Úmethod_attr_)Úgradr7   Ú	overloadsr   )rz   rÈ   c                  óh  •— ddl m}  ddlm} 	 t	        j
                  t        j                  ‰«      }t        |«      t        j                  k7  ry |j                  ‰j                  «       ‰«      }‰j                  � | ‰|t        ‰j                  ‰«      ¬«      S  | ‰|¬«      S # t        $ r Y y w xY w)Nr#   rp   r»   )rr   r0   rz   ©rr   r0   )r   rq   Úmiscr¼   ÚinspectÚgetattr_staticre   r~   rÀ   ra   ÚtypesÚGetSetDescriptorTypeÚcreate_getattr_proxyrX   rz   r   )rq   r¼   Ústatic_attrr0   rˆ   rB   rr   s       €€€rC   Útry_generic_attr_handlingz=TensorVariable.var_getattr.<locals>.try_generic_attr_handlingœ  s    ø€ Ý2Ý1ð Ü")×"8Ñ"8¼¿¹ÀtÓ"L�Kô ˜Ó$¬×(BÑ(BÒBØà'×<Ñ<¸T¿]¹]»_ÈdÓS�Ø—;‘;Ð*Ù(Ø U´:¸d¿k¹kÈ4Ó3Pôð ñ )¨B°eÔ<Ð<øô% &ò  Ùð ús   �$B% Â%	B1Â0B1)r¾   rÅ   Úis_strict_modeÚ_strict_mode_banned_opsr   r[   r|   rz   r‚   Úis_python_constantr   rŠ   r   Ú
TYPE_MATCHr   Úhasattrre   ÚopsÚatenrÉ   ÚTagÚinplace_viewÚtagsr   rÌ   ÚDelayGraphBreakVariabler”   rƒ   )rB   rr   rˆ   rÅ   ÚhandlerÚresultÚfnrÓ   s   ```     rC   Úvar_getattrzTensorVariable.var_getattro  s¾  ú€ Ý.à×Ñ˜rÔ" t¨t×/KÑ/KÓ/MÑ'MÜÐ7¸°v¸_ÐMÔNà�;ÒÙ+¨D×,<Ñ,<Ó,>Ó?Ð?ä˜$ ,¨t¨fÐ 5°tÓ<ˆØ 'Ð 3‘˜”¸ˆð ÐØ—’Ø—‘×-Ñ-Ô/àÐ5Ñ5¸&×:SÑ:SÔ:Uô ˜$Ÿ/™/¬,×*AÑ*AÓBÔCÜ& t§{¡{°DÓ9ˆFŒMð �;‰;Ð"¤w¬u¯y©y¯~©~¸tÔ'DÜœŸ™Ÿ™¨Ó.ˆBä˜˜KÔ(Ü˜B §¡£¨qÑ 1Ô2Ü—I‘I×*Ñ*¬g°b¸"¿,¹,».ÈÑ:KÓ.L×.QÑ.QÑQô !—~‘~×=Ñ=Ü% d§k¡k°4Ó8ð >ó ð ð ˆ>˜d fšnö=ñ4 /Ó0ˆFàˆ>Ø×)Ñ)¨"¨dÓ3ˆFàˆ>Ü%Ð%ØˆrD   c                 óÚ  — | j                   st        d«       |j                  j                  |j                  j                  dœ}	 t        | j                   j                  «       |«      }€t        d«       t        | j                   j                  t        j                  «      «       t        |«      }t        j                  |«      S # t        $ r}t        d|› �«       Y d }~Œ{d }~ww xY w)Nz3call_id not supported for sourceless TensorVariableru   z%error getting associated real value: z%call_id without associated real value)rz   r   r„   r…   r†   r‡   rˆ   rc   r   rŠ   r   ÚID_MATCHÚidr%   r�   )rB   rr   r�   r�   r‘   Úid_values         rC   Úcall_idzTensorVariable.call_id¿  sÃ   € Ø�{Š{ÜÐOÔPð —i‘i×+Ñ+°"·)±)×2HÑ2HÑIˆð	IÜ+/°·±×0@Ñ0@Ó0BÀEÓ+JÐ(ð (Ð/ÜÐAÔBä�d—k‘k×,Ñ,¬\×-BÑ-BÓCÔDÜÐ2Ó3ˆÜ×&Ñ& xÓ0Ð0øô ò 	IÜÐAÀ#ÀÐG×HÑHûð	Iús   Á$C	 Ã		C*ÃC%Ã%C*c                 ó    — | j                   dkD  S )Nr   )r4   r˜   s     rC   Úhas_unpack_var_sequencez&TensorVariable.has_unpack_var_sequenceÑ  s   € Ø�y‰y˜1‰}ÐrD   c           	      óÞ  — ddl m} | j                  rt        | j                  «      }n;| j	                  |dg i «      }t        |t        «      sJ ‚t        |j                  «      }|dk7  sJ d«       ‚| j                  r| j                  d   }nx| j	                  |dt        j                  d«      gi «      }t        |t        t        f«      sJ ‚t        |t        «      r|j                  |j                  «      }n|j                  }|€t        |«      }n%t        |«      |k(  sJ d|› dt        |«      › d�«       ‚|D �cg c]'  } |t        | «      || j!                  «       |   ¬	«      ‘Œ) c}S c c}w )
Nr#   ©Úwrap_fx_proxy_clsr5   r   zCan't unpack scalar tensors.zCan't unpack a tensor of z rows into a tuple of z
 elements.©Ú
target_clsrr   r0   )r   rì   r5   Úlenr—   r}   r&   Úitemsr%   r�   ÚSymNodeVariableÚevaluate_exprr„   r\   Úrangera   rX   )	rB   rr   Úidxesrì   Úsize_lenÚsize_varÚlengthÚ
dyn_lengthÚis	            rC   Úunpack_var_sequencez"TensorVariable.unpack_var_sequenceÔ  sX  € Ý.à�9Š9Ü˜4Ÿ9™9“~‰Hà×'Ñ'¨¨F°B¸Ó;ˆHÜ˜h¬Ô5Ð5Ð5Ü˜8Ÿ>™>Ó*ˆHà˜1Š}Ð<Ð<Ó<ˆ}à�9Š9Ø—Y‘Y˜q‘\‰Fà×)Ñ)¨"¨fÔ7G×7NÑ7NÈqÓ7QÐ6RÐTVÓWˆJô ˜j¬?Ô<LÐ*MÔNÐNÐNÜ˜*¤oÔ6Ø#×1Ñ1°"·)±)Ó<‘à#×)Ñ)�àˆ=Ü˜&“M‰Eô �E“
˜fÒ$ð`à*¨6¨(Ð2HÌÈUËÈÐT^Ð_ó`Ø$ð ö
àñ ¬¨d«¸À$Ç-Á-Ã/ÐRSÑBTÖUò
ð 	
ùò 
s   Ä;,E*c                 óJ   — t         j                  j                  j                  S rV   )re   Ú_dynamor   Ú)_autograd_backward_strict_mode_banned_opsrA   s    rC   rÕ   z&TensorVariable._strict_mode_banned_ops÷  s   € Ü�}‰}×#Ñ#×MÑMÐMrD   c           
      ó€  — | j                  |«      r!|| j                  «       v rt        d|› d�«       	 	 t        | d|› �«      }	  ||i |¤Ž}|r|S 	 ddlm}  || |j                  j                  d|gt        | g|¢|«      ¢­Ž «      S # t        $ r}t        d|› d|› �«       Y d }~ŒWd }~ww xY w# t
        $ r Y Œjw xY w)	NzIllegal method invocation rÆ   Úmethod_zunhandled args for z: r#   rp   r—   )rÔ   rÕ   r   r|   Ú	TypeErrorrÀ   r   rq   r„   Úcreate_proxyr    )	rB   rr   rˆ   ÚargsrM   Úhandler_methodrà   Úerq   s	            rC   r—   zTensorVariable.call_methodú  sú   € ð ×Ñ˜rÔ" t¨t×/KÑ/KÓ/MÑ'MÜÐ6°t°f¸OÐLÔMð	ð

	AÜ$ T¨W°T°FÐ+;Ó<ˆNðAÙ'¨Ð8°Ñ8�ÙØ!�Mð õ
 	+áØØ"ˆB�I‰I×"Ñ"ØØðô # D =¨4 =°&Ó9òó
ð 	
øô ò AÜÐ 3°D°6¸¸A¸3Ð?×@Ñ@ûðAûô ò 	Ùð	ús)   µB1 ÁB
 Â
	B.ÂB)Â)B.Â1	B=Â<B=c                 ó.   —  | j                   dg|¢­i |¤ŽS r¥   ©Ú_method_size_stride©rB   r  rM   s      rC   Úmethod_sizezTensorVariable.method_size   s   € Ø'ˆt×'Ñ'¨Ð@°Ò@¸Ñ@Ð@rD   c                 ó.   —  | j                   dg|¢­i |¤ŽS )Nr6   r  r  s      rC   Úmethod_stridezTensorVariable.method_stride#  s   € Ø'ˆt×'Ñ'¨ÐB°4ÒB¸6ÑBÐBrD   c                 óö  — t        |«      }d„ }|dk(  r|nt        j                  }t        | |«      x}�"|€ ||«      S t        j                  ||   «      S | j                  j
                  j                  j                  d«      x}�s|€5 t        ||«      «       }t        |«      s |t        d„ |D «       «      «      S y  t        ||«      |«      }t        |«      st        j                  t        |«      «      S y y )Nc           
      óh   — t        | D �cg c]  }t        j                  |fi |¤Ž‘Œ c}fi |¤ŽS c c}w rV   )r&   r%   r�   )rm   ÚoptionsÚys      rC   Úmake_const_size_variablezDTensorVariable._method_size_stride.<locals>.make_const_size_variable)  s9   € ÜØ@AÖB¸1Ô!×(Ñ(¨Ñ6¨gÓ6ÒBñØFMñð ùÚBs   Š/r5   rQ   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrV   ©r`   ©Ú.0Úrs     rC   ú	<genexpr>z5TensorVariable._method_size_stride.<locals>.<genexpr>B  s   è ø€ Ò,D¸¬S°¯VÑ,Dùó   ‚)r   r%   r�   r|   r0   r?   rS   Úgetr
   rd   r`   )rB   rˆ   r–   r  ÚRetVariabler  ÚfakeÚfake_rs           rC   r  z"TensorVariable._method_size_stride&  s  € Ü˜3Óˆò	ð )-°ªÑ$Ô<L×<SÑ<Sð 	ô ˜˜tÓ$Ð$ˆAÐ1Øˆ{Ù" 1“~Ð%ä'×.Ñ.¨q°©vÓ6Ð6ð —J‘J—O‘O×(Ñ(×,Ñ,¨_Ó=Ð=ˆDÐJØˆ{Ø,œ  tÓ,Ó.�Ü'¨Ô/ñ '¤uÑ,D¸VÔ,DÓ'DÓEÐEð 0ð
 -œ  tÓ,¨SÓ1�Ü'¨Ô/Ü+×2Ñ2´3°v³;Ó?Ð?ð 0ð KrD   c                 óB  — | j                   �(t        j                  t        | j                   «      «      S | j                  j
                  j                  j                  d«      x}�:|j                  «       }t        |«      st        j                  t        |«      «      S y y rP   )r5   r%   r�   r   r0   r?   rS   r  Únumelr
   r`   )rB   r  r  s      rC   Úmethod_numelzTensorVariable.method_numelH  s   € Ø�9‰9Ð Ü#×*Ñ*¬7°4·9±9Ó+=Ó>Ð>ð —J‘J—O‘O×(Ñ(×,Ñ,¨_Ó=Ð=ˆDÐJØ—Z‘Z“\ˆFÜ# FÔ+Ü'×.Ñ.¬s°6«{Ó;Ð;ð ,ð KrD   c                 óZ   — | j                   �t        j                  | j                   «      S y rV   )r4   r%   r�   rA   s    rC   Ú
method_dimzTensorVariable.method_dimT  s&   € Ø�9‰9Ð Ü#×*Ñ*¨4¯9©9Ó5Ð5ð !rD   c                 ón   — | j                   �)t        j                  | j                   j                  «      S y rV   )r1   r%   r�   Úis_floating_pointrA   s    rC   Úmethod_is_floating_pointz'TensorVariable.method_is_floating_pointZ  s,   € Ø�:‰:Ð!Ü#×*Ñ*¨4¯:©:×+GÑ+GÓHÐHð "rD   c                 ón   — | j                   �)t        j                  | j                   j                  «      S y rV   )r1   r%   r�   Ú
is_complexrA   s    rC   Úmethod_is_complexz TensorVariable.method_is_complex^  s,   € Ø�:‰:Ð!Ü#×*Ñ*¨4¯:©:×+@Ñ+@ÓAÐAð "rD   c                 óN  — |�|j                  «       nt        j                  }| j                  �!t	        j
                  || j                  v «      S | j                  j                  j                  j                  d«      x}�%t	        j
                  |j                  |¬«      «      S y )NrQ   r^   )
Úas_python_constantre   Úcontiguous_formatr9   r%   r�   r0   r?   rS   r  )rB   r_   r  s      rC   Úmethod_is_contiguousz#TensorVariable.method_is_contiguousb  sž   € ð Ð(ð ×,Ñ,Ô.ä×(Ñ(ð 	ð
 ×ÑÐ)Ü#×*Ñ*¨=¸D×<NÑ<NÐ+NÓOÐOØ—j‘j—o‘o×*Ñ*×.Ñ.¨Ó?Ð?ˆdÐLÜ#×*Ñ*Ø×"Ñ"°Ð"Ó?óð ð MrD   Fc           
      óÈ  ‡ — |€³‰ j                   �§t        ‰ j                  t        j                  «      rƒt	        ˆ fd„t        j                  «       D «       «      }‰ j                  j                  dk(  r"t        j                  d|j                  › �«      S t        j                  d|j                  › �«      S |�ªt        t        |j                  «       «      «      dk(  r„|j                  «       }t        j                  t        |«      «      }ddlm} dd	lm}  |j"                  «       }	|rd
|i|¥} ||	 |	j$                  j&                  ddgt)        ‰ |g|«      ¢­Ž «      S y y )Nc              3   óF   •K  — | ]  \  }}‰j                   |v sŒ|–— Œ y ­wrV   )r1   )r  ÚkÚvrB   s      €rC   r  z-TensorVariable.method_type.<locals>.<genexpr>u  s$   øè ø€ ò Ù�a˜¸T¿Z¹ZÈ1º_”ñùs   ƒ!š!r¢   ztorch.cuda.ztorch.ztorch.tensortyper   r'   r#   rp   Únon_blockingr—   ra   )r1   r}   r2   re   Únextr"   rð   ra   r%   r�   Ú__name__r   r(  Úsymbolic_convertr(   r   rq   Ú
current_txr„   r  r    )
rB   r1   r/  rM   Ú
tensortypeÚtensor_typeÚtensor_type_constr(   rq   rr   s
   `         rC   Úmethod_typezTensorVariable.method_typeo  sS  ø€ àˆMØ—
‘
Ð&Ü˜4Ÿ;™;¬¯©Ô5äó Ü1×7Ñ7Ó9ôó ˆJð �{‰{×Ñ 6Ò)Ü'×.Ñ.°¸Z×=PÑ=PÐ<QÐ/RÓSÐSä'×.Ñ.°¸
×8KÑ8KÐ7LÐ/MÓNÐNàÐÜ”D˜×1Ñ1Ó3Ó4Ó5Ð9KÒKð
  ×2Ñ2Ó4ˆKÜ 0× 7Ñ 7¼¸KÓ8HÓ IÐå@Ý.à1Ð&×1Ñ1Ó3ˆBáØ(¨,ÐA¸&ÐA�á ØØ&�—	‘	×&Ñ&Ø!Øðô '¨Ð.?Ð'@À&ÓIòóð ð! Lð rD   c           
      óN  — t        |t        «      r•|j                  rˆddlm} ddlm} ddlm}  |j                  «       }|j                  «       }  ||t        t        |j                  d«      d«      «      |j                  j                  «      }|j                  || ||«      S y y )Nr   r'   r#   rx   ©ÚTensorWithTFOverrideVariableÚ__torch_function__Ú__func__)r}   ÚTensorSubclassVariablerz   r2  r(   r   ry   Útorch_functionr:  r3  r(  r   r;  r<  Úfrom_tensor_var)rB   Úclsr(   ry   r:  rr   Úpy_clsÚtorch_fns           rC   Úmethod_as_subclassz!TensorVariable.method_as_subclass—  s¡   € Ü�cÔ1Ô2°s·z²zÝ@Ý0ÝDà1Ð&×1Ñ1Ó3ˆBð ×+Ñ+Ó-ˆFð‘ØÜœ: c§j¡jÐ2FÓGÈÓTóð ×'Ñ'×0Ñ0ó2ˆHð
 0×?Ñ?Ø�D˜& (óð ð# 8BÐ2rD   c                 óØ   — t        | j                  t        j                  «      rF| j                  j                  dk7  r| j                  j                  nd}t        j                  |«      S y )NÚcpuéÿÿÿÿ)r}   r2   re   ra   Úindexr%   r�   )rB   rG  s     rC   Úmethod_get_devicez TensorVariable.method_get_device­  sL   € Ü�d—k‘k¤5§<¡<Ô0Ø)-¯©×)9Ñ)9¸UÒ)B�D—K‘K×%Ò%ÈˆEÜ#×*Ñ*¨5Ó1Ð1ð 1rD   c                 óT   — t        j                  | j                  j                  «      S rV   )r%   r�   r1   ÚitemsizerA   s    rC   Úmethod_element_sizez"TensorVariable.method_element_size²  s   € Ü×&Ñ& t§z¡z×':Ñ':Ó;Ð;rD   )Úforcec                ó  — t         j                  st        d«       t        st        d«       | j                  t
        j                  k7  rt        d| j                  › d�«      ‚ddlm	}  |j                  «       }|rR|j                  «       rB| j                  |dg i «      }|j                  j                  dd	|j                  «       fi «      }n* |j                  j                  dd
gt!        | | gi «      ¢­Ž }t"        j%                  ||«      S )Nz+Tensor.numpy(). config.trace_numpy is Falsez&Tensor.numpy(). NumPy is not availablezcan't convert z1 layout tensor to numpy. Use Tensor.dense() firstr   r'   Údetachr—   rE  Úview_as)r   Útrace_numpyr   Únpr3   re   Ústridedr   r2  r(   r3  r(  r—   r„   r  rX   r    ÚNumpyNdarrayVariabler�   )rB   rL  r(   rr   Útr0   s         rC   Úmethod_numpyzTensorVariable.method_numpyµ  sò   € Ü×!Ò!ÜÐGÔHÝÜÐBÔCØ�;‰;œ%Ÿ-™-Ò'ÜØ  §¡ Ð-^Ð_óð õ 	=à-Ð"×-Ñ-Ó/ˆñ �U×-Ñ-Ô/à× Ñ   X¨r°2Ó6ˆAØ—I‘I×*Ñ*¨=¸%À!Ç*Á*Ã,ÀÐRTÓU‰Eð +�B—I‘I×*Ñ*Ø˜yðÜ+<¸dÀD¸\È2Ó+NòˆEô $×*Ñ*¨2¨uÓ5Ð5rD   c                 óì   ‡‡— ddl m} ddlm}  |j                  «       Šˆˆfd„Š| j                  «       j                  j                  d   } ‰|| j                  «       «      }|j                  ‰|«      S )Nr   r'   r#   rs   c           	      óÐ  •— ˆfd„}| j                   t        j                  t        j                  t        j                  t        j
                  fvrt        d«       | j                  «       dk(  r	 || |«      S | j                  «       dk(  r(t        | «      D ��cg c]  \  }} ||||   «      ‘Œ c}}S t        | «      D ��cg c]  \  }} ‰|||   ¬«      ‘Œ c}}S c c}}w c c}}w )Nc                 óâ   •— t         j                  j                  j                  ‰j                  dd«      5  t
        j                  ‰|j                  «       «      cd d d «       S # 1 sw Y   y xY w)NÚallow_scalar_outputsT)ÚunittestÚmockÚpatchÚobjectÚ	fake_moderñ   r�   Úitem)rù   Ú	sub_proxyrr   s     €rC   Úwrapz:TensorVariable.method_tolist.<locals>.tolist.<locals>.wrapÖ  s[   ø€ ô —]‘]×(Ñ(×/Ñ/Ø—L‘LÐ"8¸$óñ ô +×1Ñ1ØØ!Ÿ™Ó(ó÷÷ ò ús   ·$A%Á%A.z1Input tensor for tolist must be an integer tensorr   r#   )r`  )	r1   re   Úint8Úint16Úint32Úint64r   r–   Ú	enumerate)Útensorr`  ra  rù   ÚvalÚ
sub_tensorÚtolistrr   s         €€rC   rj  z,TensorVariable.method_tolist.<locals>.tolistÕ  sÌ   ø€ ô	ð �|‰|Ü—
‘
Ü—‘Ü—‘Ü—‘ð	$ñ ô ÐQÔRà�z‰z‹|˜qÒ Ù˜F IÓ.Ð.à�z‰z‹|˜qÒ Ü>GÈÓ>O×P±F°A°s™˜S )¨A¡,Õ/ÓPÐPô &/¨vÓ%6÷á!�A�zñ �z¨Y°q©\Ö:óð ùó Qùós   ÂCÃC"rQ   )	r2  r(   r   rt   r3  rX   r?   rS   r�   )rB   r(   rt   rg  Úoutrj  rr   s        @@rC   Úmethod_tolistzTensorVariable.method_tolistÏ  sb   ù€ Ý<Ý.à-Ð"×-Ñ-Ó/ˆõ	ð> —‘“×%Ñ%×*Ñ*¨?Ñ;ˆÙ�V˜TŸ]™]›_Ó-ˆØ ×'Ñ'¨¨CÓ0Ð0rD   c                 ó   — t        d«       y )NzTensor.backward©r   r  s      rC   Úmethod_backwardzTensorVariable.method_backwardø  ó   € ÜÐ'Õ(rD   c                 ó   — t        d«       y )NzTensor.data_ptrrn  r  s      rC   Úmethod_data_ptrzTensorVariable.method_data_ptrû  rp  rD   c                 ó\   — t         j                  s| j                  «        t        d«       y y )NzTensor.item)r   Úcapture_scalar_outputsÚ_warn_capture_scalar_outputsr   r  s      rC   Úmethod_itemzTensorVariable.method_itemþ  s$   € Ü×,Ò,Ø×-Ñ-Ô/Ü˜-Õ(ð -rD   c                  óî   — t         j                  j                  j                  «       } dj	                  t        j                  | «      «      }t        j                  t        j                  d«      |«       y )Nr¾   a�                      Graph break from `Tensor.item()`, consider setting:
                        torch._dynamo.config.capture_scalar_outputs = True
                    or:
                        env TORCHDYNAMO_CAPTURE_SCALAR_OUTPUTS=1
                    to include these operations in the captured graph.

                    Graph break: from user code at:
                    %s
                )re   Ú_guardsÚTracingContextÚextract_stackÚjoinÚ	tracebackÚformat_listÚlogÚwarningÚtextwrapÚdedent)Ú
user_stackÚuser_stack_formatteds     rC   ru  z+TensorVariable._warn_capture_scalar_outputs  sX   € ô —]‘]×1Ñ1×?Ñ?ÓAˆ
Ø!Ÿw™w¤y×'<Ñ'<¸ZÓ'HÓIÐÜ�‰Ü�O‰Oð	óð !õ	
rD   c                 ó€   — ddl m}  |j                  «       }| j                  |dt	        j
                  d«      gi «      S )Nr   r'   r5   r   )r2  r(   r3  r—   r%   r�   )rB   r(   rr   s      rC   Úmethod___len__zTensorVariable.method___len__  s<   € Ý<à-Ð"×-Ñ-Ó/ˆØ×Ñ  FÔ-=×-DÑ-DÀQÓ-GÐ,HÈ"ÓMÐMrD   ©r\   c                ó°   — ddl m}  |j                  «       }|�=ddlm} ddlm} |j                  |j                  ||j                  «      | |||gi «      S y )Nr   r'   )Ú	polyfillsr#   rs   )
r2  r(   r3  r¾   rˆ  r   rt   Úinline_user_function_returnr�   Úaddcmul_inplace)rB   Útensor1Útensor2r\   r(   rr   rˆ  rt   s           rC   Úmethod_addcmul_zTensorVariable.method_addcmul_  s_   € Ý<à-Ð"×-Ñ-Ó/ˆØÐÝ$Ý2à×1Ñ1Ø!×(Ñ(¨¨Y×-FÑ-FÓGØ�w ¨Ð/Øóð ð	 rD   c                 ó^  ‡— ˆfd„Š ‰|«      r;t        |t        «      r+|j                  rt        j                  «       rt        d«       ddlm}  |j                  «       } |j                  j                  dt        j                  gt        | ||gi «      ¢­Ž  t        j                  d «      S )Nc                 óî   •— t        | t        «      r,| j                  t        j                  t        j
                  fv S t        | t        j                  «      rt        ˆfd„| j                  D «       «      S y)Nc              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wrV   rH   )r  r_  Úhas_bool_keys     €rC   r  zJTensorVariable.method___setitem__.<locals>.has_bool_key.<locals>.<genexpr>1  s   øè ø€ ÒB°$™<¨×-ÑBùs   ƒF)
r}   r/   r1   re   Úboolrb  r   ÚTupleVariableÚanyrð   )r.  r‘  s    €rC   r‘  z7TensorVariable.method___setitem__.<locals>.has_bool_key-  sQ   ø€ Ü˜!œ^Ô,Ø—w‘w¤5§:¡:¬u¯z©zÐ":Ð:Ð:Ü˜Aœy×6Ñ6Ô7ÜÓB¸!¿'¹'ÔBÓBÐBàrD   zWboolean masking setitem backwards, see https://github.com/pytorch/pytorch/issues/114123r   r'   r²   )r}   r/   r7   re   Úis_grad_enabledr   r2  r(   r3  r„   r  ÚoperatorÚsetitemr    r%   r�   )rB   Úkeyr\   r(   rr   r‘  s        @rC   Úmethod___setitem__z!TensorVariable.method___setitem__,  s�   ø€ ô	ñ ˜ÔÜ˜5¤.Ô1Ø×#Ò#Ü×%Ñ%Ô'äØiôõ 	=à-Ð"×-Ñ-Ó/ˆØˆ�	‰	×ÑØÜ×Ñð	
ô   c¨5Ð1°2Ó6ó	
ô
  ×&Ñ& tÓ,Ð,rD   c                 ó   — t        d«       y )NzTensor.resize_rn  r  s      rC   Úmethod_resize_zTensorVariable.method_resize_H  s   € ÜÐ&Õ'rD   c                 ó   — t        d«       y )NzTensor.resize_as_rn  r  s      rC   Úmethod_resize_as_z TensorVariable.method_resize_as_K  s   € ÜÐ)Õ*rD   c                 ó   — t        d«       y )NzTensor.sparse_resize_rn  r  s      rC   Úmethod_sparse_resize_z$TensorVariable.method_sparse_resize_N  s   € ÜÐ-Õ.rD   c                 ó   — t        d«       y )NzTensor.sparse_resize_and_clear_rn  r  s      rC   Úmethod_sparse_resize_and_clear_z.TensorVariable.method_sparse_resize_and_clear_Q  s   € ÜÐ7Õ8rD   c                 ó8   — t        |«      dkD  rt        d«       y y )Nr#   z(Tensor.set_.source_Tensor_storage_offset)rï   r   r  s      rC   Úmethod_set_zTensorVariable.method_set_T  s   € Üˆt‹9�qŠ=ô ÐDÕEð rD   )Úalphac                óÌ   — |�bddl m}  |j                  «       }t        j                  t
        j                  «      j                  |||gi «      }| j                  |d|gi «      S y ©Nr   r'   Úadd_)	r2  r(   r3  r   r¯   re   Úmulr²   r—   )rB   Úotherr¤  r(   rr   rà   s         rC   Úmethod_add_zTensorVariable.method_add_^  sf   € ØÐÝ@à1Ð&×1Ñ1Ó3ˆBÜ×;Ñ;¼E¿I¹IÓF×TÑTØ�U˜E�N BóˆFð ×#Ñ# B¨°°¸"Ó=Ð=ð rD   c                ó8  — ddl m}  |j                  «       }|��t        j                  t
        j                  «      j                  |||gi «      }t        j                  t
        j                  «      j                  |||gi «      }| j                  |d|gi «      S y r¦  )
r2  r(   r3  r   r¯   re   Údivr²   r¨  r—   )rB   r‹  rŒ  r\   r(   rr   rà   s          rC   Úmethod_addcdiv_zTensorVariable.method_addcdiv_h  s“   € Ý<à-Ð"×-Ñ-Ó/ˆØÐÜ×;Ñ;¼E¿I¹IÓF×TÑTØ�W˜gÐ&¨óˆFô ×;Ñ;¼E¿I¹IÓF×TÑTØ�V˜U�O RóˆFð ×#Ñ# B¨°°¸"Ó=Ð=ð rD   c                 ó.  — ddl m}  |j                  «       }t        j                  t
        j                  «      j                  || |gi «      }t        j                  t
        j                  «      j                  ||gi «      }|j                  |dg i «      S )Nr   r'   r_  )
r2  r(   r3  r   r¯   re   Úeqr²   r”  r—   )rB   Úargr(   rr   rà   s        rC   Úmethod___contains__z"TensorVariable.method___contains__u  s…   € Ý<à-Ð"×-Ñ-Ó/ˆô ×7Ñ7¼¿¹ÓA×OÑOØ��s�˜Ró
ˆô ×7Ñ7¼¿	¹	ÓB×PÑPØ��˜"ó
ˆð ×!Ñ! " f¨b°"Ó5Ð5rD   c           
      ór  ‡
‡— ddl m}  |j                  «       }|D �cg c]  }|j                  «       ‘Œ c}Š
|j	                  «       D ��ci c]  \  }}||j                  «       “Œ c}}Šˆ
ˆfd„}d|_        ddlm}	  |	| |j                  j                  d|gt        | gi «      ¢­Ž ¬«      S c c}w c c}}w )	Nr   r'   c                 ó(   •—  | j                   ‰i ‰¤ŽS rV   )Úredistribute©rm   Úargs_as_valueÚkwargs_as_values    €€rC   Úredistribute_fn_with_prim_typeszKTensorVariable.method_redistribute.<locals>.redistribute_fn_with_prim_types�  s   ø€ Ø!�1—>‘> =ÐD°OÑDÐDrD   Úprim_redistributer#   rp   r²   rË   ©r2  r(   r3  r(  rð   r1  r   rq   r„   r  r    )rB   r  rM   r(   rr   rm   r-  r.  r¸  rq   r¶  r·  s             @@rC   Úmethod_redistributez"TensorVariable.method_redistribute†  s´   ù€ Ý<à-Ð"×-Ñ-Ó/ˆð :>Ö>°A˜×-Ñ-Õ/Ò>ˆØAGÇÁÃ×P¹¸¸A˜1˜a×2Ñ2Ó4Ñ4ÓPˆõ	Eð 4GÐ'Ô0å*áØØ(�"—)‘)×(Ñ(ØØ/ðô # D 6¨2Ó.òô
ð 	
ùò ?ùÛPó   žB.ÁB3c           
      ór  ‡
‡— ddl m}  |j                  «       }|D �cg c]  }|j                  «       ‘Œ c}Š
|j	                  «       D ��ci c]  \  }}||j                  «       “Œ c}}Šˆ
ˆfd„}d|_        ddlm}	  |	| |j                  j                  d|gt        | gi «      ¢­Ž ¬«      S c c}w c c}}w )	Nr   r'   c                 ó(   •—  | j                   ‰i ‰¤ŽS rV   )Úto_localrµ  s    €€rC   Úto_local_fn_with_prim_typeszCTensorVariable.method_to_local.<locals>.to_local_fn_with_prim_types©  s   ø€ Ø�1—:‘:˜}Ð@°Ñ@Ð@rD   Úprim_to_localr#   rp   r²   rË   rº  )rB   r  rM   r(   rr   rm   r-  r.  rÀ  rq   r¶  r·  s             @@rC   Úmethod_to_localzTensorVariable.method_to_local   s³   ù€ Ý<à-Ð"×-Ñ-Ó/ˆð :>Ö>°A˜×-Ñ-Õ/Ò>ˆØAGÇÁÃ×P¹¸¸A˜1˜a×2Ñ2Ó4Ñ4ÓPˆõ	Að 0?Ð#Ô,å*áØØ(�"—)‘)×(Ñ(ØØ+ðô # D 6¨2Ó.òô
ð 	
ùò ?ùÛPr¼  c                 ó.   —  | j                   dg|¢­i |¤ŽS )NÚregister_hook©Ú_method_register_hookr  s      rC   Úmethod_register_hookz#TensorVariable.method_register_hookº  s   € Ø)ˆt×)Ñ)¨/ÐK¸DÒKÀFÑKÐKrD   c                 ó.   —  | j                   dg|¢­i |¤ŽS )NÚ"register_post_accumulate_grad_hookrÅ  r  s      rC   Ú)method_register_post_accumulate_grad_hookz8TensorVariable.method_register_post_accumulate_grad_hook½  s*   € Ø)ˆt×)Ñ)Ø0ð
Ø37ò
Ø;Añ
ð 	
rD   rˆ   Úhookc           	      óø  ‡‡	— ddl m}  |j                  «       }| j                  szt        j
                  st        d«       |j                  j                  |«      \  Š	}ˆ	ˆfd„}ddl	m
}  |||j                  j                  d|| j                  «       |fi «      «      S t        j                  t        j                  j!                  «       ¬«      }|j                  j"                  j%                  | ||‰«       |S )	Nr   r'   z<Compilation of intermediate hooks requires compiled autogradc                 ól   •— t        | ‰«      } |t        j                  t        t        |‰¬«      «       y )N)rá   Úbw_stateÚ	hook_name)r|   Ú	functoolsÚpartialr   r   )rg  rÎ  rÄ  rÏ  rˆ   s      €€rC   Ú_register_hook_trampolinezGTensorVariable._method_register_hook.<locals>._register_hook_trampolineà  s6   ø€ Ü '¨°Ó 5�ÙÜ×%Ñ%Ü%Ü8Ø!)Ø"+ô	ôð rD   r#   rp   r²   )Úmutable_local)r2  r(   r3  rz   r   Úcompiled_autograd_enabledr   r„   Úadd_backward_state_hookr   rq   r  rX   r   ÚRemovableHandleVariableÚbaseÚMutableLocalÚside_effectsrÄ  )
rB   rˆ   rË  r(   rr   Úbw_state_proxyrÒ  rq   Úhandle_variablerÏ  s
    `       @rC   rÆ  z$TensorVariable._method_register_hookÂ  sÜ   ù€ õ 	=à-Ð"×-Ñ-Ó/ˆà�{Š{Ü$×>Ò>ô  ØRôð )+¯	©	×(IÑ(IÈ$Ó(OÑ%ˆI�~õõ /á ØØ—	‘	×&Ñ&Ø#Ø-Ø—]‘]“_ nÐ5Øó	óð ô $×;Ñ;Ü#Ÿ.™.×5Ñ5Ó7ô
ˆð 	�	‰	×Ñ×,Ñ,¨T°4¸È$ÔOØÐrD   c                 ó®   — |dur|j                  «       }| j                  «       j                  j                  d   j                  |k7  rt        d«       y | S )NTrQ   zTensor.requires_grad_)r(  rX   r?   rS   r7   r   )rB   r7   s     rC   Úmethod_requires_grad_z$TensorVariable.method_requires_grad_  sK   € Ø Ñ$Ø)×<Ñ<Ó>ˆMà�=‰=‹?×Ñ×$Ñ$ _Ñ5×CÑCÀ}ÒTÜÐ1Õ2àˆKrD   c                 óÚ   — t        |«      dk(  rt        |d   t        «      s t        |«      dk\  r<t        d„ |D «       «      r)ddlm} | j                   |j                  «       d||«      S y y )Nr#   r   c              3   ón   K  — | ]-  }t        |t        «      xr |j                  «       t        k(  –— Œ/ y ­wrV   )r}   r%   r[   r`   )r  Úas     rC   r  z,TensorVariable.method_new.<locals>.<genexpr>  s0   è ø€ ò ØOP”
˜1Ô.Ó/ÒJ°A·M±M³OÄsÑ4JÓJñùs   ‚35r   r'   Ú	new_empty)rï   r}   r&   Úallr2  r(   r—   r3  )rB   r  rM   r(   s       rC   Ú
method_newzTensorVariable.method_new
  st   € ô �‹I˜ŠNœz¨$¨q©'´<Ô@Ü�‹I˜ŠNÜñ ØTXôô õ Aà×#Ñ#Ø0Ð%×0Ñ0Ó2°KÀÀvóð ðð rD   c                 ó€   — t        | | j                  «       j                  j                  d   j	                  «       «      S rP   )ÚUntypedStorageVariablerX   r?   rS   Úuntyped_storagerA   s    rC   Úmethod_untyped_storagez%TensorVariable.method_untyped_storage  s4   € Ü%Ø�$—-‘-“/×&Ñ&×+Ñ+¨OÑ<×LÑLÓNó
ð 	
rD   c                 óv   — | j                   s-| j                  j                  j                  |«       d| _         y y )NT)r=   r0   r?   Ú_rename)rB   rˆ   s     rC   Úset_name_hintzTensorVariable.set_name_hint  s.   € Ø× Ò Ø�J‰J�O‰O×#Ñ# DÔ)Ø $ˆDÕð !rD   ©rr   r(   rV   ©r  zList[VariableTracker]rM   zDict[str, VariableTracker]rE   r$   )NF©T)Qr1  Ú
__module__Ú__qualname__Ú__doc__r$   Ú_nonvar_fieldsr   re   ÚfxÚProxyrJ   rT   rX   r[   Ústaticmethodr~   rn   r”   r™   r›   r�   r    r£   r§   r©   r«   r­   r³   rµ   r¹   rÃ   râ   rç   ré   rú   rÕ   r—   r	  r  r  r  Úmethod_nelementr   Úmethod_ndimensionr#  r&  r*  r7  rC  rH  rK  rU  rl  ro  rr  rv  rÐ  Ú	lru_cacheru  r…  r�  r™  r›  r�  rŸ  r¡  r£  rª  r­  r±  r»  rÂ  rÇ  rÊ  ÚstrrÆ  rÝ  rã  rç  rê  Ú__classcell__©rN   s   @rC   r/   r/   \   s\  ø„ ÙGð 	ØØØØØØØØØØØØØðð 
×	'Ñ	'ð€Nò$Bð, ØØØò!$/à�x‰x�~‰~ð$/ð$ 
õ%$/òL;òòð ð/˜%Ÿ,™,ò /ó ð/óbA<òF7ò7ò8ò8òGò8ò?ò>ò;ò(ò
4ò
ó)ó*Nò`1ò$ô!
òFNð$
ð &ð	$
ð
 -ð$
ð 
ó$
òLAòCó @òD<ð #€Oò6ð #ÐòIòBóó&òPò,2ò
<ð %*ô 6ò4'1òR)ò)ò)ð
 Ø€Y×Ñ˜Óñ
ó ó ð
ò&Nð :>ô ò-ò8(ò+ò/ò9òFð +/ô >ð :>ô >ò6ò"
ò4
ò4Lò
ð
=¨#ð =°_ó =ó~òò
ð
% #÷ %rD   r/   c                   óŠ   ‡ — e Zd ZdZddhej
                  £Zd„ Zedd„«       Zdˆ fd„Z	d„ Z
d„ Zd	„ Zdd
„Z	 	 	 	 	 	 dd„Zˆ xZS )rñ   zý
    Represents a symbolic scalar, either int, float or bool.  This is most commonly used to
    handle symbolic size computation, e.g., tensor.size(0), but it is also used to
    handle logic like float_tensor.item() or unspecialized float inputs.
    r0   Úsym_numc                 ó,   — t        | j                  «      S rV   )rR   rü  rA   s    rC   rT   zSymNodeVariable.debug_repr1  s   € Ü�D—L‘LÓ!Ð!rD   c                 ó¦  — |€t        |j                  |«      }d|j                  j                  v r|j                  j                  d   |k(  sJ ‚t        |j                  |«       t	        |t
        j                  t        t        f«      r<t	        |t
        j                  «      rt        |«      n|}t        j                  |«      S t        ||fi |¤ŽS rP   )r   r?   rS   r!   r}   ÚsympyÚIntegerr`   r’  r%   r�   rñ   )r@  rr   r0   rü  r  s        rC   r�   zSymNodeVariable.create4  s    € àˆ?Ü$ U§Z¡Z°Ó4ˆGØ˜eŸj™jŸo™oÑ-Ø—:‘:—?‘? ?Ñ3°wÒ>Ð>Ð>Ü˜%Ÿ*™* gÔ.ä�g¤§¡¬s´DÐ9Ô:Ü&0°¼%¿-¹-Ô&H”c˜'”lÈgˆGÜ#×*Ñ*¨7Ó3Ð3ä˜u gÑ9°Ñ9Ð9rD   c                 óN   •— t        ‰| �  di |¤Ž || _        || _        d | _        y ©NrH   )rI   rJ   r0   rü  Ú_tensor_var)rB   r0   rü  rM   rN   s       €rC   rJ   zSymNodeVariable.__init__B  s)   ø€ Ü‰ÑÑ"˜6Ò"ØˆŒ
àˆŒØˆÕrD   c                 ó    — t        | j                  t        «      r | j                  j                  j                  S t        | j                  «      S rV   )r}   rü  r   r?   Úpytypera   rA   s    rC   r[   zSymNodeVariable.python_typeI  s5   € Ü�d—l‘l¤HÔ-Ø—<‘<×$Ñ$×+Ñ+Ð+ä˜Ÿ™Ó%Ð%rD   c                 ó   — | j                   S rV   rW   rA   s    rC   rX   zSymNodeVariable.as_proxyO  rY   rD   c                 ó¬   — | j                   €=ddlm} |j                  |t        j
                  «      j                  || gi «      | _         | j                   S )Nr#   rs   )r  r   rt   r�   re   Úscalar_tensorr²   )rB   rr   rt   s      rC   Ú	as_tensorzSymNodeVariable.as_tensorR  sP   € Ø×ÑÐ#Ý2à0×7Ñ7Ø”E×'Ñ'ó ç‰m˜B  ¨Ó+ð Ôð ×ÑÐrD   c                 ó    — 	 t        | j                  «      S # t        $ r-}t        t        j
                  dt        |«      › �d¬«      ‚d }~ww xY w)Nz5Consider annotating your code using torch._check*(). Úconstrain_as_size_example)Ú	case_name)r   rü  r	   r   r   ÚANTI_PATTERNrø  )rB   Úoutput_graphr  s      rC   rò   zSymNodeVariable.evaluate_expr[  sM   € ð	Ü §¡Ó-Ð-øÜ*ò 	ÜÜ×*Ñ*ØGÌÈAËÀxÐPØ5ôð ûð	ús   ‚ —	A (AÁAc           
      ór   — ddl m}  || |j                  j                  d|gt	        | g|¢|«      ¢­Ž «      S )Nr#   rp   r—   )r   rq   r„   r  r    )rB   rr   rˆ   r  rM   rq   s         rC   r—   zSymNodeVariable.call_methode  sH   € õ 	+áØØ"ˆB�I‰I×"Ñ"ØØðô # D =¨4 =°&Ó9òó
ð 	
rD   rV   ©rE   Nrì  )r1  rî  rï  rð  r$   rñ  rT   Úclassmethodr�   rJ   r[   rX   r	  rò   r—   rù  rú  s   @rC   rñ   rñ   $  s|   ø„ ñð 	Øðð 
×	'Ñ	'ð€Nò"ð ò:ó ð:õ ò&òò óð
ð &ð	
ð
 -ð
ð 
÷
rD   rñ   c                   ó`   ‡ — e Zd ZdZedd„«       Zdd„Zed„ «       Z	 	 	 	 	 	 dˆ fd„Zd„ Z	ˆ xZ
S )	rS  z}
    Represents a np.ndarray, but backed by torch Tensor via torch._numpy.ndarray.
    Use this for Tensor.numpy() call.
    c                 ó.   — ddl m}  |dt        | |dœ|¤ŽS )Nr#   rë   rí   rH   )r   rì   rS  )rr   r0   r  rì   s       rC   r�   zNumpyNdarrayVariable.create~  s*   € å.á ð 
Ü+ØØñ
ð ñ	
ð 	
rD   c                 óò  ‡ ‡‡‡	‡
— ddl mŠ	 ddlmŠ
 d }‰ j	                  «       j
                  j                  d   }t        j                  |«      }ˆˆ	ˆ ˆˆ
fd„}‰dv rE‰j                  j                  d‰	‰ j	                  «       ‰fi «      }t        j                  ‰|«      }nÍ‰d	v rt        j                  t        |‰«      «      S ‰d
v rCt        t        |‰«      x}«      s%t        j                  t!        d„ |D «       «      «      S  |«       S ‰dk(  r<t        |j"                  x}«      st        j                  t%        |«      «      S  |«       S ‰dv rt'        d‰› �«       n‰dv rt'        d«       |€t(        ‚|S )Nr   )Únumpy_attr_wrapperr#   rp   rQ   c            	      ón   •—  ‰‰‰j                   j                  d‰‰j                  «       ‰ fi «      «      S )Nr²   )r„   r  rX   )rˆ   r  rB   rr   rq   s   €€€€€rC   Úinsert_into_graphz;NumpyNdarrayVariable.var_getattr.<locals>.insert_into_graph–  s;   ø€ Ù ØØ—	‘	×&Ñ&Ø#Ð%7¸$¿-¹-»/È4Ð9PÐRTóóð rD   )ÚTÚrealÚimagr²   )r4   rJ  )Úshaper6   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrV   r  r  s     rC   r  z3NumpyNdarrayVariable.var_getattr.<locals>.<genexpr>¸  s   è ø€ Ò4GÀ´S¸·VÑ4Gùr  r5   )r×  Úflagsr1   zTODO: add support for ndarray.)Ú__version__z delegate np.__version__ to NumPy)Úutilsr  r   rq   rX   r?   rS   ÚtnpÚndarrayr„   r  rS  r�   r%   r|   r
   rd   r5   r`   r   rƒ   )rB   rr   rˆ   rà   rQ   Úexample_ndarrayr  r0   r  r  rq   s   ```      @@rC   râ   z NumpyNdarrayVariable.var_getattr‰  se  ü€ õ
 	/Ý*àˆàŸ™›×,Ñ,×1Ñ1°/ÑBˆÜŸ+™+ mÓ4ˆ÷	ð 	ð Ð(Ñ(Ø—I‘I×*Ñ*ØØ"Ø—‘“ $Ð'Øó	ˆEô *×0Ñ0°°UÓ;‰Fð Ð)Ñ)Ü#×*Ñ*¬7°?ÀDÓ+IÓJÐJØÐ(Ñ(Ü#¬°À$Ó)GÐ$G AÔHÜ'×.Ñ.¬uÑ4GÀQÔ4GÓ/GÓHÐHÙ$Ó&Ð&Ø�VŠ^Ü#¨×)=Ñ)=Ð$= AÔ>Ü'×.Ñ.¬s°1«vÓ6Ð6Ù$Ó&Ð&ØÐ/Ñ/ÜÐ:¸4¸&ÐAÕBØ�_Ñ$ÜÐ<Ô=Øˆ>Ü%Ð%ØˆrD   c                 ó�   — | dk(  r8dddœ}|j                  «       D ��ci c]  \  }}|j                  ||«      |“Œ }}}||fS c c}}w )NÚclipÚminÚmax)Úa_minÚa_max)rð   r  )rˆ   r  rM   Úkwargs_renamer-  r.  s         rC   Ú
patch_argszNumpyNdarrayVariable.patch_argsÆ  sR   € à�6Š>Ø&+°eÑ<ˆMØ=C¿\¹\»^×L±T°Q¸�m×'Ñ'¨¨1Ó-¨qÑ0ÐLˆFÑLØ�Vˆ|Ðùó Ms   žAc           	      ó.  •— ddl m} | j                  |||«      \  }}|dv rt        ‰| �  ||||«      S |dv rt        |› d�«        |j                  j                  d ||«      gt        | gt        |«      z   |«      ¢­Ž }t        j                  ||«      S )Nr   )Únumpy_method_wrapper)Ú__len__r5   rj  )ÚtostringÚtobytesz  is not modelled in torch._numpyr²   )r  r,  r*  rI   r—   r   r„   r  r    ÚlistrS  r�   )rB   rr   rˆ   r  rM   r,  r0   rN   s          €rC   r—   z NumpyNdarrayVariable.call_methodÍ  s¨   ø€ õ 	1à—‘ t¨T°6Ó:‰ˆˆfàÐ0Ñ0ä‘7Ñ& r¨4°°vÓ>Ð>ØÐ*Ñ*Ü˜T˜FÐ"BÐCÔDØ&�—	‘	×&Ñ&ØÙ  Ó&ð
ô  ˜v¬¨T«
Ñ2°FÓ;ò
ˆô
 $×*Ñ*¨2¨uÓ5Ð5rD   c                 ó"   — t         j                  S rV   )rQ  r!  rA   s    rC   r[   z NumpyNdarrayVariable.python_typeä  s   € Ü�z‰zÐrD   rë  rì  )r1  rî  rï  rð  rô  r�   râ   r*  r—   r[   rù  rú  s   @rC   rS  rS  x  s^   ø„ ñð
 ò
ó ð
ó;ðz ñó ðð6ð &ð	6ð
 -ð6ð 
õ6ö.rD   rS  c                   óŽ   ‡ — e Zd ZdZddhej
                  £Zdddœdej                  j                  ddfˆ fd	„Z	e
dd
„«       Zˆ xZS )ÚUnspecializedPythonVariablezO
    This is a 1-element tensor represents unspecialized python float/int.
    Ú	raw_valueÚneed_unwrapNT©r4  r5  r0   rE   c                óB   •— t        ‰| �  |fi |¤Ž || _        || _        y rV   )rI   rJ   r4  r5  )rB   r0   r4  r5  rM   rN   s        €rC   rJ   z$UnspecializedPythonVariable.__init__ó  s&   ø€ ô 	‰Ñ˜Ñ) &Ò)Ø"ˆŒØ&ˆÕrD   c                 óH   — t        di t        |j                  «      ¤||dœ¤ŽS )Nr6  rH   )r3  ÚdictÚ__dict__)r@  Útensor_variabler4  r5  s       rC   Úfrom_tensor_variablez0UnspecializedPythonVariable.from_tensor_variableú  s/   € ô +ñ 
Ü�?×+Ñ+Ó,ð
àØ#ó
ð 	
rD   rí  ©r1  rî  rï  rð  r/   rñ  re   rò  ró  rJ   r  r<  rù  rú  s   @rC   r3  r3  è  s_   ø„ ñð
 	Øðð 
×	&Ñ	&ð€Nð 37ÀDò'Ø—X‘X—^‘^ð'à	õ'ð ò
ó ô
rD   r3  c                   ó‚   ‡ — e Zd ZdZdhej
                  £Zdej                  j                  ddfˆ fd„Z	e
d„ «       Zˆ xZS )ÚFakeItemVariablez‰An unspecialized python variable which prevents access to the underlying raw value.
    This is needed if item is called on a FakeTensor.r5  r0   rE   Nc                 óX   •— |j                  dd«      }t        ‰| �  |fi |¤Ž || _        y )Nr5  F)ÚpoprI   rJ   r5  )rB   r0   rM   r5  rN   s       €rC   rJ   zFakeItemVariable.__init__  s-   ø€ Ø—j‘j °Ó6ˆÜ‰Ñ˜Ñ) &Ò)Ø&ˆÕrD   c                 ó>   — t        di t        |j                  «      ¤ŽS r  )r?  r9  r:  )r@  r;  s     rC   r<  z%FakeItemVariable.from_tensor_variable  s   € äÑA¤$ ×'?Ñ'?Ó"@ÑAÐArD   r=  rú  s   @rC   r?  r?    sS   ø„ ñ9ð 	ðà	×	&Ñ	&ð€Nð
'˜eŸh™hŸn™nð '¸4õ 'ð
 ñBó ôBrD   r?  c                   óR   ‡ — e Zd Zd	ˆ fd„Zdddee   deeef   defˆ fd„Zd„ Z	ˆ xZ
S )
r=  rE   c                 ó2   •— || _         t        ‰| �  |i |¤Ž y rV   )r\   rI   rJ   )rB   r\   r  rM   rN   s       €rC   rJ   zTensorSubclassVariable.__init__  s   ø€ ØˆŒ
Ü‰Ñ˜$Ð) &Ó)rD   rr   r(   r  rM   c                 ó0  •— t        |«      dk(  rwt        |d   t        «      rdddlm} ddlm}   ||t        | j                  d«      «      | j                  j                  «      }|j                  ||d   | j                  |«      S t        ‰| �5  |||«      S )Nr#   r   rx   r9  r;  )rï   r}   r/   r   ry   r>  r:  r   rz   r\   r;  r?  rI   r²   )rB   rr   r  rM   ry   r:  rB  rN   s          €rC   r²   z$TensorSubclassVariable.call_function  s�   ø€ ô ˆt‹9˜Š>œj¨¨a©´.ÔAÝ0ÝDð‘Ø”J˜tŸ{™{Ð,@ÓAóà�j‰j×+Ñ+ó-ˆHð 0×?Ñ?Ø�D˜‘G˜TŸZ™Z¨óð ô ‰wÑ$ R¨¨vÓ6Ð6rD   c                 ó   — | j                   S rV   r†  rA   s    rC   r(  z)TensorSubclassVariable.as_python_constant0  rY   rD   r  )r1  rî  rï  rJ   r   r$   r   rø  r²   r(  rù  rú  s   @rC   r=  r=    sG   ø„ õ*ð7à#ð7ð �?Ñ#ð7ð �S˜/Ð)Ñ*ð	7ð
 
õ7ö(rD   r=  c                   óŒ   ‡ — e Zd Zdhej                  £Zdedej                  ddfˆ fd„Zde	e   de
eef   defˆ fd„Zd	„ Zˆ xZS )
rå  rQ   Úfrom_tensorrE   Nc                 óB   •— t        ‰| �  di |¤Žf || _        || _        y r  )rI   rJ   rH  rQ   )rB   rH  rQ   rM   rN   s       €rC   rJ   zUntypedStorageVariable.__init__:  s(   ø€ ô 	‰ÑÑ"˜6Ñ"Ñ#Ø&ˆÔà*ˆÕrD   r  rM   c           	      ód  •— |dk(  r•|rJ ‚|rJ ‚| j                   j                  «       }t        |«      st        j                  t        |«      «      S ddlm} ddlm	}  |||j                  j                  d|| j                  j                  «       fi «      «      S |dk(  rt        |«      dk(  rq|rJ ‚|j                  j                  dt        j                   j"                  j$                  | j                  j                  «       |d   j                  «       fi «       | S t&        ‰| �Q  ||||«      S )	Nr5   r   )Úuntyped_storage_sizer#   rp   r²   Úresize_r   )rQ   r5   r
   r%   r�   r`   Úexternal_utilsrK  r   rq   r„   r  rH  rX   rï   re   rÙ   ÚinductorÚresize_storage_bytes_rI   r—   )	rB   rr   rˆ   r  rM   rà   rK  rq   rN   s	           €rC   r—   z"UntypedStorageVariable.call_methodE  s  ø€ ð �6Š>ÙˆO�8ÙÐ�:Ø×'Ñ'×,Ñ,Ó.ˆFÜ# FÔ+ä'×.Ñ.¬s°6«{Ó;Ð;åAÝ2á$ØØ—I‘I×*Ñ*Ø'Ø,Ø×)Ñ)×2Ñ2Ó4Ð6Øó	óð ð �9Ò¤ T£¨a¢ÙÐ�:Ø�I‰I×"Ñ"ØÜ—	‘	×"Ñ"×8Ñ8Ø×!Ñ!×*Ñ*Ó,¨d°1©g×.>Ñ.>Ó.@ÐAØô	ð ˆKä‰wÑ" 2 t¨T°6Ó:Ð:rD   c                 ól   —  || j                   «       |j                  d«       |j                  d«       y )Nræ  r   )rH  Úload_methodr—   )rB   Úcodegens     rC   Úreconstructz"UntypedStorageVariable.reconstructl  s-   € Ù�× Ñ Ô!Ø×ÑÐ-Ô.Ø×Ñ˜AÕrD   )r1  rî  rï  r$   rñ  r/   re   ÚUntypedStoragerJ   r   r   rø  r—   rS  rù  rú  s   @rC   rå  rå  4  sz   ø„ àðà	×	'Ñ	'ð€Nð
	+à#ð	+ð ×+Ñ+ð	+ð
 
õ	+ð%;ð �?Ñ#ð	%;ð
 �S˜/Ð)Ñ*ð%;ð 
õ%;öNrD   rå  )_rÐ  rÍ   Úloggingr–  r€  r|  rÏ   rZ  Útypingr   r   r   rÿ  Útorch._numpyÚ_numpyr   Útorch.fxre   Útorch.randomÚtorch._dynamor   Útorch._subclasses.meta_utilsr   Ú%torch.fx.experimental.symbolic_shapesr   r	   r
   r   r   Útorch.utils._python_dispatchr   r¾   r   r   Ú_trace_wrapped_higher_order_opr   r‘   r   r   r   rM  r   r‰   r   r   rz   r   r  r   r   r   r   r   r   r   r    r!   r"   r×  r$   Úconstantr%   Úlistsr&   ÚnumpyrQ  ÚModuleNotFoundErrorÚtorch._dynamo.symbolic_convertr(   Ú	getLoggerr1  r~  ÚgtÚltÚgeÚler¯  ÚneÚsupported_tensor_comparison_opsÚis_Úis_notÚsupported_const_comparison_opsÚsupported_comparison_opsr9  ÚfromkeysÚvaluesÚ%supported_tensor_comparison_op_valuesÚ$supported_const_comparison_op_valuesr/   rñ   rS  r3  r?  r=  rå  rH   rD   rC   ú<module>rt     s¼  ðó Û Û Û Û Û Û Û ß ,Ñ ,ã å Û Û Ý +Ý 6÷õ õ Gç  Ý :ß 9Ñ 9Ý :ß 0Ý ÷÷ ÷ õ "Ý &Ý ðÛñ
 ÝDð €g×Ñ˜Ó!€ð 
�‰Ø	�‰Ø
�+‰+Ø
�+‰+Ø
�+‰+Ø
�+‰+ñ#Ð ð �,‰,Ø�o‰oØ
�+‰+Ø
�+‰+ñ	"Ð ðØ%ðà$ðÐ ð )-¯©Ø#×*Ñ*Ó,ó)Ð %ð (,§}¡}Ø"×)Ñ)Ó+ó(Ð $ô
E%�_ô E%ôPQ
�oô Q
ôhm˜>ô mô`
 .ô 
ô8B�~ô Bô&˜_ô ô:;˜_õ ;øð}' ò Ø	ƒBðús   Â4G ÇG#Ç"G#