Ë
    g^(hßÝ  ã            	       ó  — d 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Zddl	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&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š                  ejœ                  ejž                  dœZPejœ                  ejž                  ej˜                  ejš                  dœZQi eP¥eQ¥ZReSj©                  ePj«                  «       «      ZVeSj©                  eQj«                  «       «      ZWd„ ZX G d„ de;«      ZY G d„ de;«      ZZ G d„ deY«      Z[ G d„ deY«      Z\ G d „ d!eY«      Z] G d"„ d#e;«      Z^ G d$„ d%e;«      Z_ G d&„ d'e;«      Z`y# eB$ r dZAY �ŒNw xY w)(aÀ  
This module contains variable tracker classes for handling tensors and tensor-related operations in Dynamo.

The main class is TensorVariable which represents torch.Tensor inputs and intermediate values in the FX graph.
It handles tensor operations, method calls, and maintains metadata about tensor properties like dtype, device, etc.

Other key classes include:
- SymNodeVariable: Represents symbolic scalars (int/float/bool) used for size computation and unspecialized values
- NumpyNdarrayVariable: Handles numpy array interop through torch._numpy
- UnspecializedPythonVariable: Represents unspecialized Python numeric values as 1-element tensors
- TensorSubclassVariable: Handles tensor subclasses with __torch_function__ overrides
- UntypedStorageVariable: Represents tensor storage objects
- DataPtrVariable: Handles tensor data pointer operations

These classes work together to track tensor operations and properties during Dynamo's tracing process.
é    N)Ú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Ú$UnknownPropertiesDuringBackwardTraceÚ	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<=ú==ú!=Úisúis not)r,   r-   r*   r+   c                 ó  — t        | «      xr� t        j                  j                  j	                  | «       xrU t        | d«      xrG t        | j                  t        j                  «      xr! t        | j                  | j                  d «      S )NÚ__self__)ÚcallableÚtorchÚ_dynamoÚutilsr   ÚhasattrÚ
isinstancer/   ÚTensorÚgetattrÚ__name__©Úvalues    ú\/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_dynamo/variables/tensor.pyÚis_bound_tensor_methodr<   t   sq   € ä�‹ò 	:Ü—‘×#Ñ#×;Ñ;¸EÓBÐBò	:ä�E˜:Ó&ò	:ô �u—~‘~¤u§|¡|Ó4ò	:ô �E—N‘N E§N¡N°DÓ9ðó    c                   óð  ‡ — e Zd ZdZd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dbd„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d(„ Zd)„ Zdbd*„Z dbd+„Z!d,„ Z"d-„ Z#dcdbd.„Z$d/„ Z%e&d0„ «       Z'd1„ Z(d2„ Z)	 	 	 	 	 	 ddd3„Z*d4„ Z+d5„ Z,dcd6„Z-d7„ Z.e.Z/d8„ Z0e0Z1d9„ Z2d:„ Z3d;„ Z4dcd<„Z5ded>„Z6d?„ Z7d@„ Z8dA„ Z9d=dBœdC„Z:dD„ Z;dE„ Z<dF„ Z=dG„ Z>dH„ Z?e e@j‚                  d«      dI„ «       «       ZBdJ„ ZCddKœdL„ZDdM„ ZEdN„ ZFdO„ ZGdP„ ZHdQ„ ZIdR„ ZJddSœdT„ZKddKœdU„ZLdV„ ZMdW„ ZNdX„ ZOdY„ ZPdZ„ ZQd[eRd\efd]„ZSdfd^„ZTd_„ ZUd`„ ZVd[eRfda„ZWˆ xZXS )gÚ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_nestedÚ	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   r@   ÚnodeÚtracer©Úselfs    r;   r   zTensorVariable.get_real_value”   s#   € ô ˜dŸj™jŸo™o¨t¯z©z×/@Ñ/@ÓAÐAr=   N)Ú_sizerF   rI   rN   Úreturnc                ó@  •— t        ‰| �  di |¤Ž || _        || _        || _        || _        || _        || _        || _        || _	        || _
        || _        || _        |	| _        |
| _        || _        |€#| j                  j                   j"                  dk(  }|| _        y )NÚplaceholder© )ÚsuperÚ__init__r@   rA   rB   rC   rD   rT   rF   rG   rH   rI   rJ   rK   rL   Úhas_grad_fnrP   ÚoprN   )rS   r@   rA   rB   rC   rD   rG   rJ   rH   rK   rL   r[   rT   rF   rI   rN   ÚkwargsÚ	__class__s                    €r;   rZ   zTensorVariable.__init__�   s¡   ø€ ô( 	‰ÑÑ"˜6Ò"ØˆŒ
ØˆŒ
ØˆŒØˆŒØˆŒ	ØˆŒ
ØˆŒØ*ˆÔØ(ˆÔØ*ˆÔØ"ˆŒØ"ˆŒØ$ˆŒØ&ˆÔØÐàŸ:™:Ÿ?™?×-Ñ-°Ñ>ˆLØ".ˆÕr=   c                 óZ   — t        | j                  j                  j                  d   «      S ©NÚexample_value)Úreprr@   rP   ÚmetarR   s    r;   Ú
debug_reprzTensorVariable.debug_reprÅ   s    € ä�D—J‘J—O‘O×(Ñ(¨Ñ9Ó:Ð:r=   c                 ó   — | j                   S ©N©r@   rR   s    r;   Úas_proxyzTensorVariable.as_proxyÉ   ó   € Ø�z‰zÐr=   c                 ó   — | j                   S rf   )rL   rR   s    r;   Úpython_typezTensorVariable.python_typeÌ   s   € Ø�‰Ðr=   r:   c                 ó¸  — | j                   | j                  | j                  t        | j                  «      | 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]  }| j1                  |¬«      r|‘Œ c}«      |d<   |S # t        $ r	 d|d<   Y �ŒHw xY wc c}w c c}w c c}w )N)	rA   rB   rC   rD   rG   rJ   rH   rK   rL   r[   FrT   rF   rI   ©Úmemory_format)rA   rB   rC   ÚintrD   rG   rJ   rH   rK   ÚtypeÚgrad_fnÚ	Exceptionr   r   ÚtuplerE   r	   rF   r1   Ú_CÚ
_functorchÚis_batchedtensorÚ_prims_commonÚ_memory_formatsrI   )r:   ÚpropsÚsÚxs       r;   Ú
specializezTensorVariable.specializeÏ   s°  € ð —[‘[Ø—l‘lØ—l‘lÜ˜Ÿ
™
“OØ"×0Ñ0ØŸ™Ø!×.Ñ.ØŸ™Ü˜u›+ñ

ˆð	)Ø#(§=¡=¸Ð#<ˆE�-Ñ ô ˜ÔÔ(8¸Ô(?Ü"Ø:?¿*¹*»,ÖG°Qœ; qœ>”�Q”¨qÑ0ÒGóˆE�'‰Nð8 ˆô3 " %Ô(ô #ð ;@¿*¹*»,ÖG°Qœ; qœ>”�Q”¨qÑ0ÒGóˆE�'‰Nô
 $ E§L¡L£NÓ3ˆE�(‰OÜ�x‰x×"Ñ"×3Ñ3°EÔ:ð *.��oÑ&ð ˆô */ô "'×!4Ñ!4×!DÑ!DöàØ ×.Ñ.¸QÐ.Ô?ò òó*��oÑ&ð ˆøôE ò 	)ð $)ˆE�-Ô ð	)üò Hùò Hùòs$   Á0F8 Â.GÃ;GÆGÆ8G
Ç	G
c                 ó  — | j                   j                  j                  d   }| j                  s–t	        |«      r‹|j                  «       \  }}t        | j                  «       |«      }t        ||«      }||v r-t        |t        j                  «      sJ ‚ddlm}  ||||¬«      S t        |«      st        j                  ||«      S | j                  r| j                  j!                  «       st"        ‚|j$                  j&                  |j$                  j(                  dœ}		 t+        | j                  j-                  «       |	«      }
|
€t"        ‚t1        |
«      rt"        ‚t3        |
«      rt"        ‚t        |
|«      }t5        | j                  |«      }t7        |j9                  t:        j<                  «      «       t?        |«      rddl m!}  || ||tE        |«      ¬«      S t        j                  |||«      S # t.        $ r}t"        |‚d }~ww xY w)Nra   r"   ©Úwrap_fx_proxy)Útxr@   ra   ©ÚLÚG©ÚGetAttrVariable)ÚsourceÚpy_type)#r@   rP   rc   r†   r   Ú__tensor_flatten__r7   rh   r5   r1   r6   Úbuilderr   r0   r#   ÚbuildÚsubguards_allowedÚNotImplementedErrorÚoutputÚlocal_scopeÚglobal_scopeÚevalÚnamerr   r   r   r   r   Ú
make_guardr   ÚHASATTRr<   Úmiscr…   rp   )rS   r€   r‘   Úfake_valÚattrsÚ_ctxr@   ra   r   ÚscopeÚ_input_associated_real_valueÚexcÚ
real_valueÚattr_sourcer…   s                  r;   Údynamic_getattrzTensorVariable.dynamic_getattr  s½  € Ø—:‘:—?‘?×'Ñ'¨Ñ8ˆð �{Š{Ô<¸XÔFØ"×5Ñ5Ó7‰KˆE�4Ü˜DŸM™M›O¨TÓ2ˆEÜ# H¨dÓ3ˆMØ�u‰}ä! -´·±Ô>Ð>Ð>Ý2á$¨°%À}ÔUÐUô ˜mÔ,Ü&×,Ñ,¨R°Ó?Ð?à—’ §¡× =Ñ =Ô ?Ü%Ð%ð —i‘i×+Ñ+°"·)±)×2HÑ2HÑIˆð	/ô ,0°·±×0@Ñ0@Ó0BÀEÓ+JÐ(ð (Ð/Ü%Ð%ä"Ð#?Ô@Ü%Ð%äÐ:Ô;Ü%Ð%äÐ9¸4Ó@ˆ
ä  §¡¨dÓ3ˆÜ�k×,Ñ,¬\×-AÑ-AÓBÔCô " *Ô-Ý-á"Ø�d ;¼¸ZÓ8Hôð ô ×$Ñ$ R¨°[ÓAÐAøô5 ò 	/Ü%¨3Ð.ûð	/ús   Ä $G5 Ç5	H
Ç>HÈH
c                 ó€   — | j                   �t        j                  | j                   «      S | j                  |dg i «      S )NÚdim)rD   r$   ÚcreateÚcall_method©rS   r€   s     r;   Úmethod_attr_ndimzTensorVariable.method_attr_ndimD  s8   € Ø�9‰9Ð Ü#×*Ñ*¨4¯9©9Ó5Ð5à×#Ñ# B¨¨r°2Ó6Ð6r=   c                 óZ   — | j                   �t        j                  | j                   «      S y rf   )rA   r$   r    r¢   s     r;   Úmethod_attr_dtypez TensorVariable.method_attr_dtypeJ  s&   € Ø�:‰:Ð!Ü#×*Ñ*¨4¯:©:Ó6Ð6ð "r=   c                 óZ   — | j                   �t        j                  | j                   «      S y rf   )rB   r$   r    r¢   s     r;   Úmethod_attr_devicez!TensorVariable.method_attr_deviceN  ó&   € Ø�;‰;Ð"Ü#×*Ñ*¨4¯;©;Ó7Ð7ð #r=   c                 óZ   — | j                   �t        j                  | j                   «      S y rf   )rC   r$   r    r¢   s     r;   Úmethod_attr_layoutz!TensorVariable.method_attr_layoutR  r¨   r=   c                 ót   — | j                   �,t        j                  | j                   j                  dk(  «      S y )NÚcuda)rB   r$   r    rp   r¢   s     r;   Úmethod_attr_is_cudaz"TensorVariable.method_attr_is_cudaV  s1   € Ø�;‰;Ð"Ü#×*Ñ*¨4¯;©;×+;Ñ+;¸vÑ+EÓFÐFð #r=   c                 óÖ   — | j                  «       rA| j                  D �cg c]!  }t        j                  j	                  |«      ‘Œ# }}t        |«      S | j                  |dg i «      S c c}w ©NrE   )Ú
valid_sizerE   r   r$   r    r%   r¡   )rS   r€   r{   Úsizess       r;   Úmethod_attr_shapez TensorVariable.method_attr_shapeZ  s\   € Ø�?‰?ÔØ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 rf   )rG   r$   r    r¢   s     r;   Úmethod_attr_requires_gradz(TensorVariable.method_attr_requires_grada  s*   € Ø×ÑÐ)Ü#×*Ñ*¨4×+=Ñ+=Ó>Ð>ð *r=   c                 óZ   — | j                   �t        j                  | j                   «      S y rf   )rH   r$   r    r¢   s     r;   Úmethod_attr_is_quantizedz'TensorVariable.method_attr_is_quantizede  s*   € Ø×ÑÐ(Ü#×*Ñ*¨4×+<Ñ+<Ó=Ð=ð )r=   c                 óZ   — | j                   �t        j                  | j                   «      S y rf   )rK   r$   r    r¢   s     r;   Úmethod_attr_is_sparsez$TensorVariable.method_attr_is_sparsei  ó&   € Ø�>‰>Ð%Ü#×*Ñ*¨4¯>©>Ó:Ð:ð &r=   c                 óZ   — | j                   �t        j                  | j                   «      S y rf   )rJ   r$   r    r¢   s     r;   Úmethod_attr_is_nestedz$TensorVariable.method_attr_is_nestedm  r¹   r=   c                 ó   — t        d«       y )Nz,retain_grad does not work with AOTDispatcher©r   r¢   s     r;   Úmethod_attr_retain_gradz&TensorVariable.method_attr_retain_gradq  s   € ÜÐDÕEr=   c                 ó”   — t        j                  t        j                  j                  j
                  «      j                  || gi «      S rf   )r   ÚTorchInGraphFunctionVariabler1   rt   Ú	_autogradÚ_get_data_attrÚcall_functionr¢   s     r;   Úmethod_attr_datazTensorVariable.method_attr_datat  s8   € Ü×5Ñ5Ü�H‰H×Ñ×-Ñ-ó
ç
‰-˜˜T˜F BÓ
'ð	(r=   c                 ó\   — | j                   rt        d«       y t        j                  d «      S )NzTensorVariable has a grad_fn)r[   r   r   r$   r¢   s     r;   Úmethod_attr_grad_fnz"TensorVariable.method_attr_grad_fny  s%   € Ø×ÒÜÐ8Õ9ä×-Ñ-¨dÓ3Ð3r=   c                 ó\   — ddl m} t        j                  |«      j	                  || gi «      S )Nr   )Ú_tensor_version)Útensor_version_oprÈ   r   rÀ   rÃ   )rS   r€   rÈ   s      r;   Úmethod_attr__versionz#TensorVariable.method_attr__version  s,   € Ý7ä×5Ñ5°oÓF×TÑTØ��˜ó
ð 	
r=   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"   r„   )ÚBuiltinVariableF)Ú r…   ÚbuiltinrÌ   r7   rÃ   r$   r5   ÚAttributeErrorr†   r   r   r’   r   r“   )rS   r€   r‘   r…   rÌ   ÚvarÚret_vals          r;   Úcall_obj_hasattrzTensorVariable.call_obj_hasattr†  s˜   € Ý%Ý,ð	Ù!¤'Ó*×8Ñ8Ø�TÔ+¨DÓ1Ð2°BóˆCô
 % S¨/Ó:Ð:ˆGð �;Š;ÜÜ˜4Ÿ;™;¨Ó-×8Ñ8¼×9MÑ9MÓNôô   Ó(Ð(øô ò 	ØŠGð	ús   Ž5B ÂB$Â#B$c                 ór  ‡ ‡‡— ddl m} ‰ j                  ‰«      rC‰‰ j                  «       v rt	        d‰› d�«       n!‰‰ 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   «      j0                  v r4t2        j4                  j7                  t!        ‰ j                  ‰«      ¬«      S |€‰dk7  rˆˆ ˆfd„} |«       }|€‰ j9                  ‰‰«      }|€t:        ‚|S )Nr"   )ÚUserDefinedClassVariablezGetattr invocation z  in strict mode is not supportedzUnknown property z] during speculating backward, dynamo will insert contiguous call ahead and speculate it againr^   Úmethod_attr_)ÚgradrG   Ú	overloadsr   )r†   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"   r~   r„   )r€   r@   r†   ©r€   r@   )r‰   r   r”   r…   ÚinspectÚgetattr_staticr1   r6   rÏ   rp   ÚtypesÚGetSetDescriptorTypeÚcreate_getattr_proxyrh   r†   r   )r   r…   Ústatic_attrr@   r‘   rS   r€   s       €€€r;   Ú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   Ú#_strict_mode_conditional_banned_opsr   rk   r7   r†   r‹   Úis_python_constantr   r’   r   Ú
TYPE_MATCHr   r4   r1   ÚopsÚatenr×   ÚTagÚinplace_viewÚtagsr   r”   ÚDelayGraphBreakVariabler�   rŒ   )rS   r€   r‘   rÔ   ÚhandlerÚresultÚfnrà   s   ```     r;   Úvar_getattrzTensorVariable.var_getattr›  s÷  ú€ Ý.à×Ñ˜rÔ"Ø�t×3Ñ3Ó5Ñ5ÜØ)¨$¨Ð/OÐPõð ˜×AÑAÓCÑCÜ:Ø'¨ vð  .Kð  Lóð ð �;ÒÙ+¨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àˆ>Ü%Ð%Øˆr=   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 TensorVariabler�   z%error getting associated real value: z%call_id without associated real value)r†   r   r�   rŽ   r�   r�   r‘   rr   r   r’   r   ÚID_MATCHÚidr$   r    )rS   r€   r˜   r™   rš   Úid_values         r;   Ú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   )rD   r¢   s     r;   Úhas_unpack_var_sequencez&TensorVariable.has_unpack_var_sequence  s   € Ø�y‰y˜1‰}Ðr=   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_clsrE   r   zCan't unpack scalar tensors.zCan't unpack a tensor of z rows into a tuple of z
 elements.©Ú
target_clsr€   r@   )r‰   rù   r°   ÚlenrE   r¡   r5   r%   Úitemsr$   r    ÚSymNodeVariableÚevaluate_exprr�   r:   Úrangerp   rh   )	rS   r€   Úidxesrù   Úsize_lenÚsize_varÚlengthÚ
dyn_lengthÚis	            r;   Úunpack_var_sequencez"TensorVariable.unpack_var_sequence  sZ  € Ý.à�?‰?ÔÜ˜4Ÿ9™9“~‰Hà×'Ñ'¨¨F°B¸Ó;ˆHÜ˜h¬Ô5Ð5Ð5Ü˜8Ÿ>™>Ó*ˆHà˜1Š}Ð<Ð<Ó<ˆ}à�?‰?ÔØ—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ä�u“: Ò'ð Ø+¨F¨8Ð3IÌ#ÈeË*ÈÐU_Ð`óÐ'ð
 ö
àñ ¬¨d«¸À$Ç-Á-Ã/ÐRSÑBTÖUò
ð 	
ùò 
s   Å,E2c                 ó   — | j                   d uS rf   ©rT   rR   s    r;   r°   zTensorVariable.valid_size*  s   € Ø�z‰z Ð%Ð%r=   c                 ó@   — | j                   €J d«       ‚| j                   S )Nz%accessing None size in TensorVariabler	  rR   s    r;   rE   zTensorVariable.size-  s"   € à�z‰zÐ%ÐNÐ'NÓNÐ%Ø�z‰zÐr=   c                 óJ   — t         j                  j                  j                  S rf   )r1   r2   r   Ú)_autograd_backward_strict_mode_banned_opsrR   s    r;   râ   z&TensorVariable._strict_mode_banned_ops2  s   € Ü�}‰}×#Ñ#×MÑMÐMr=   c                 óJ   — t         j                  j                  j                  S rf   )r1   r2   r   Ú5_autograd_backward_strict_mode_conditional_banned_opsrR   s    r;   rã   z2TensorVariable._strict_mode_conditional_banned_ops5  s   € ä�M‰M× Ñ ×VÑVð	
r=   c           
      ó  — ddl m}m} ddlm}m} | j                  |«      r!|| j                  «       v rt        d|› d�«       d}		 t        j                  t        j                  |«       d}	 ||t        | gt        |«      z   «      |«      r©|	r§| j                   rP  ||t#        t#        | j                   d«      |«      «      t        j                  t        j                  |«      «      }
n*|j%                  |t'        t        j                  |«      «      }
 |||
t        | gt        |«      z   «      |«      S 	 |d	k(  r2t)        |d
   t*        j,                  «      rt+        j.                  d«      S 	 t'        | d|› �«      }	  ||i |¤Ž}|r|S 	 ddl m}  || |j4                  j6                  d|gt9        | g|¢|«      ¢­Ž «      S # t        $ r d}	Y �Œew xY w# t0        $ r}t        d|› d|› �«       Y d }~Œid }~ww xY w# t        $ r Y Œ|w xY w)Nr"   )ÚSourcelessBuilderÚVariableBuilder)Úcan_dispatch_torch_functionÚdispatch_torch_functionzIllegal method invocation z in strict modeFTr^   Ú__eq__r   Úmethod_zunhandled args for z: r~   r¡   )r‰   r  r  Útorch_functionr  r  rá   râ   r   rÚ   rÛ   r1   r6   rÏ   rs   Úlistr†   r   r    r7   r5   r   rÔ   r$   Ú	TypeErrorr   r�   Úcreate_proxyr   )rS   r€   r‘   Úargsr]   r  r  r  r  Úis_base_tensor_methodÚfunc_varÚhandler_methodrí   Úer   s                  r;   r¡   zTensorVariable.call_method:  s  € ÷ 	@ßXà×Ñ˜rÔ" t¨t×/KÑ/KÓ/MÑ'MÜÐ6°t°f¸OÐLÔMð
 !&Ðð	*Ü×"Ñ"¤5§<¡<°Ô6Ø$(Ð!ñ
 (¨¬E°4°&¼4À»:Ñ2EÓ,FÈÔOÙ%à�{Š{ð™?Øœ
¤:¨d¯k©k¸;Ó#GÈÓNóä×(Ñ(¬¯©°tÓ<ó>‘ð -×3Ñ3°B¼ÄÇÁÈdÓ8SÓT�á*Ø�Hœe T F¬T°$«ZÑ$7Ó8¸&óð ð	ð �8Ò¤
¨4°©7´I×4VÑ4VÔ WÜ×-Ñ-¨eÓ4Ð4ð
	AÜ$ T¨W°T°FÐ+;Ó<ˆNðAÙ'¨Ð8°Ñ8�ÙØ!�Mð õ
 	+áØØ"ˆB�I‰I×"Ñ"ØØðô # D =¨4 =°&Ó9òó
ð 	
øôU ò 	*Ø$)Ó!ð	*ûôJ ò AÜÐ 3°D°6¸¸A¸3Ð?×@Ñ@ûðAûô ò 	Ùð	ús<   Á&G Å.G< Å>G ÇGÇGÇ	G9ÇG4Ç4G9Ç<	HÈHc                 ó.   —  | j                   dg|¢­i |¤ŽS r¯   ©Ú_method_size_stride©rS   r  r]   s      r;   Úmethod_sizezTensorVariable.method_size�  s   € Ø'ˆt×'Ñ'¨Ð@°Ò@¸Ñ@Ð@r=   c                 ó.   —  | j                   dg|¢­i |¤ŽS )NrF   r   r"  s      r;   Úmethod_stridezTensorVariable.method_stride„  s   € Ø'ˆt×'Ñ'¨ÐB°4ÒB¸6ÑBÐBr=   c                 óJ  — t        |«      }d„ }|dk(  r|nt        j                  }|dk7  rt        | |«      }n$|dk(  r| j	                  «       r| j
                  }nd }|�"|€ ||«      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 rf   )r%   r$   r    )r{   ÚoptionsÚys      r;   Úmake_const_size_variablezDTensorVariable._method_size_stride.<locals>.make_const_size_variableŠ  s9   € ÜØ@AÖB¸1Ô!×(Ñ(¨Ñ6¨gÓ6ÒBñØFMñð ùÚBs   Š/rE   ra   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrf   ©ro   ©Ú.0Úrs     r;   ú	<genexpr>z5TensorVariable._method_size_stride.<locals>.<genexpr>ª  s   è ø€ Ò,D¸¬S°¯VÑ,Dùó   ‚)r   r$   r    r7   r°   rE   r@   rP   rc   Úgetr   rs   ro   )rS   r‘   rŸ   r*  ÚRetVariabler/  ÚfakeÚfake_rs           r;   r!  z"TensorVariable._method_size_stride‡  s%  € Ü˜3Óˆò	ð )-°ªÑ$Ô<L×<SÑ<Sð 	ð �6Š>Ü˜˜dÓ#‰AØ�VŠ^ §¡Ô 1Ø—	‘	‰AàˆAàˆ=Øˆ{Ù" 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r=   c                 óJ  — | j                  «       r(t        j                  t        | j                  «      «      S | j
                  j                  j                  j                  d«      x}�:|j                  «       }t        |«      st        j                  t        |«      «      S y y r`   )r°   r$   r    r   rE   r@   rP   rc   r2  Únumelr   ro   )rS   r4  r5  s      r;   Úmethod_numelzTensorVariable.method_numel°  s   € Ø�?‰?ÔÜ#×*Ñ*¬7°4·9±9Ó+=Ó>Ð>ð —J‘J—O‘O×(Ñ(×,Ñ,¨_Ó=Ð=ˆDÐJØ—Z‘Z“\ˆFÜ# FÔ+Ü'×.Ñ.¬s°6«{Ó;Ð;ð ,ð Kr=   c                 óZ   — | j                   �t        j                  | j                   «      S y rf   )rD   r$   r    rR   s    r;   Ú
method_dimzTensorVariable.method_dim¼  s&   € Ø�9‰9Ð Ü#×*Ñ*¨4¯9©9Ó5Ð5ð !r=   c                 ón   — | j                   �)t        j                  | j                   j                  «      S y rf   )rA   r$   r    Úis_floating_pointrR   s    r;   Úmethod_is_floating_pointz'TensorVariable.method_is_floating_pointÂ  s,   € Ø�:‰:Ð!Ü#×*Ñ*¨4¯:©:×+GÑ+GÓHÐHð "r=   c                 ó¬   — | j                   j                  j                  j                  d«      x}�#t	        j
                  |j                  «       «      S y r`   )r@   rP   rc   r2  r$   r    Úis_inference)rS   r4  s     r;   Úmethod_is_inferencez"TensorVariable.method_is_inferenceÆ  sF   € Ø—J‘J—O‘O×(Ñ(×,Ñ,¨_Ó=Ð=ˆDÐJÜ#×*Ñ*¨4×+<Ñ+<Ó+>Ó?Ð?ð Kr=   c                 ón   — | j                   �)t        j                  | j                   j                  «      S y rf   )rA   r$   r    Ú
is_complexrR   s    r;   Úmethod_is_complexz TensorVariable.method_is_complexÊ  s,   € Ø�:‰:Ð!Ü#×*Ñ*¨4¯:©:×+@Ñ+@ÓAÐAð "r=   c                 óN  — |�|j                  «       nt        j                  }| j                  �!t	        j
                  || j                  v «      S | j                  j                  j                  j                  d«      x}�%t	        j
                  |j                  |¬«      «      S y )Nra   rm   )
Úas_python_constantr1   Úcontiguous_formatrI   r$   r    r@   rP   rc   r2  )rS   rn   r4  s      r;   Úmethod_is_contiguousz#TensorVariable.method_is_contiguousÎ  sž   € ð Ð(ð ×,Ñ,Ô.ä×(Ñ(ð 	ð
 ×ÑÐ)Ü#×*Ñ*¨=¸D×<NÑ<NÐ+NÓOÐOØ—j‘j—o‘o×*Ñ*×.Ñ.¨Ó?Ð?ˆdÐLÜ#×*Ñ*Ø×"Ñ"°Ð"Ó?óð ð Mr=   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                  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rf   )rA   )r.  ÚkÚvrS   s      €r;   r0  z-TensorVariable.method_type.<locals>.<genexpr>á  s$   øè ø€ ò Ù�a˜¸T¿Z¹ZÈ1º_”ñùs   ƒ!š!Úcpuztorch.ú.ztorch.tensortyper   r&   r"   r~   Únon_blockingr¡   rp   )rA   r5   rB   r1   Únextr!   rý   rp   r$   r    r8   r   rE  Úsymbolic_convertr'   r‰   r   Ú
current_txr�   r  r   )
rS   rA   rN  r]   Ú
tensortypeÚtensor_typeÚtensor_type_constr'   r   r€   s
   `         r;   Úmethod_typezTensorVariable.method_typeÛ  sk  ø€ àˆMØ—
‘
Ð&Ü˜4Ÿ;™;¬¯©Ô5äó Ü1×7Ñ7Ó9ôó ˆJð �{‰{×Ñ 5Ò(Ü'×.Ñ.°¸
×8KÑ8KÐ7LÐ/MÓNÐNä'×.Ñ.Ø˜TŸ[™[×-Ñ-Ð.¨a°
×0CÑ0CÐ/DÐEóð ð ÐÜ”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ð r=   c           
      óR  — t        |t        «      r—|j                  rŠddlm} ddlm}  |j                  «       }|j                  «       }t        j                  ||j                  j                  t        t        |j                  d«      d«      «      }|j                  || ||«      S y y )Nr   r&   r"   ©ÚTensorWithTFOverrideVariableÚ__torch_function__Ú__func__)r5   ÚTensorSubclassVariabler†   rP  r'   r  rX  rQ  rE  r#   rŠ   rY  rZ  r   Úfrom_tensor_var)rS   Úclsr'   rX  r€   Úpy_clsÚtorch_fns          r;   Úmethod_as_subclassz!TensorVariable.method_as_subclass  s™   € Ü�cÔ1Ô2°s·z²zÝ@ÝDà1Ð&×1Ñ1Ó3ˆBð ×+Ñ+Ó-ˆFÜ&×,Ñ,ØØ×)Ñ)×2Ñ2Üœ: c§j¡jÐ2FÓGÈÓTóˆHð 0×?Ñ?Ø�D˜& (óð ð# 8BÐ2r=   c                 óØ   — t        | j                  t        j                  «      rF| j                  j                  dk7  r| j                  j                  nd}t        j                  |«      S y )NrL  éÿÿÿÿ)r5   rB   r1   rp   Úindexr$   r    )rS   rc  s     r;   Úmethod_get_devicez TensorVariable.method_get_device  sL   € Ü�d—k‘k¤5§<¡<Ô0Ø)-¯©×)9Ñ)9¸UÒ)B�D—K‘K×%Ò%ÈˆEÜ#×*Ñ*¨5Ó1Ð1ð 1r=   c                 óT   — t        j                  | j                  j                  «      S rf   )r$   r    rA   ÚitemsizerR   s    r;   Úmethod_element_sizez"TensorVariable.method_element_size   s   € Ü×&Ñ& t§z¡z×':Ñ':Ó;Ð;r=   )Ú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¡   rL  Úview_as)r   Útrace_numpyr   ÚnprC   r1   Ústridedr  rP  r'   rQ  rE  r¡   r�   r  rh   r   ÚNumpyNdarrayVariabler    )rS   rh  r'   r€   Útr@   s         r;   Ú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Ð5r=   c                 óø   ‡‡‡— ddl m} ddlmŠ  |j                  «       Šˆˆˆfd„Š| j                  «       j                  j                  d   } ‰|| j                  «       «      }t        j                  ‰|«      S )Nr   r&   r"   r~   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   ‰‰|j                  «       «      cd d d «       S # 1 sw Y   y xY w)NÚallow_scalar_outputsT)ÚunittestÚmockÚpatchÚobjectÚ	fake_modeÚitem)r  Ú	sub_proxyr€   r   s     €€r;   Úwrapz:TensorVariable.method_tolist.<locals>.tolist.<locals>.wrapD  sU   ø€ ô —]‘]×(Ñ(×/Ñ/Ø—L‘LÐ"8¸$óñ ñ )ØØ!Ÿ™Ó(ó÷÷ ò ús   ·AÁA!z1Input tensor for tolist must be an integer tensorr   r"   )r|  )	rA   r1   Úint8Úint16Úint32Úint64r   rŸ   Ú	enumerate)	Útensorr|  r}  r  ÚvalÚ
sub_tensorÚtolistr€   r   s	         €€€r;   r†  z,TensorVariable.method_tolist.<locals>.tolistC  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#ra   )
rP  r'   r‰   r   rQ  rh   rP   rc   r#   rŠ   )rS   r'   rƒ  Úoutr†  r€   r   s       @@@r;   Úmethod_tolistzTensorVariable.method_tolist=  sb   ú€ Ý<Ý*à-Ð"×-Ñ-Ó/ˆö	ð> —‘“×%Ñ%×*Ñ*¨?Ñ;ˆÙ�V˜TŸ]™]›_Ó-ˆÜ×$Ñ$ R¨Ó-Ð-r=   c                 ó   — t        d«       y )NzTensor.backwardr½   r"  s      r;   Úmethod_backwardzTensorVariable.method_backwardf  s   € ÜÐ'Õ(r=   c                 ó   — t        | «      S rf   )ÚDataPtrVariabler"  s      r;   Úmethod_data_ptrzTensorVariable.method_data_ptri  s   € Ü˜tÓ$Ð$r=   c                 ó\   — t         j                  s| j                  «        t        d«       y y )NzTensor.item)r   Úcapture_scalar_outputsÚ_warn_capture_scalar_outputsr   r"  s      r;   Úmethod_itemzTensorVariable.method_iteml  s$   € Ü×,Ò,Ø×-Ñ-Ô/Ü˜-Õ(ð -r=   c           	      óh  — ddl m} ddlm}  |j                  «       }t        |d   t        «      r5t        j                  t        j                  j                  d«      |d   g}}nt        j                  } |j                  j                  d|gt!        | gt#        |«      z   |«      ¢­Ž } |||«      S )Nr   r&   r"   r~   r   rÃ   )rP  r'   r‰   r   rQ  r5   rþ   r1   Úselectr   r$   r    ÚoperatorÚgetitemr�   r  r   r  )rS   r  r]   r'   r   r€   rî   r@   s           r;   Úmethod___getitem__z!TensorVariable.method___getitem__q  s«   € Ý<Ý*à-Ð"×-Ñ-Ó/ˆÜ�d˜1‘gœÔ/ô
 —‘ä×.Ñ.×5Ñ5°aÓ8Ø˜‘Gðð ‰Bô ×!Ñ!ˆBà&�—	‘	×&Ñ&ØØð
ô  ˜v¬¨T«
Ñ2°FÓ;ò
ˆñ ˜R Ó'Ð'r=   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
                )r1   Ú_guardsÚTracingContextÚextract_stackÚjoinÚ	tracebackÚformat_listÚlogÚwarningÚtextwrapÚdedent)Ú
user_stackÚuser_stack_formatteds     r;   r�  z+TensorVariable._warn_capture_scalar_outputsŒ  sX   € ô —]‘]×1Ñ1×?Ñ?ÓAˆ
Ø!Ÿw™w¤y×'<Ñ'<¸ZÓ'HÓIÐÜ�‰Ü�O‰Oð	óð !õ	
r=   c                 ó€   — ddl m}  |j                  «       }| j                  |dt	        j
                  d«      gi «      S )Nr   r&   rE   r   )rP  r'   rQ  r¡   r$   r    )rS   r'   r€   s      r;   Úmethod___len__zTensorVariable.method___len__¡  s<   € Ý<à-Ð"×-Ñ-Ó/ˆØ×Ñ  FÔ-=×-DÑ-DÀQÓ-GÐ,HÈ"ÓMÐMr=   r9   c                ó¬   — ddl m}  |j                  «       }|�;ddlm} |j                  t        j                  ||j                  «      | |||gi «      S y )Nr   r&   )Ú	polyfills)	rP  r'   rQ  rÍ   r§  Úinline_user_function_returnr#   rŠ   Úaddcmul_inplace)rS   Útensor1Útensor2r:   r'   r€   r§  s          r;   Úmethod_addcmul_zTensorVariable.method_addcmul_§  s\   € Ý<à-Ð"×-Ñ-Ó/ˆØÐÝ$à×1Ñ1Ü×%Ñ% b¨)×*CÑ*CÓDØ�w ¨Ð/Øóð ð r=   c                 óØ   ‡— ˆf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rf   rX   )r.  r{  Úhas_bool_keys     €r;   r0  zJTensorVariable.method___setitem__.<locals>.has_bool_key.<locals>.<genexpr>¹  s   øè ø€ ÒB°$™<¨×-ÑBùs   ƒF)
r5   r?   rA   r1   Úboolr~  r   ÚTupleVariableÚanyrý   )rK  r°  s    €r;   r°  z7TensorVariable.method___setitem__.<locals>.has_bool_keyµ  sQ   ø€ Ü˜!œ^Ô,Ø—w‘w¤5§:¡:¬u¯z©zÐ":Ð:Ð:Ü˜Aœy×6Ñ6Ô7ÜÓB¸!¿'¹'ÔBÓBÐBàr=   r   r&   rÃ   )
rP  r'   rQ  r�   r  r”  Úsetitemr   r$   r    )rS   Úkeyr:   r'   r€   r°  s        @r;   Úmethod___setitem__z!TensorVariable.method___setitem__´  si   ø€ ô	õ 	=à-Ð"×-Ñ-Ó/ˆØˆ�	‰	×ÑØÜ×Ñð	
ô   c¨5Ð1°2Ó6ó	
ô
  ×&Ñ& tÓ,Ð,r=   c                 ó   — t        d«       y )NzTensor.resize_r½   r"  s      r;   Úmethod_resize_zTensorVariable.method_resize_Ç  s   € ÜÐ&Õ'r=   c                 ó   — t        d«       y )NzTensor.resize_as_r½   r"  s      r;   Úmethod_resize_as_z TensorVariable.method_resize_as_Ê  s   € ÜÐ)Õ*r=   c                 ó   — t        d«       y )NzTensor.sparse_resize_r½   r"  s      r;   Úmethod_sparse_resize_z$TensorVariable.method_sparse_resize_Í  s   € ÜÐ-Õ.r=   c                 ó   — t        d«       y )NzTensor.sparse_resize_and_clear_r½   r"  s      r;   Úmethod_sparse_resize_and_clear_z.TensorVariable.method_sparse_resize_and_clear_Ð  s   € ÜÐ7Õ8r=   c                 ó8   — t        |«      dkD  rt        d«       y y )Nr"   z(Tensor.set_.source_Tensor_storage_offset)rü   r   r"  s      r;   Úmethod_set_zTensorVariable.method_set_Ó  s   € Üˆt‹9�qŠ=ô ÐDÕEð r=   )Úalphac                óÌ   — |�bddl m}  |j                  «       }t        j                  t
        j                  «      j                  |||gi «      }| j                  |d|gi «      S y ©Nr   r&   Úadd_)	rP  r'   rQ  r   rÀ   r1   ÚmulrÃ   r¡   )rS   ÚotherrÁ  r'   r€   rí   s         r;   Úmethod_add_zTensorVariable.method_add_Ý  sf   € ØÐÝ@à1Ð&×1Ñ1Ó3ˆBÜ×;Ñ;¼E¿I¹IÓF×TÑTØ�U˜E�N BóˆFð ×#Ñ# B¨°°¸"Ó=Ð=ð r=   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Ã  )
rP  r'   rQ  r   rÀ   r1   ÚdivrÃ   rÅ  r¡   )rS   rª  r«  r:   r'   r€   rí   s          r;   Úmethod_addcdiv_zTensorVariable.method_addcdiv_ç  s“   € Ý<à-Ð"×-Ñ-Ó/ˆØÐÜ×;Ñ;¼E¿I¹IÓF×TÑTØ�W˜gÐ&¨óˆFô ×;Ñ;¼E¿I¹IÓF×TÑTØ�V˜U�O RóˆFð ×#Ñ# B¨°°¸"Ó=Ð=ð r=   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{  )
rP  r'   rQ  r   rÀ   r1   ÚeqrÃ   r³  r¡   )rS   Úargr'   r€   rí   s        r;   Úmethod___contains__z"TensorVariable.method___contains__ô  s…   € Ý<à-Ð"×-Ñ-Ó/ˆô ×7Ñ7¼¿¹ÓA×OÑOØ��s�˜Ró
ˆô ×7Ñ7¼¿	¹	ÓB×PÑPØ��˜"ó
ˆð ×!Ñ! " f¨b°"Ó5Ð5r=   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 rf   )Úredistribute©r{   Úargs_as_valueÚkwargs_as_values    €€r;   Úredistribute_fn_with_prim_typeszKTensorVariable.method_redistribute.<locals>.redistribute_fn_with_prim_types  s   ø€ Ø!�1—>‘> =ÐD°OÑDÐDr=   Úprim_redistributer"   r~   rÃ   rÙ   ©rP  r'   rQ  rE  rý   r8   r‰   r   r�   r  r   )rS   r  r]   r'   r€   r{   rJ  rK  rÕ  r   rÓ  rÔ  s             @@r;   Ú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 rf   )Úto_localrÒ  s    €€r;   Úto_local_fn_with_prim_typeszCTensorVariable.method_to_local.<locals>.to_local_fn_with_prim_types(  s   ø€ Ø�1—:‘:˜}Ð@°Ñ@Ð@r=   Úprim_to_localr"   r~   rÃ   rÙ   r×  )rS   r  r]   r'   r€   r{   rJ  rK  rÝ  r   rÓ  rÔ  s             @@r;   Ú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      r;   Úmethod_register_hookz#TensorVariable.method_register_hook9  s   € Ø)ˆt×)Ñ)¨/ÐK¸DÒKÀFÑKÐKr=   c                 ó.   —  | j                   dg|¢­i |¤ŽS )NÚ"register_post_accumulate_grad_hookrâ  r"  s      r;   Ú)method_register_post_accumulate_grad_hookz8TensorVariable.method_register_post_accumulate_grad_hook<  s*   € Ø)ˆt×)Ñ)Ø0ð
Ø37ò
Ø;Añ
ð 	
r=   r‘   Úhookc           	      ó.  ‡‡
— ddl m}  |j                  «       }| j                  s•t        j
                  st        d«       |j                  j                  |«      \  Š
}ˆ
ˆfd„}ddl	m
} | j                  «       }d|j                  j                  d<    |||j                  j                  d	|||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)r7   Ú	functoolsÚpartialr   r   )rƒ  rë  rá  rì  r‘   s      €€r;   Ú_register_hook_trampolinezGTensorVariable._method_register_hook.<locals>._register_hook_trampoline_  s6   ø€ Ü '¨°Ó 5�ÙÜ×%Ñ%Ü%Ü8Ø!)Ø"+ô	ôð r=   r"   r~   TÚhas_backward_hookrÃ   )Úmutation_type)rP  r'   rQ  r†   r   Úcompiled_autograd_enabledr   r�   Úadd_backward_state_hookr‰   r   rh   rP   rc   r  r   ÚRemovableHandleVariableÚbaseÚValueMutationNewÚside_effectsrá  )rS   r‘   rè  r'   r€   Úbw_state_proxyrï  r   Ú
self_proxyÚhandle_variablerì  s    `        @r;   rã  z$TensorVariable._method_register_hookA  sö   ù€ õ 	=à-Ð"×-Ñ-Ó/ˆà�{Š{Ü$×>Ò>ô  ØRôð )+¯	©	×(IÑ(IÈ$Ó(OÑ%ˆI�~õõ /àŸ™›ˆJØ8<ˆJ�O‰O× Ñ Ð!4Ñ5á ØØ—	‘	×&Ñ&Ø#Ø-Ø Ð0Øó	óð ô $×;Ñ;Ü#Ÿ.™.×9Ñ9Ó;ô
ˆð 	�	‰	×Ñ×,Ñ,¨T°4¸È$ÔOØÐr=   c                 ó®   — |dur|j                  «       }| j                  «       j                  j                  d   j                  |k7  rt        d«       y | S )NTra   zTensor.requires_grad_)rE  rh   rP   rc   rG   r   )rS   rG   s     r;   Úmethod_requires_grad_z$TensorVariable.method_requires_grad_ƒ  sK   € Ø Ñ$Ø)×<Ñ<Ó>ˆMà�=‰=‹?×Ñ×$Ñ$ _Ñ5×CÑCÀ}ÒTÜÐ1Õ2àˆKr=   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rf   )r5   r$   rk   ro   )r.  Úas     r;   r0  z,TensorVariable.method_new.<locals>.<genexpr>‘  s0   è ø€ ò ØOP”
˜1Ô.Ó/ÒJ°A·M±M³OÄsÑ4JÓJñùs   ‚35r   r&   Ú	new_empty)rü   r5   r%   ÚallrP  r'   r¡   rQ  )rS   r  r]   r'   s       r;   Ú
method_newzTensorVariable.method_newŒ  st   € ô �‹I˜ŠNœz¨$¨q©'´<Ô@Ü�‹I˜ŠNÜñ ØTXôô õ Aà×#Ñ#Ø0Ð%×0Ñ0Ó2°KÀÀvóð ðð r=   c                 ó€   — t        | | j                  «       j                  j                  d   j	                  «       «      S r`   )ÚUntypedStorageVariablerh   rP   rc   Úuntyped_storagerR   s    r;   Úmethod_untyped_storagez%TensorVariable.method_untyped_storage›  s4   € Ü%Ø�$—-‘-“/×&Ñ&×+Ñ+¨OÑ<×LÑLÓNó
ð 	
r=   c                 óv   — | j                   s-| j                  j                  j                  |«       d| _         y y )NT)rN   r@   rP   Ú_rename)rS   r‘   s     r;   Úset_name_hintzTensorVariable.set_name_hint   s.   € Ø× Ò Ø�J‰J�O‰O×#Ñ# DÔ)Ø $ˆDÕð !r=   ©r€   r'   rf   ©r  zlist[VariableTracker]r]   zdict[str, VariableTracker]rU   r#   )NF©T)Yr8   Ú
__module__Ú__qualname__Ú__doc__r#   Ú_nonvar_fieldsr   r1   ÚfxÚProxyrZ   rd   rh   rk   Ústaticmethodr6   r|   r�   r£   r¥   r§   rª   r­   r²   r´   r¶   r¸   r»   r¾   rÄ   rÆ   rÊ   rÒ   rï   rô   rö   r  r°   ÚpropertyrE   râ   rã   r¡   r#  r%  r!  r8  Úmethod_nelementr:  Úmethod_ndimensionr=  r@  rC  rG  rU  r`  rd  rg  rq  rˆ  rŠ  r�  r‘  r–  rí  Ú	lru_cacher�  r¥  r¬  r¶  r¸  rº  r¼  r¾  rÀ  rÇ  rÊ  rÎ  rØ  rß  rä  rç  Ústrrã  rü  r  r  r	  Ú__classcell__©r^   s   @r;   r?   r?   ~   s›  ø„ ÙGð 	ØØØØØØØØØØØØØØðð  
×	'Ñ	'ð!€Nò&Bð. ØØØò#&/à�x‰x�~‰~ð&/ð& 
õ'&/òP;òòð ð0˜%Ÿ,™,ò 0ó ð0ód@BòD7ò7ò8ò8òGò8ò?ò>ò;ò;òFò(ò
4ò
ó)ó*Uòn1ò$ô!
òF&ð ñó ðòNò
ð
E
ð &ð	E
ð
 -ðE
ð 
óE
òNAòCó'@òR<ð #€Oò6ð #ÐòIò@òBóó(òTò,2ò
<ð %*ô 6ò4'.òR)ò%ò)ò
(ð6 Ø€Y×Ñ˜Óñ
ó ó ð
ò&Nð :>ô ò-ò&(ò+ò/ò9òFð +/ô >ð :>ô >ò6ò"
ò4
ò4Lò
ð
@¨#ð @°_ó @óDòò
ð
% #÷ %r=   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.
    r@   Úsym_numc                 ó,   — t        | j                  «      S rf   )rb   r  rR   s    r;   rd   zSymNodeVariable.debug_repr³  s   € Ü�D—L‘LÓ!Ð!r=   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 r`   )r   rP   rc   r    r5   ÚsympyÚIntegerro   r±  r$   r    rþ   )r]  r€   r@   r  r(  s        r;   r    zSymNodeVariable.create¶  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Ð9r=   c                 óN   •— t        ‰| �  di |¤Ž || _        || _        d | _        y ©NrX   )rY   rZ   r@   r  Ú_tensor_var)rS   r@   r  r]   r^   s       €r;   rZ   zSymNodeVariable.__init__Ä  s)   ø€ Ü‰ÑÑ"˜6Ò"ØˆŒ
àˆŒØˆÕr=   c                 ó    — t        | j                  t        «      r | j                  j                  j                  S t        | j                  «      S rf   )r5   r  r
   rP   Úpytyperp   rR   s    r;   rk   zSymNodeVariable.python_typeË  s5   € Ü�d—l‘l¤HÔ-Ø—<‘<×$Ñ$×+Ñ+Ð+ä˜Ÿ™Ó%Ð%r=   c                 ó   — | j                   S rf   rg   rR   s    r;   rh   zSymNodeVariable.as_proxyÑ  ri   r=   c           	      óÔ   — | j                   €Qt        j                  |t        j                  «      j                  || gdt        j                  ||«      i«      | _         | j                   S )NrA   )r#  r#   rŠ   r1   Úscalar_tensorrÃ   )rS   r€   rA   s      r;   Ú	as_tensorzSymNodeVariable.as_tensorÔ  s_   € Ø×ÑÐ#Ü.×4Ñ4Ø”E×'Ñ'ó ç‰m˜B  ¨´/×2GÑ2GÈÈEÓ2RÐ(SÓTð Ôð ×ÑÐr=   c                 óþ   — 	 t        | j                  «      S # t        $ r\}t        j                  j
                  j                  j                  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   r1   r  ÚexperimentalÚ_configÚno_data_dependent_graph_breakr   r   ÚANTI_PATTERNr  )rS   Úoutput_graphr  s      r;   rÿ   zSymNodeVariable.evaluate_exprÛ  si   € ð
	Ü §¡Ó-Ð-øÜ*ò 	Ü�x‰x×$Ñ$×,Ñ,×JÒJØäÜ×*Ñ*ØGÌÈAËÀxÐPØ5ôð ûð		ús   ‚ —	A< AA7Á7A<c           
      ór   — ddl m}  || |j                  j                  d|gt	        | g|¢|«      ¢­Ž «      S )Nr"   r~   r¡   )r‰   r   r�   r  r   )rS   r€   r‘   r  r]   r   s         r;   r¡   zSymNodeVariable.call_methodè  sH   € õ 	+áØØ"ˆB�I‰I×"Ñ"ØØðô # D =¨4 =°&Ó9òó
ð 	
r=   rf   ©rU   Nr  )r8   r  r  r  r#   r  rd   Úclassmethodr    rZ   rk   rh   r)  rÿ   r¡   r  r  s   @r;   rþ   rþ   ¦  s|   ø„ ñð 	Øðð 
×	'Ñ	'ð€Nò"ð ò:ó ð:õ ò&òò óð
ð &ð	
ð
 -ð
ð 
÷
r=   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 )	ro  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ú   rX   )r‰   rù   ro  )r€   r@   r(  rù   s       r;   r    zNumpyNdarrayVariable.create  s*   € å.á ð 
Ü+ØØñ
ð ñ	
ð 	
r=   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"   r~   ra   c            	      ón   •—  ‰‰‰j                   j                  d‰‰j                  «       ‰ fi «      «      S )NrÃ   )r�   r  rh   )r‘   r8  rS   r€   r   s   €€€€€r;   Úinsert_into_graphz;NumpyNdarrayVariable.var_getattr.<locals>.insert_into_graph  s;   ø€ Ù ØØ—	‘	×&Ñ&Ø#Ð%7¸$¿-¹-»/È4Ð9PÐRTóóð r=   )ÚTÚrealÚimagrÃ   )rD   rf  )ÚshaperF   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrf   r,  r-  s     r;   r0  z3NumpyNdarrayVariable.var_getattr.<locals>.<genexpr>;  s   è ø€ Ò4GÀ´S¸·VÑ4Gùr1  rE   )rõ  ÚflagsrA   zTODO: add support for ndarray.)Ú__version__z delegate np.__version__ to NumPy)r3   r8  r‰   r   rh   rP   rc   ÚtnpÚndarrayr�   r  ro  r    r$   r7   r   rs   rE   ro   r   rŒ   )rS   r€   r‘   rí   ra   Úexample_ndarrayr:  r@   r/  r8  r   s   ```      @@r;   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Ø�_Ñ$ÜÐ<Ô=Øˆ>Ü%Ð%Øˆr=   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ý   r2  )r‘   r  r]   Úkwargs_renamerJ  rK  s         r;   Ú
patch_argszNumpyNdarrayVariable.patch_argsI  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__rE   r†  )ÚtostringÚtobytesz  is not modelled in torch._numpyrÃ   )r3   rN  rL  rY   r¡   r   r�   r  r   r  ro  r    )rS   r€   r‘   r  r]   rN  r@   r^   s          €r;   r¡   z NumpyNdarrayVariable.call_methodP  s¨   ø€ õ 	1à—‘ t¨T°6Ó:‰ˆˆfàÐ0Ñ0ä‘7Ñ& r¨4°°vÓ>Ð>ØÐ*Ñ*Ü˜T˜FÐ"BÐCÔDØ&�—	‘	×&Ñ&ØÙ  Ó&ð
ô  ˜v¬¨T«
Ñ2°FÓ;ò
ˆô
 $×*Ñ*¨2¨uÓ5Ð5r=   c                 ó"   — t         j                  S rf   )rm  rC  rR   s    r;   rk   z NumpyNdarrayVariable.python_typeg  s   € Ü�z‰zÐr=   r
  r  )r8   r  r  r  r  r    rï   rL  r¡   rk   r  r  s   @r;   ro  ro  û  s^   ø„ ñð
 ò
ó ð
ó;ðz ñó ðð6ð &ð	6ð
 -ð6ð 
õ6ö.r=   ro  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©rU  rV  r@   rU   c                óB   •— t        ‰| �  |fi |¤Ž || _        || _        y rf   )rY   rZ   rU  rV  )rS   r@   rU  rV  r]   r^   s        €r;   rZ   z$UnspecializedPythonVariable.__init__v  s&   ø€ ô 	‰Ñ˜Ñ) &Ò)Ø"ˆŒØ&ˆÕr=   c                 óH   — t        di t        |j                  «      ¤||dœ¤ŽS )NrW  rX   )rT  ÚdictÚ__dict__)r]  Útensor_variablerU  rV  s       r;   Úfrom_tensor_variablez0UnspecializedPythonVariable.from_tensor_variable}  s/   € ô +ñ 
Ü�?×+Ñ+Ó,ð
àØ#ó
ð 	
r=   r  ©r8   r  r  r  r?   r  r1   r  r  rZ   r4  r]  r  r  s   @r;   rT  rT  k  s_   ø„ ñð
 	Øðð 
×	&Ñ	&ð€Nð 37ÀDò'Ø—X‘X—^‘^ð'à	õ'ð ò
ó ô
r=   rT  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.rV  r@   rU   Nc                 óX   •— |j                  dd«      }t        ‰| �  |fi |¤Ž || _        y )NrV  F)ÚpoprY   rZ   rV  )rS   r@   r]   rV  r^   s       €r;   rZ   zFakeItemVariable.__init__�  s-   ø€ Ø—j‘j °Ó6ˆÜ‰Ñ˜Ñ) &Ò)Ø&ˆÕr=   c                 ó>   — t        di t        |j                  «      ¤ŽS r"  )r`  rZ  r[  )r]  r\  s     r;   r]  z%FakeItemVariable.from_tensor_variable•  s   € äÑA¤$ ×'?Ñ'?Ó"@ÑAÐAr=   r^  r  s   @r;   r`  r`  ‡  sS   ø„ ñ9ð 	ðà	×	&Ñ	&ð€Nð
'˜eŸh™hŸn™nð '¸4õ 'ð
 ñBó ôBr=   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[  rU   c                 ó2   •— || _         t        ‰| �  |i |¤Ž y rf   )r:   rY   rZ   )rS   r:   r  r]   r^   s       €r;   rZ   zTensorSubclassVariable.__init__›  s   ø€ ØˆŒ
Ü‰Ñ˜$Ð) &Ó)r=   r€   r'   r  r]   c                 ó8  •— t        |«      dk(  r{t        |d   t        «      rhddlm} t        | j                  d«      }t        j                  || j                  j                  |«      }|j                  ||d   | j                  |«      S t        ‰| �5  |||«      S )Nr"   r   rW  rY  )rü   r5   r?   r  rX  r   r†   r#   rŠ   r:   rY  r\  rY   rÃ   )rS   r€   r  r]   rX  r†   r_  r^   s          €r;   rÃ   z$TensorSubclassVariable.call_functionŸ  sŠ   ø€ ô ˆt‹9˜Š>œj¨¨a©´.ÔAÝDä §¡Ð-AÓBˆFÜ&×,Ñ,¨R°·±×1NÑ1NÐPVÓWˆHà/×?Ñ?Ø�D˜‘G˜TŸZ™Z¨óð ô ‰wÑ$ R¨¨vÓ6Ð6r=   c                 ó   — | j                   S rf   r9   rR   s    r;   rE  z)TensorSubclassVariable.as_python_constant±  ri   r=   r3  )r8   r  r  rZ   r  r#   rZ  r  rÃ   rE  r  r  s   @r;   r[  r[  š  sG   ø„ õ*ð7à#ð7ð �?Ñ#ð7ð �S˜/Ð)Ñ*ð	7ð
 
õ7ö$r=   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  ra   Úfrom_tensorrU   Nc                 ó@   •— t        ‰| �  di |¤Ž || _        || _        y r"  )rY   rZ   ri  ra   )rS   ri  ra   r]   r^   s       €r;   rZ   zUntypedStorageVariable.__init__»  s%   ø€ ô 	‰ÑÑ"˜6Ò"Ø&ˆÔà*ˆÕr=   r  r]   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 )	NrE   r   )Úuntyped_storage_sizer"   r~   rÃ   Úresize_r   )ra   rE   r   r$   r    ro   Úexternal_utilsrl  r‰   r   r�   r  ri  rh   rü   r1   ræ   ÚinductorÚresize_storage_bytes_rY   r¡   )	rS   r€   r‘   r  r]   rí   rl  r   r^   s	           €r;   r¡   z"UntypedStorageVariable.call_methodÆ  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Ó:Ð:r=   c                 ól   —  || j                   «       |j                  d«       |j                  d«       y )Nr  r   ©ri  Úload_methodr¡   ©rS   Úcodegens     r;   Úreconstructz"UntypedStorageVariable.reconstructí  s-   € Ù�× Ñ Ô!Ø×ÑÐ-Ô.Ø×Ñ˜AÕr=   )r8   r  r  r#   r  r?   r1   ÚUntypedStoragerZ   r  rZ  r  r¡   rv  r  r  s   @r;   r  r  µ  sz   ø„ àðà	×	'Ñ	'ð€Nð
	+à#ð	+ð ×+Ñ+ð	+ð
 
õ	+ð%;ð �?Ñ#ð	%;ð
 �S˜/Ð)Ñ*ð%;ð 
õ%;öNr=   r  c                   ó.   ‡ — e Zd Zdeddfˆ fd„Zd„ Zˆ xZS )rŒ  ri  rU   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r"  )rY   rZ   ri  )rS   ri  r]   r^   s      €r;   rZ   zDataPtrVariable.__init__ô  s   ø€ ô
 	‰ÑÑ"˜6Ò"Ø&ˆÕr=   c                 ól   —  || j                   «       |j                  d«       |j                  d«       y )NÚdata_ptrr   rr  rt  s     r;   rv  zDataPtrVariable.reconstructü  s,   € Ù�× Ñ Ô!Ø×Ñ˜JÔ'Ø×Ñ˜AÕr=   )r8   r  r  r?   rZ   rv  r  r  s   @r;   rŒ  rŒ  ó  s   ø„ ð'à#ð'ð 
õ	'ör=   rŒ  )ar  rí  rÚ   Úloggingr”  r   rœ  rÜ   rv  Útypingr   r  Útorch._numpyÚ_numpyrB  Útorch.fxr1   Ú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   r   rn  r   Úguardsr   r   r†   r   r3   r   r   r   r   r   r   r   r   r    r!   rõ  r#   Úconstantr$   Úlistsr%   Únumpyrm  ÚModuleNotFoundErrorÚtorch._dynamo.symbolic_convertr'   Ú	getLoggerr8   rž  ÚgtÚltÚgeÚlerÌ  ÚneÚis_Úis_notÚsupported_tensor_comparison_opsÚsupported_const_comparison_opsÚsupported_comparison_opsrZ  ÚfromkeysÚvaluesÚ%supported_tensor_comparison_op_valuesÚ$supported_const_comparison_op_valuesr<   r?   rþ   ro  rT  r`  r[  r  rŒ  rX   r=   r;   ú<module>rœ     sä  ðñó" Û Û Û Û Û Û Û Ý  ã å Û Û Ý +Ý 6÷õ õ Gç  Ý :÷ó õ ;ß 0Ý ÷÷ ÷ õ "Ý &Ý ðÛñ
 ÝDð €g×Ñ˜Ó!€ð 
�‰Ø	�‰Ø
�+‰+Ø
�+‰+Ø
�+‰+Ø
�+‰+Ø
�,‰,Ø�o‰oñ	#Ð ð �,‰,Ø�o‰oØ
�+‰+Ø
�+‰+ñ	"Ð ðØ%ðà$ðÐ ð )-¯©Ø#×*Ñ*Ó,ó)Ð %ð (,§}¡}Ø"×)Ñ)Ó+ó(Ð $ò
ôe%�_ô e%ôP!R
�oô R
ôjm˜>ô mô`
 .ô 
ô8B�~ô Bô&˜_ô ô6;˜_ô ;ô|�oõ øðO- ò Ø	ƒBðús   Â4G< Ç<HÈH