§
    C�’j” ã            	       ó$  — 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mZm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ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mZ dd	lmZ dd
lm 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/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: ddl;m<Z< ddl=m>Z>m?Z? ddl@mAZA ddlBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN ddlOmPZPmQZQmRZR ddlSmTZT ddlUmVZVmWZW ddlXmYZY ddlZm[Z[ 	 ddl\Z]n# e^$ r dZ]Y nw xY werddl_m`Z` ddlambZb ddlcmdZd dd lemfZf dd!lgmhZh  eji        ej¦  «        Zkejl        ejm        ejn        ejo        ejp        ejq        ejr        ejs        d"œZtejr        ejs        ejp        ejq        d#œZui et¥eu¥Zvew x                    et y                    ¦   «         ¦  «        Zzew x                    eu y                    ¦   «         ¦  «        Z{d$e|d%e}fd&„Z~ej        j€        j�        ej‚        j�        z  Zƒd'eRd%e}fd(„Z„d<d$ej‚        d*e…d%e…fd+„Z† G d,„ d-eR¦  «        Z‡ G d.„ d/eR¦  «        Zˆ G d0„ d1e‡¦  «        Z‰ G d2„ d3e‡¦  «        ZŠ G d4„ d5e‡¦  «        Z‹ G d6„ d7e[¦  «        ZŒ G d8„ d9eR¦  «        Z� G d:„ d;eR¦  «        ZŽdS )=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)ÚIterableÚSequence)Únullcontext)Úchain)ÚNoneType)ÚAnyÚNoReturnÚOptionalÚTYPE_CHECKING)Ú	sym_floatÚsym_int)Úcompiled_autograd)Úis_opaque_reference_type)Ú
OpaqueBase)Úis_sparse_any)Úguard_scalarÚGuardOnDataDependentSymNodeÚhas_free_symbolsÚis_symbolicÚSymTypes)Úis_traceable_wrapper_subclassé   )ÚconfigÚgraph_break_hintsÚ	variables)Útrace_wrapped)ÚObservedAttributeErrorÚraise_observed_exceptionÚTorchRuntimeErrorÚunimplementedÚ$UnknownPropertiesDuringBackwardTraceÚ	UserErrorÚUserErrorType)Úcall_hook_from_backward_state)ÚGuardBuilderÚinstall_guard)Ú
AttrSource)Úcmp_name_to_op_mappingÚfqnÚget_custom_getattrÚget_fake_valueÚget_real_valueÚguard_if_dynÚobject_has_getattributeÚproductÚproxy_args_kwargsÚraise_args_mismatchÚset_example_valueÚtensortype_to_dtypeé   )ÚAttributeMutationNewÚValueMutationNewÚVariableTracker©ÚConstantVariable)ÚListIteratorVariableÚSizeVariable)ÚTorchScriptObjectVariable)ÚUserDefinedClassVariable)Ú	PyCodegen)ÚOutputGraph)ÚInstructionTranslatorBase)ÚUserFunctionVariable©ÚTensorWithTFOverrideVariable)ú>ú<z>=z<=ú==ú!=Úisúis not)rH   rI   rF   rG   ÚvalueÚreturnc                 ó  — t          t          | ¦  «        ont          j        j                             | ¦  «         oIt          | d¦  «        o9t          | j        t          j	        ¦  «        ot          | j        | j        d ¦  «        ¦  «        S )NÚ__self__)ÚboolÚcallableÚtorchÚ_dynamoÚutilsr.   ÚhasattrÚ
isinstancerM   ÚTensorÚgetattrÚ__name__©rJ   s    úLC:\Projects\DSCons\.venv\Lib\site-packages\torch\_dynamo\variables\tensor.pyÚis_bound_tensor_methodrZ   ƒ   s   € ÝÝ�‰Œð 	:Ý”Ô#×;Ò;¸EÑBÔBÐBð	:å�E˜:Ñ&Ô&ð	:õ �u”~¥u¤|Ñ4Ô4ð	:õ �E”N E¤N°DÑ9Ô9ñô ð ó    Úvtc                 ó¦   — |                       ¦   «         rdS t          | t          ¦  «        o&t          | j        t          t
          t          f¦  «        S )uÍ   True if vt can be the other operand of a SymNode arithmetic op
    (add/sub). Accepts SymNode-like values plus float ConstantVariable â€”
    arithmetic with float promotes to SymFloat, unlike bitwise ops.T)Úis_symnode_likerT   r9   rJ   ÚfloatÚintrN   )r\   s    rY   Ú_is_sym_arith_operandra   ”   sI   € ð 
×ÒÑÔð Øˆtõ �bÕ*Ñ+Ô+ÐXµ
¸2¼8ÅeÍSÕRVÐEWÑ0XÔ0XÐXr[   rU   Ú	type_namec                 ó   — t           j        j                             | ¦  «        r…t           j        j                             | ¦  «        }t           j        j                             | ¦  «        }t           j        j                             | ¦  «        }d|› d|› dt          |¦  «        › d�S t           j        j                             | ¦  «        r^t           j        j                             | ¦  «        }t           j        j                             | ¦  «        }d|› dt          |¦  «        › d�S t           j        j         	                    | ¦  «        r^t           j        j                             | ¦  «        }t           j        j                             | ¦  «        }d|› dt          |¦  «        › d�S |› dt          | j        ¦  «        › d| j        › d�S )	NzBatchedTensor(lvl=z, bdim=z, value=ú)zGradTrackingTensor(lvl=zFunctionalTensor(lvl=z(shape=z, dtype=)rP   Ú_CÚ
_functorchÚis_batchedtensorÚmaybe_get_levelÚmaybe_get_bdimÚget_unwrappedÚ_tensor_debug_reprÚis_gradtrackingtensorÚis_functionaltensorÚtupleÚshapeÚdtype)rJ   rb   ÚlevelÚbdimÚ	unwrappeds        rY   rk   rk   Ÿ   s¬  € Ý„xÔ×+Ò+¨EÑ2Ô2ð 
Ý”Ô#×3Ò3°EÑ:Ô:ˆÝŒxÔ"×1Ò1°%Ñ8Ô8ˆÝ”HÔ'×5Ò5°eÑ<Ô<ˆ	ðØðð Ø!%ðð Ý/AÀ)Ñ/LÔ/Lðð ð ð	
õ
 „xÔ×0Ò0°Ñ7Ô7ð YÝ”Ô#×3Ò3°EÑ:Ô:ˆÝ”HÔ'×5Ò5°eÑ<Ô<ˆ	ØX¨ÐXÐXÕ8JÈ9Ñ8UÔ8UÐXÐXÐXÐXÝ„xÔ×.Ò.¨uÑ5Ô5ð WÝ”Ô#×3Ò3°EÑ:Ô:ˆÝ”HÔ'×5Ò5°eÑ<Ô<ˆ	ØV uÐVÐVÕ6HÈÑ6SÔ6SÐVÐVÐVÐVØÐJÐJ¥ e¤kÑ 2Ô 2ÐJÐJ¸E¼KÐJÐJÐJÐJr[   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efd„Zdej	        fd„Z
dddddœdej        j        dej        dej        dej        ded	eded
ededededeedf         dz  deedf         dz  dedz  dedz  deddf"ˆ fd„Z	 d·dddedz  ddfd„Zdedz  fd„Zddd edz  d!eddfd"„Zdefd#„Zdddefd$„Zdej        j        fd%„Zdefd&„Zdefd'„Zdddefd(„Zddd)ed*edefd+„Ze d,ej	        de!eef         fd-„¦   «         Z"ddd.edefd/„Z#dddefd0„Z$dddedz  fd1„Z%dddedz  fd2„Z&dddedz  fd3„Z'ddde(dz  fd4„Z)dddefd5„Z*ddde(dz  fd6„Z+ddde(dz  fd7„Z,ddde(dz  fd8„Z-ddde(dz  fd9„Z.ddde/fd:„Z0dddedz  fd;„Z1dddefd<„Z2ddde(dz  fd=„Z3dddefd>„Z4ddd.ede(fd?„Z5ddd.edefd@„Z6	 d·dddAe7e         dz  de8e         fdB„Z9dddCdDdEedFe8e         dGe!eef         defdH„Z:defdI„Z;e<deedf         fdJ„¦   «         Z=de8e         fdK„Z>de8e         fdL„Z?dddMedefdN„Z@ddd.edOe8e         ddPdef
dQ„ZAdddOedededz  fdR„ZBdddOedededz  fdS„ZC	 d·d.edTedz  dedz  fdU„ZDdddedz  fdV„ZEeEZFdddedz  fdW„ZGeGZHddde(dz  fdX„ZIddde(dz  fdY„ZJddde(dz  fdZ„ZK	 d·ddd[edz  de(dz  fd\„ZL	 	 d¸dddedz  d^edededz  f
d_„ZMddd`eddafdb„ZNdddedz  fdc„ZOdddefdd„ZPd]deœdddfeez  ddgfdh„ZQdddefdi„ZR	 d¹djeSe         dkede8e         dz  fdl„ZT	 	 	 	 dºdddmedz  dnedz  doedz  dpedz  dedz  fdq„ZUdddOededdrfds„ZVdddOededdrfdt„ZWddduedefdv„ZXdddOededdfdw„ZYdddefdx„ZZdddefdy„Z[dddefdz„Z\dddefd{„Z]dddefd|„Z^dddefd}„Z_dddefd~„Z`dddefd„Zadddefd€„Zbdddefd�„Zcdddefd‚„ZddddOededefdƒ„Zee efjg        d»d„„¦   «         ¦   «         Zhdddefd…„Zidddefd†„Zjdddefd‡„Zkdddefdˆ„Zldd‰œdddŠed‹ed,edz  dedz  f
dŒ„ZmdddMed,edefd�„ZndddOedede/fdŽ„ZodddOedede/fd�„ZpdddOedede/fd�„ZqdddOedede/fd‘„ZrdddOededdfd’„Zsdd“œddd)ed”edz  dedz  fd•„Ztdd‰œdddŠd d‹d d,edz  dedz  f
d–„Zuddd—edefd˜„Zvddd™edefdš„ZwdddOededefd›„ZxdddOededefdœ„Zyddd.ed�edefdž„Zz	 d¼ddd	eez  defd „Z{d½d¡„Z|de/fd¢„Z}dddOedededz  fd£„Z~d¤d dddOedededz  f
d¥„Z	 	 	 	 d¾d§„Z€d.eddfd¨„Z�	 d¹ddd)ed©edefdª„Z‚	 d¹ddd)ed©edefd«„Zƒ	 d¹ddd)ed©edefd¬„Z„	 d¹ddd)ed©edefd­„Z…	 d¹ddd)ed©edefd®„Z†	 d¹ddd)ed©edefd¯„Z‡	 d¹ddd)ed©edefd°„Zˆ	 d¹ddd)ed©edefd±„Z‰	 d¹ddd)ed©edefd²„ZŠ	 d¹ddd)ed©edefd³„Z‹dddeeef         fd´„ZŒ	 d¹ddd)ed©edefdµ„Z�d)eŽdefd¶„Z�ˆ xZ�S )¿ÚTensorVariablez=A torch.Tensor input or an intermediate value in the FX graphÚproxyrp   ÚdeviceÚlayoutÚndimÚsizeÚstrideÚrequires_gradÚis_quantizedÚis_contiguousÚ	is_nestedÚ	is_sparseÚ
class_typeÚspecialized_valueÚ_is_name_setrK   c                 óð   — t          | j        ¦  «        |j        v r(d|j        t          | j        ¦  «                 j        › d�S | j        r| j                             |¦  «        S t          d| › d�¦  «        ‚)Nz__graph_out[ú]zPython codegen for z failed with unknown source.)Úidrv   Úgraph_outputsÚindexÚsourceÚreconstruct_pycodeÚRuntimeError©ÚselfÚcodegens     rY   rŠ   z!TensorVariable.reconstruct_pycodeÊ   sw   € ÝˆdŒj‰>Œ>˜WÔ2Ð2Ð2ØP 'Ô"7½¸4¼:¹¼Ô"GÔ"MÐPÐPÐPÐPØŒ[ð 	YØ”;×1Ò1°'Ñ:Ô:Ð:åÐW°TÐWÐWÐWÑXÔXÐXr[   c                 ó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,   rv   ÚnodeÚtracer©r�   s    rY   r,   zTensorVariable.get_real_valueÒ   s   € õ ˜dœjœo¨t¬zÔ/@ÑAÔAÐAr[   N)Ú_sizer{   r~   rƒ   Úhas_grad_fnr“   .Úkwargsc                ó:  •—  t          ¦   «         j        di |¤Ž || _        || _        || _        || _        || _        || _        || _        || _	        || _
        || _        || _        |	| _        |
| _        || _        |€| j        j        j        dk    }|| _        d S )NÚplaceholder© )ÚsuperÚ__init__rv   rp   rw   rx   ry   r“   r{   r|   r}   r~   r   r€   r�   r”   r�   Úoprƒ   )r�   rv   rp   rw   rx   ry   r|   r   r}   r€   r�   r”   r“   r{   r~   rƒ   r•   Ú	__class__s                    €rY   rš   zTensorVariable.__init__Û   s­   ø€ ð( 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒ
ØˆŒ
ØˆŒØˆŒØˆŒ	ØˆŒ
ØˆŒØ*ˆÔØ(ˆÔØ*ˆÔØ"ˆŒØ"ˆŒØ$ˆŒØ&ˆÔØÐàœ:œ?Ô-°Ò>ˆLØ".ˆÔÐÐr[   Útxr@   Ú
target_clsc                 ó  — ddl m}m} |€t          | ¦  «        }| j        j        j                             d¦  «        } |||| ||¦  «        ¦  «        }|                     ¦   «         D ]\  }}t          | ||¦  «         Œd S )Nr4   )Úget_specialized_propsÚinfer_subclass_typeÚexample_value)
Úbuilderr    r¡   Útyperv   r�   ÚmetaÚgetÚitemsÚsetattr)	r�   r�   rž   r    r¡   r¢   Úspecialized_propsÚkÚvs	            rY   Úsynchronize_attributesz%TensorVariable.synchronize_attributes  s°   € ð 	HÐGÐGÐGÐGÐGÐGÐGàÐÝ˜d™œˆJàœ
œÔ,×0Ò0°ÑAÔAˆØ1Ð1Ø˜˜MÐ+>Ð+>¸}Ñ+MÔ+Mñ
ô 
Ðð &×+Ò+Ñ-Ô-ð 	 ð 	 ‰DˆAˆqÝ�D˜!˜QÑÔÐÐð	 ð 	 r[   c                 ó`   — | j         j        j                             d¦  «        }|�|j        ndS )zFGet the current version of self's fake tensor, or None if unavailable.r¢   N)rv   r�   r¥   r¦   Ú_version)r�   Ú	self_fakes     rY   Ú_get_fake_versionz TensorVariable._get_fake_version  s/   € à”J”OÔ(×,Ò,¨_Ñ=Ô=ˆ	Ø%.Ð%:ˆyÔ!Ð!ÀÐDr[   Úversion_beforeÚhas_tensor_argc                 ó°   — |                       ¦   «         }|�;|�;||k    r7|r|                      |¦  «         |j                             |¦  «         dS dS dS dS )z‹
        Sync attributes if self was mutated by an inplace operation.

        See Note [Inplace ops and VariableTracker metadata]
        N)r°   r¬   ÚoutputÚ&check_input_mutation_on_current_stream)r�   r�   r±   r²   Úversion_afters        rY   Ú_sync_if_inplace_mutationz(TensorVariable._sync_if_inplace_mutation  sx   € ð ×.Ò.Ñ0Ô0ˆàÐ&ØÐ)Ø Ò.Ð.àð 0Ø×+Ò+¨BÑ/Ô/Ð/ØŒI×<Ò<¸RÑ@Ô@Ð@Ð@Ð@ð 'Ð&Ø)Ð)Ø.Ð.r[   c                 óp   — t          | j        j        j        d         |                      ¦   «         ¦  «        S ©Nr¢   )rk   rv   r�   r¥   Úpython_type_namer’   s    rY   Ú
debug_reprzTensorVariable.debug_repr,  s1   € Ý!ØŒJŒOÔ  Ô1°4×3HÒ3HÑ3JÔ3Jñ
ô 
ð 	
r[   c                 ón   — t          dd|                      ¦   «         › �dg t          j        ¢¬¦  «         d S )Nzrepr() on tensorz
repr() on zRTensor repr requires actual runtime values which are not available during tracing.©Úgb_typeÚcontextÚexplanationÚhints)r    rº   r   ÚSUPPORTABLE©r�   r�   s     rY   Ú	repr_implzTensorVariable.repr_impl1  sN   € ÝØ&Ø: ×!6Ò!6Ñ!8Ô!8Ð:Ð:ð,à2Õ%Ô1Ð2ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r[   c                 ó   — | j         S ©N©rv   r’   s    rY   Úas_proxyzTensorVariable.as_proxy:  ó
   € ØŒzÐr[   c                 ó   — | j         S rÆ   )r�   r’   s    rY   Úpython_typezTensorVariable.python_type=  s
   € ØŒÐr[   c                 ó   — dS ©NTr˜   r’   s    rY   Ú	is_tensorzTensorVariable.is_tensor@  ó   € Øˆtr[   c                 óz  — ddl m} |                      |dg i ¦  «        }t          |t          ¦  «        r!t          |j        t          j        ¦  «        r|S t          ||¦  «        r't          j	        |t          |j        ¦  «        ¦  «        S t                               ||                     ¦   «         dk    ¦  «        S )Nr4   r8   Úitemr   )Úconstantr9   Úcall_methodrT   ÚSymNodeVariableÚsym_numrP   ÚSymBoolr7   ÚbuildrN   rJ   ÚcreaterÈ   )r�   r�   r9   rÑ   s       rY   Ú	bool_implzTensorVariable.bool_implC  s³   € à.Ð.Ð.Ð.Ð.Ð.à×Ò  F¨B°Ñ3Ô3ˆÝ�d�OÑ,Ô,ð 	µØŒL�%œ-ñ2
ô 2
ð 	ð ˆKÝ�dÐ,Ñ-Ô-ð 	?Ý"Ô(¨­T°$´*Ñ-=Ô-=Ñ>Ô>Ð>Ý×%Ò% b¨$¯-ª-©/¬/¸QÒ*>Ñ?Ô?Ð?r[   Úotherr›   c                 óX  — ddl m} t          |t          t          t
          f¦  «        st	          j        t          ¦  «        S t          |         }|j	         
                    d||                      ¦   «         |                     ¦   «         fi ¦  «        } |t          | ¦  «        ||¦  «        S )zETensor tp_richcompare: element-wise comparison producing an FX proxy.r4   ©Úwrap_fx_proxy_clsÚcall_function)r£   rÝ   rT   rÔ   r9   ru   rØ   ÚNotImplementedr(   r´   Úcreate_proxyrÈ   r¤   )r�   r�   rÚ   r›   rÝ   Úop_fnrv   s          rY   Úrichcompare_implzTensorVariable.richcompare_implP  sŸ   € ð 	/Ð.Ð.Ð.Ð.Ð.å˜%¥/Õ3CÅ^Ð!TÑUÔUð 	;Ý#Ô*­>Ñ:Ô:Ð:Ý& rÔ*ˆØ”	×&Ò&Ø˜U T§]¢]¡_¤_°e·n²nÑ6FÔ6FÐ$GÈñ
ô 
ˆð !Ð ¥ d¡¤¨R°Ñ7Ô7Ð7r[   rJ   c                 óô  ‡ — ‰ j         ‰ j        ‰ j        t          ‰ j        ¦  «        ‰ j        ‰ j        ‰ j        ‰ j        t          ‰ ¦  «        dœ	}	 ‰ j
        d u|d<   n# t          $ r d|d<   Y nw xY wt          ‰ ¦  «        r>t          ‰ ¦  «        s/t          d„ ‰                      ¦   «         D ¦   «         ¦  «        |d<   n¸t          ‰ ¦  «        s©t          d„ ‰                      ¦   «         D ¦   «         ¦  «        |d<   t          ‰                      ¦   «         ¦  «        |d<   t"          j        j                             ‰ ¦  «        rd |d<   n-t          ˆ fd	„t"          j        j        D ¦   «         ¦  «        |d<   |S )
N)	rp   rw   rx   ry   r|   r   r}   r€   r�   r”   Fc              3   óV   K  — | ]$}t          |¦  «        rt          |¦  «        n|V — Œ%d S rÆ   ©r   r`   ©Ú.0Úss     rY   ú	<genexpr>z,TensorVariable.specialize.<locals>.<genexpr>v  sH   è è € ð #ð #Ø45�+ a™.œ.Ð/•�A‘”�¨að#ð #ð #ð #ð #ð #r[   r“   c              3   óV   K  — | ]$}t          |¦  «        rt          |¦  «        n|V — Œ%d S rÆ   rå   ræ   s     rY   ré   z,TensorVariable.specialize.<locals>.<genexpr>€  sM   è è € ð #ð #ð õ & a™.œ.Ð/•�A‘”�¨að#ð #ð #ð #ð #ð #r[   r{   r~   c              3   óH   •K  — | ]}‰                      |¬ ¦  «        ¯|V — ŒdS )©Úmemory_formatN)r~   )rç   ÚxrJ   s     €rY   ré   z,TensorVariable.specialize.<locals>.<genexpr>Œ  sN   øè è € ð /ð /àØ×*Ò*¸Ð*Ñ;Ô;ð/Øð/ð /ð /ð /ð /ð /r[   )rp   rw   rx   r`   ry   r|   r   r}   r€   r¤   Úgrad_fnÚ	Exceptionr   r   rn   rz   r{   rP   re   rf   rg   Ú_prims_commonÚ_memory_formats)rJ   Úpropss   ` rY   Ú
specializezTensorVariable.specializea  sÄ  ø€ ð ”[Ø”lØ”lÝ˜œ
‘O”OØ"Ô0ØœØ!Ô.ØœÝ˜u™+œ+ð
!
ð 
!
ˆð	)Ø#(¤=¸Ð#<ˆE�-Ñ Ð øÝð 	)ð 	)ð 	)ð $)ˆE�-Ñ Ð Ð ð	)øøøõ
 ˜ÑÔð 	Õ(8¸Ñ(?Ô(?ð 	Ý"ð #ð #Ø9>¿º¹¼ð#ñ #ô #ñ ô ˆE�'‰NˆNõ " %Ñ(Ô(ð 	õ #ð #ð #ð Ÿš™œð	#ñ #ô #ñ ô ˆE�'‰Nõ $ E§L¢L¡N¤NÑ3Ô3ˆE�(‰OÝŒxÔ"×3Ò3°EÑ:Ô:ð 	ð *.��oÑ&Ð&å).ð /ð /ð /ð /å"Ô0Ô@ð/ñ /ô /ñ *ô *��oÑ&ð
 ˆs   ÁA ÁA0Á/A0Únamec           
      ób  — | j         j        j        d         }| j        �srt	          |¦  «        �rb|                     ¦   «         \  }}t          |                      ¦   «         |¦  «        }t          ||¦  «        }||v rTt          |t          j
        t          f¦  «        st          dt          |¦  «        › �¦  «        ‚ddlm}  ||||¬¦  «        S t!          t          |¦  «        ¦  «        rFt          j        j                             |j        j        |¦  «        }	t-          j        ||	|¬¦  «        S t          |t          j        j        j        ¦  «        rt-          j        |||¬¦  «        S t3          |¦  «        st5          j        ||¦  «        S | j        r| j                             ¦   «         st:          ‚|j        j        |j        j        dœ}
	 tA          | j        j!        |
¦  «        }n# tD          $ r}t:          |‚d }~ww xY w|€t:          ‚tG          |¦  «        rt:          ‚tI          |¦  «        rt:          ‚	 t          ||¦  «        }nA# tJ          $ r4 tM          tJ          |dt          |¦  «        j'        › d	|› d�g¬
¦  «         Y nw xY wtQ          | j        |¦  «        }tS          |¦  «        r"ddl*m+}  || ||t          |¦  «        ¬¦  «        S tY          | j         -                    t]          j/        t`          j1        |¬¦  «        ¦  «        ¦  «         t5          j        |||¦  «        S )Nr¢   z#Expected Tensor or OpaqueBase, got r4   ©Úwrap_fx_proxy)r�   rv   r¢   )r�   )ÚLÚGú'z' object has no attribute '©Úargs©ÚGetAttrVariable)r‰   Úpy_type©Úattr)2rv   r�   r¥   r‰   r   Ú__tensor_flatten__rV   rÈ   rT   rP   rU   r   ÚAssertionErrorr¤   r£   rø   r   Ú_libraryÚfake_class_registryÚmaybe_to_fake_objr´   Ú	fake_moder<   rØ   ÚFakeScriptObjectrO   r7   r×   Úsubguards_allowedÚNotImplementedErrorÚlocal_scopeÚglobal_scopeÚevalrõ   rð   r.   r*   ÚAttributeErrorr   rW   r'   rZ   Úmiscrÿ   r&   Ú
make_guardÚ	functoolsÚpartialr%   ÚHASATTR)r�   r�   rõ   Úfake_valÚattrsÚ_ctxrv   r¢   rø   Úfake_script_objÚscopeÚ_input_associated_real_valueÚexcÚ
real_valueÚattr_sourcerÿ   s                   rY   Údynamic_getattrzTensorVariable.dynamic_getattr“  sŽ  € ð ”:”?Ô'¨Ô8ˆð Œ{ñ 	@Õ<¸XÑFÔFñ 	@Ø"×5Ò5Ñ7Ô7‰KˆE�4Ý˜DŸMšM™OœO¨TÑ2Ô2ˆEÝ# H¨dÑ3Ô3ˆMØ�uˆ}ˆ}å! -µ%´,Å
Ð1KÑLÔLð Ý(ØS½dÀ=Ñ>QÔ>QÐSÐSñô ð ð 3Ð2Ð2Ð2Ð2Ð2à$�}¨°%À}ÐUÑUÔUÐUÝ)­$¨}Ñ*=Ô*=Ñ>Ô>ð @Ý"'¤.Ô"D×"VÒ"VØ”IÔ'¨ñ#ô #�õ 1Ô7¸¸ÐSUÐVÑVÔVÐVÝØÝ”Ô2ÔCñô ð @õ 1Ô7¸¸}ÐQSÐTÑTÔTÐTõ ˜mÑ,Ô,ð @Ý&Ô,¨R°Ñ?Ô?Ð?à”ð 	& ¤× =Ò =Ñ ?Ô ?ð 	&Ý%Ð%ð ”iÔ+°"´)Ô2HÐIÐIˆð	/õ ,0°´Ô0@À%Ñ+HÔ+HÐ(Ð(øÝð 	/ð 	/ð 	/Ý%¨3Ð.øøøøð	/øøøð (Ð/Ý%Ð%å"Ð#?Ñ@Ô@ð 	&Ý%Ð%åÐ:Ñ;Ô;ð 	&Ý%Ð%ð		Ý Ð!=¸tÑDÔDˆJˆJøÝð 	ð 	ð 	Ý$ÝØàg�Ð9Ñ:Ô:ÔCÐgÐgÐ`dÐgÐgÐgððñ ô ð ð ð ð	øøøõ ! ¤¨dÑ3Ô3ˆõ " *Ñ-Ô-ð 	à-Ð-Ð-Ð-Ð-Ð-à"�?Ø�d ;½¸ZÑ8HÔ8Hðñ ô ð õ 	ØŒK×"Ò"¥9Ô#4µ\Ô5IÐPTÐ#UÑ#UÔ#UÑVÔVñ	
ô 	
ð 	
õ Ô$ R¨°[ÑAÔAÐAs*   ÇG. Ç.
HÇ8H È HÈ>I É;JÊJc                 ót   — | j         �t          j        || j         ¦  «        S |                      |dg i ¦  «        S )NÚdim)ry   r7   r×   rÓ   rÃ   s     rY   Úmethod_attr_ndimzTensorVariable.method_attr_ndimð  s9   € ØŒ9Ð Ý"Ô(¨¨T¬YÑ7Ô7Ð7à×#Ò# B¨¨r°2Ñ6Ô6Ð6r[   c                 óH   — | j         �t          j        || j         ¦  «        S d S rÆ   )rp   r7   r×   rÃ   s     rY   Úmethod_attr_dtypez TensorVariable.method_attr_dtypeö  s&   € ð Œ:Ð!Ý"Ô(¨¨T¬ZÑ8Ô8Ð8Øˆtr[   c                 óH   — | j         �t          j        || j         ¦  «        S d S rÆ   )rw   r7   r×   rÃ   s     rY   Úmethod_attr_devicez!TensorVariable.method_attr_deviceý  ó&   € ð Œ;Ð"Ý"Ô(¨¨T¬[Ñ9Ô9Ð9Øˆtr[   c                 óH   — | j         �t          j        || j         ¦  «        S d S rÆ   )rx   r7   r×   rÃ   s     rY   Úmethod_attr_layoutz!TensorVariable.method_attr_layout  r&  r[   c                 óZ   — | j         �#t          j        || j         j        dk    ¦  «        S d S )NÚcuda)rw   r7   r×   r¤   rÃ   s     rY   Úmethod_attr_is_cudaz"TensorVariable.method_attr_is_cuda  s.   € ð Œ;Ð"Ý"Ô(¨¨T¬[Ô-=ÀÒ-GÑHÔHÐHØˆtr[   c                 ó    ‡— |                       ¦   «         r"ˆfd„| j        D ¦   «         }t          |¦  «        S |                      ‰dg i ¦  «        S )Nc                 ó:   •— g | ]}t          j        ‰|¦  «        ‘ŒS r˜   )r7   r×   )rç   rî   r�   s     €rY   ú
<listcomp>z4TensorVariable.method_attr_shape.<locals>.<listcomp>  s3   ø€ ð ,ð ,ð ,Ø12•Ô% b¨!Ñ,Ô,ð,ð ,ð ,r[   rz   )Ú
valid_sizerz   r;   rÓ   )r�   r�   Úsizess    ` rY   Úmethod_attr_shapez TensorVariable.method_attr_shape  si   ø€ Ø�?Š?ÑÔð 	8ð,ð ,ð ,ð ,Ø6:´ið,ñ ,ô ,ˆEõ   Ñ&Ô&Ð&à×#Ò# B¨°°BÑ7Ô7Ð7r[   c                 óH   — | j         �t          j        || j         ¦  «        S d S rÆ   )r|   r7   r×   rÃ   s     rY   Úmethod_attr_requires_gradz(TensorVariable.method_attr_requires_grad  s(   € ð ÔÐ)Ý"Ô(¨¨TÔ-?Ñ@Ô@Ð@Øˆtr[   c                 óH   — | j         �t          j        || j         ¦  «        S d S rÆ   )r}   r7   r×   rÃ   s     rY   Úmethod_attr_is_quantizedz'TensorVariable.method_attr_is_quantized"  s(   € ð ÔÐ(Ý"Ô(¨¨TÔ->Ñ?Ô?Ð?Øˆtr[   c                 óH   — | j         �t          j        || j         ¦  «        S d S rÆ   )r€   r7   r×   rÃ   s     rY   Úmethod_attr_is_sparsez$TensorVariable.method_attr_is_sparse)  ó&   € ð Œ>Ð%Ý"Ô(¨¨T¬^Ñ<Ô<Ð<Øˆtr[   c                 óH   — | j         �t          j        || j         ¦  «        S d S rÆ   )r   r7   r×   rÃ   s     rY   Úmethod_attr_is_nestedz$TensorVariable.method_attr_is_nested0  r8  r[   c                 ó4   — t          dd| › d�dg ¬¦  «         d S )Nz'Tensor.retain_grad() with AOTDispatcherúvar_getattr z retain_gradz8`Tensor.retain_grad()` does not work with AOTDispatcher.r½   ©r    rÃ   s     rY   Úmethod_attr_retain_gradz&TensorVariable.method_attr_retain_grad7  s:   € ÝØ=Ø5 4Ð5Ð5Ð5ØRØð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r[   c                 óð   — |j         j                             | d¦  «        r |j         j                             | d¦  «        S t	          | j        t          ¦  «        r| j        st          j	        d ¦  «        S d S )NÚgrad)
r´   Úside_effectsÚhas_pending_mutation_of_attrÚ	load_attrrT   Úmutation_typer5   r”   r9   rØ   rÃ   s     rY   Úmethod_attr_gradzTensorVariable.method_attr_grad?  sv   € ð Œ9Ô!×>Ò>¸tÀVÑLÔLð 	BØ”9Ô)×3Ò3°D¸&ÑAÔAÐAå�tÔ)Õ+?Ñ@Ô@ð	1àÔ$ð	1õ $Ô*¨4Ñ0Ô0Ð0àˆtr[   c                 ó~   — t          j        t          j        j        j        ¦  «                             || gi ¦  «        S rÆ   )r   ÚTorchInGraphFunctionVariablerP   re   Ú	_autogradÚ_get_data_attrrÞ   rÃ   s     rY   Úmethod_attr_datazTensorVariable.method_attr_dataL  s5   € ÝÔ5ÝŒHÔÔ-ñ
ô 
ç
Š-˜˜T˜F BÑ
'Ô
'ð	(r[   c                 ó€   — | j         rt          dd| › d�dg ¬¦  «         d S t          j                             d ¦  «        S )NzTensor with grad_fn()r<  z grad_fnz@Dynamo does not support tracing tensors with a grad_fn directly.r½   )r”   r    r   r9   rØ   rÃ   s     rY   Úmethod_attr_grad_fnz"TensorVariable.method_attr_grad_fnQ  s`   € ð Ôð 	;ÝØ/Ø5 tÐ5Ð5Ð5Ø^Øð	ñ ô ð ð ð õ Ô-×4Ò4°TÑ:Ô:Ð:r[   c                 ób   — ddl m} t          j        |¦  «                             || gi ¦  «        S )Nr   )Ú_tensor_version)Útensor_version_oprN  r   rG  rÞ   )r�   r�   rN  s      rY   Úmethod_attr__versionz#TensorVariable.method_attr__version^  s@   € Ø7Ð7Ð7Ð7Ð7Ð7åÔ5°oÑFÔF×TÒTØ��˜ñ
ô 
ð 	
r[   c                 óê  — ddl m} |t          v rt          j        d¦  «        S 	 t          j        |t          ¦  «                             || t          j        ||¦  «        gi ¦  «        }t          ||¦  «         }n# t          t          f$ r d}Y nw xY w| j        rEt          | j                             t          j        t"          j        |¬¦  «        ¦  «        ¦  «         t          j        ||¦  «        S )Nr4   rþ   TFr  )Ú rÿ   Úall_tensor_attrsr9   rØ   r7   r×   rV   rÞ   rT   r  r   r‰   r&   r  r  r  r%   r  )r�   r�   rõ   rÿ   ÚvarÚret_vals         rY   Úcall_obj_hasattrzTensorVariable.call_obj_hasattre  s  € ð 	&Ð%Ð%Ð%Ð%Ð%ð Õ#Ð#Ð#Ý#Ô*¨4Ñ0Ô0Ð0ð	Ý!Ô'¨­GÑ4Ô4×BÒBØ�T�?Ô0°°TÑ:Ô:Ð;¸Rñô ˆCõ
 % S¨/Ñ:Ô:Ð:ˆGˆGøÝÕ 6Ð7ð 	ð 	ð 	ØˆGˆGˆGð	øøøð Œ;ð 	ÝØ”×&Ò&ÝÔ%¥lÔ&:ÀÐFÑFÔFñô ñô ð õ Ô$ R¨Ñ1Ô1Ð1s   ¥AA; Á;BÂBc                 ó  ‡ ‡‡— ‰                       ‰¦  «        rb‰‰                      ¦   «         v r#t          dd‰ › d‰› �d‰› d�d‰› d�g¬¦  «         n)‰‰                      ¦   «         v rt	          d	‰› d
�¦  «        ‚‰dk    r't          j        ‰‰                      ¦   «         ¦  «        S t          ‰ d‰› �d ¦  «        }|� |‰¦  «        nd }|�~‰ j	        rw‰ j	         
                    ¦   «         r^‰dvr|                     ¦   «         sFt          ‰                      t          j        ¦  «        ¦  «         t!          ‰ j	        ‰¦  «        |_	        ‰ j	        �èt#          t$          j        j        ‰¦  «        rÉt          t$          j        j        ‰¦  «        }t#          |d¦  «        ršt#          ||                     ¦   «         d         ¦  «        rrt$          j        j        t          ||                     ¦   «         d         ¦  «        j        v r4t2          j                             t!          ‰ j	        ‰¦  «        d¬¦  «        S |€"‰dk    rdt
          d z  fˆˆ ˆfd„} |¦   «         }|€‰                      ‰‰¦  «        }|€t:          ‚|S )NzStrict mode banned opr<  ú zGetattr invocation 'z"' in strict mode is not supported.zRemove `zj` from the list of banned ops by setting `torch._dynamo.config._autograd_backward_strict_mode_banned_ops`.r½   zUnknown property z] during speculating backward, dynamo will insert contiguous call ahead and speculate it againrœ   Úmethod_attr_)r@  r|   Ú	overloadsr   z9Getting an inplace view on a graph input is not supported)r‰   Úmsgr@  rK   c                  óN  •— ddl m}  ddlm} t                               ‰d ¦  «        }|€d S t          |¦  «        t          j        urd S | 	                    ‰ 
                    ¦   «         ‰¦  «        }‰j        �! | ‰|t          ‰j        ‰¦  «        ¬¦  «        S  | ‰|¬¦  «        S )Nr4   r÷   rþ   )r�   rv   r‰   ©r�   rv   )r£   rø   r  rÿ   rS  r¦   r¤   ÚtypesÚGetSetDescriptorTypeÚcreate_getattr_proxyrÈ   r‰   r'   )rø   rÿ   Ústatic_attrrv   rõ   r�   r�   s       €€€rY   Útry_generic_attr_handlingz=TensorVariable.var_getattr.<locals>.try_generic_attr_handling¿  sÌ   ø€ Ø2Ð2Ð2Ð2Ð2Ð2Ø1Ð1Ð1Ð1Ð1Ð1å.×2Ò2°4¸Ñ>Ô>�ØÐ&Ø˜4õ ˜Ñ$Ô$­EÔ,FÐFÐFØ˜4à'×<Ò<¸T¿]º]¹_¼_ÈdÑSÔS�Ø”;Ð*Ø(˜=Ø Uµ:¸d¼kÈ4Ñ3PÔ3Pðñ ô ð ð )˜=¨B°eÐ<Ñ<Ô<Ð<r[   )Úis_strict_modeÚ_strict_mode_banned_opsr    Ú#_strict_mode_conditional_banned_opsr!   r7   r×   rË   rV   r‰   r
  Úis_python_constantr&   r  r%   Ú
TYPE_MATCHr'   rS   rP   ÚopsÚatenrZ  ÚTagÚinplace_viewÚtagsr   r  ÚDelayGraphBreakVariabler  r  )r�   r�   rõ   ÚhandlerÚresultÚfnrb  s   ```    rY   Úvar_getattrzTensorVariable.var_getattr„  sê  øøø€ ð ×Ò˜rÑ"Ô"ð 	Ø�t×3Ò3Ñ5Ô5Ð5Ð5ÝØ3Ø8¨4Ð8Ð8°$Ð8Ð8Ø _°tÐ _Ð _Ð _ðd 4ð dð dð dðð	ñ ô ð ð ð ˜×AÒAÑCÔCÐCÐCÝ:ð L¨ð  Lð  Lð  Lñô ð ð �;ÒÐÝ"Ô(¨¨T×-=Ò-=Ñ-?Ô-?Ñ@Ô@Ð@å˜$Ð 5¨tÐ 5Ð 5°tÑ<Ô<ˆØ 'Ð 3��˜‘”�¸ˆð ÐØ”ð à”×-Ò-Ñ/Ô/ð ð Ð5Ð5Ð5¸&×:SÒ:SÑ:UÔ:UÐ5õ ˜$Ÿ/š/­,Ô*AÑBÔBÑCÔCÐCÝ& t¤{°DÑ9Ô9ˆFŒMð Œ;Ð"¥w­u¬y¬~¸tÑ'DÔ'DÐ"Ý�œœ¨Ñ.Ô.ˆBå˜˜KÑ(Ô(ð	å˜B §¢¡¤¨qÔ 1Ñ2Ô2ð	õ ”IÔ*­g°b¸"¿,º,¹.¼.ÈÔ:KÑ.LÔ.LÔ.QÐQÐQõ !”~×=Ò=Ý% d¤k°4Ñ8Ô8ØSð >ñ ô ð ð ˆ>˜d fšn˜nð=­ÀÑ/Eð =ð =ð =ð =ð =ð =ð =ð =ð2 /Ð.Ñ0Ô0ˆFàˆ>Ø×)Ò)¨"¨dÑ3Ô3ˆFàˆ>Ý%Ð%Øˆr[   Úidxesc                 ó"  ‡ ‡‡‡	— ddl mŠ	 ddlmŠ ‰                      ¦   «         rt          ‰ j        ¦  «        }n`‰                      ‰dg i ¦  «        }t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚t          |j        ¦  «        }|dk    rt          d¦  «        ‚‰                      ¦   «         r‰ j        d         }n¸‰                      ‰dt          j        ‰d¦  «        gi ¦  «        }t          |t          ¦  «        s3|                     ¦   «         st          dt          |¦  «        › �¦  «        ‚t          |t          ¦  «        r|                     ‰j        ¦  «        }n|                     ¦   «         }|€t)          |¦  «        }n6t          |¦  «        |k    r#t          d	|› d
t          |¦  «        › d�¦  «        ‚t          ‰ ‰¦  «        r ˆ ˆˆ	fd„|D ¦   «         }ˆˆ ˆfd„|D ¦   «         S ˆ ˆˆ	fd„|D ¦   «         S )Nr4   rÜ   rB   rz   zExpected SizeVariable, got r   zCan't unpack scalar tensors.z1Expected SymNodeVariable or python constant, got zCan't unpack a tensor of z rows into a tuple of z
 elements.c                 óf   •— g | ]-} ‰t           ‰‰                     ¦   «         |         ¬ ¦  «        ‘Œ.S ©©rž   r�   rv   )ru   rÈ   ©rç   Úir�   r�   rÝ   s     €€€rY   r.  z6TensorVariable.unpack_var_sequence.<locals>.<listcomp>  sQ   ø€ ð ð ð ð ð "Ð!Ý-°"¸D¿MºM¹O¼OÈAÔ<Nðñ ô ðð ð r[   c                 óJ   •— g | ]} ‰j         ‰|‰j        ‰j        ¦  «        ‘Œ S r˜   )Úfrom_tensor_varr�   r‰   )rç   r«   rC   r�   r�   s     €€€rY   r.  z6TensorVariable.unpack_var_sequence.<locals>.<listcomp>  sH   ø€ ð ð ð ð ð =Ð,Ô<Ø˜˜4œ?¨D¬Kñô ðð ð r[   c                 óv   •— g | ]5} ‰t          ‰¦  «        ‰‰                     ¦   «         |         ¬ ¦  «        ‘Œ6S ru  )r¤   rÈ   rw  s     €€€rY   r.  z6TensorVariable.unpack_var_sequence.<locals>.<listcomp>  sO   ø€ ð 
ð 
ð 
àð Ð­¨d©¬¸À$Ç-Â-Á/Ä/ÐRSÔBTÐUÑUÔUð
ð 
ð 
r[   )r£   rÝ   Útorch_functionrC   r/  Úlenrz   rÓ   rT   r;   r  r¤   r§   r7   r×   rÔ   rf  Úevaluate_exprr´   Úas_python_constantÚrange)
r�   r�   rr  Úsize_lenÚsize_varÚlengthÚ
dyn_lengthÚ	base_varsrC   rÝ   s
   ``      @@rY   Úunpack_var_sequencez"TensorVariable.unpack_var_sequenceá  sœ  øøøø€ ð 	/Ð.Ð.Ð.Ð.Ð.Ø@Ð@Ð@Ð@Ð@Ð@à�?Š?ÑÔð 	+Ý˜4œ9‘~”~ˆHˆHà×'Ò'¨¨F°B¸Ñ;Ô;ˆHÝ˜h­Ñ5Ô5ð UÝ$Ð%SÅ4ÈÁ>Ä>Ð%SÐ%SÑTÔTÐTÝ˜8œ>Ñ*Ô*ˆHà�qŠ=ˆ=Ý Ð!?Ñ@Ô@Ð@à�?Š?ÑÔð 	9Ø”Y˜q”\ˆFˆFà×)Ò)Ø�F�_Ô2°2°qÑ9Ô9Ð:¸Bñô ˆJõ ˜:¥Ñ7Ô7ðà×0Ò0Ñ2Ô2ðõ %ØZÍÈZÑHXÔHXÐZÐZñô ð õ ˜*¥oÑ6Ô6ð 9Ø#×1Ò1°"´)Ñ<Ô<��à#×6Ò6Ñ8Ô8�àˆ=Ý˜&‘M”MˆEˆEå�5‰zŒz˜VÒ#Ð#Ý$Ød°ÐdÐdÍcÐRWÉjÌjÐdÐdÐdñô ð õ
 �dÐ8Ñ9Ô9ð 	ðð ð ð ð ð ð ð	ñ ô ˆIðð ð ð ð ð ð #ð	ñ ô ð ð
ð 
ð 
ð 
ð 
ð 
àð
ñ 
ô 
ð 	
r[   Útree_map_fnrA   Úmap_fnÚrestÚtree_map_kwargsc                 ó6   — |                      || g|¢i ¦  «        S rÆ   )rÞ   )r�   r�   r‡  rˆ  r‰  rŠ  s         rY   Úcall_tree_mapzTensorVariable.call_tree_map"  s"   € ð ×#Ò# B¨¨°¨°rÑ:Ô:Ð:r[   c                 ó   — | j         d uS rÆ   )r“   r’   s    rY   r/  zTensorVariable.valid_size,  s   € ØŒz Ð%Ð%r[   c                 ó<   — | j         €t          d¦  «        ‚| j         S )Nz%accessing None size in TensorVariable)r“   r  r’   s    rY   rz   zTensorVariable.size/  s!   € àŒ:ÐÝ Ð!HÑIÔIÐIØŒzÐr[   c                 ó.   — t           j        j        j        S rÆ   )rP   rQ   r   Ú)_autograd_backward_strict_mode_banned_opsr’   s    rY   rd  z&TensorVariable._strict_mode_banned_ops5  s   € ÝŒ}Ô#ÔMÐMr[   c                 ó.   — t           j        j        j        S rÆ   )rP   rQ   r   Ú5_autograd_backward_strict_mode_conditional_banned_opsr’   s    rY   re  z2TensorVariable._strict_mode_conditional_banned_ops8  s   € åŒMÔ ÔVð	
r[   Úkeyc           
      ó  — ddl m}m} ddlm}m} |                      |¦  «        r/d|                      ¦   «         v rt          dd| › d|› �dg ¬	¦  «         i }t           
                    dd ¦  «        }|�‚ ||| |f|¦  «        rs| j        r7  ||t          t          | j        d
¦  «        d¦  «        ¦  «        |¦  «        }	n%|                     |t          j        j        ¦  «        }	 |||	| |f|¦  «        S |                      ||¦  «        S )Nr4   ©ÚSourcelessBuilderÚVariableBuilder©Úcan_dispatch_torch_functionÚdispatch_torch_functionÚ__getitem__z-Illegal __getitem__ invocation in strict modezmp_subscript_impl rX  zHDynamo currently does not support __getitem__ invocation in strict mode.r½   rœ   )r£   r–  r—  r|  r™  rš  rc  rd  r    rS  r¦   r‰   r'   rØ   rP   rU   r›  Úmethod___getitem__)
r�   r�   r“  r–  r—  r™  rš  Úempty_kwargsra  Úfunc_vars
             rY   Úmp_subscript_implz TensorVariable.mp_subscript_impl=  sr  € ð 	@Ð?Ð?Ð?Ð?Ð?Ð?Ð?ØXÐXÐXÐXÐXÐXÐXÐXà×Ò˜rÑ"Ô"ð 	 }¸×8TÒ8TÑ8VÔ8VÐ'VÐ'VÝØGØ9¨TÐ9Ð9°CÐ9Ð9ð-àðñ ô ð ð 46ˆÝ&×*Ò*¨=¸$Ñ?Ô?ˆØÐ"Ð'BÐ'BØ��s�˜\ñ(
ô (
Ð"ð Œ{ð Rð˜?˜?ØÝ�z¨$¬+°{ÑCÔCÀ]ÑSÔSñô ð ñô ��ð
 -×3Ò3°B½¼Ô8PÑQÔQ�Ø*Ð*¨2¨x¸$À¸ÀlÑSÔSÐSà×&Ò& r¨3Ñ/Ô/Ð/r[   rý   zdict[str, VariableTracker]c                 óB	  — ddl m}m} ddlm}m} |                      |¦  «        r9||                      ¦   «         v r#t          dd| › d|› d|› d|› �d|› d�g ¬	¦  «         |d
k    rt          dd| › d�ddg¬	¦  «         t           
                    |d ¦  «        }	|	d u}
 ||t          | gt          |¦  «        z   ¦  «        |¦  «        rš|
r˜| j        r7  ||t          t          | j        d¦  «        |¦  «        ¦  «        |	¦  «        }n.|                     |t!          t"          j        |¦  «        ¦  «        } |||t          | gt          |¦  «        z   ¦  «        |¦  «        S 	 |dk    rn|s|r$t"          j        j                             d¦  «        ‚ddlm} ddl m}  |||j                             d||                      ¦   «         fi ¦  «        ¦  «        S |dk    r+t          dd|› d|›d|›d�ddgt8          j        ¢¬	¦  «         n4|dk    r.d|v r*t          d d|› d|›d|›d�dd!gt8          j        ¢¬	¦  «         	 t!          | d"|› �¦  «        }	 d#„ |                     ¦   «         D ¦   «         } ||g|¢R i |¤Ž}|r|S nK# t>          $ r.}t          d$d| › d|› d|› d|› �d%|› d&�g |¬'¦  «         Y d }~nd }~ww xY w# t@          $ r Y nw xY w| j!        j"        j#         
                    d(¦  «        }|�tI          |¦  «        n| j%        }tM          ||¦  «        s7t          d)d| › d|› d|› d|› �d*|› d+|j'        › d,�g t8          j        ¢¬	¦  «         ddl m} 	  |j        j        d-|gtQ          | g|¢|¦  «        ¢R Ž }nG# tR          $ r:}t          d.d| › d|› d|› d|› �d/|› d0�g t8          j        ¢|¬'¦  «         Y d }~nd }~ww xY wdd1lm*} |j+        rZ|j+        j,        rN||v rJt[          d2„ t]          || /                    ¦   «         ¦  «        D ¦   «         ¦  «        r|j+        j,        j0        ntb          }|  2                    ¦   «         } |¦   «         5   |||¦  «        }d d d ¦  «         n# 1 swxY w Y   |  3                    ||t[          d3„ |D ¦   «         ¦  «        ¦  «         |S )4Nr4   r•  r˜  z(Illegal method invocation in strict modeúcall_method rX  z/Dynamo currently does not support this method (z) invocation in strict mode.r½   Ú__deepcopy__z#Attempted to copy.deepcopy a tensorzcopy.deepcopy(rd   z3Dynamo does not support copy.deepcopy() on tensors.zAAvoid calling copy.deepcopy() on tensors inside compiled regions.rœ   Úwaitz2`wait` and `wait_tensor` do not take any argumentsr   )Úwait_tensorr÷   rÞ   Úrandom_zTensor.random_ opzTensor.ú(args=ú	, kwargs=z This is currently not supported.z'Use the out-of-place version of this opÚuniform_Úfromz-Tensor.uniform_ op called with `from` keywordzAvoid using the `from` keyword.Úmethod_c                 ó>   — i | ]\  }}||                      ¦   «         “ŒS r˜   )Úrealize)rç   rª   r«   s      rY   ú
<dictcomp>z.TensorVariable.call_method.<locals>.<dictcomp>Ç  s&   € Ð"MÐ"MÐ"M±d°a¸ 1 a§i¢i¡k¤kÐ"MÐ"MÐ"Mr[   zUnhandled args for methodz6Dynamo encountered an error while calling the method `ú`.)r¾   r¿   rÀ   rÁ   Úfrom_excr¢   zUnhandled tensor methodzTensor method `z` is not defined on z9 and does not have an explicit handler in TensorVariable.rÓ   z/Unsupported argument type in tensor method callzFDynamo could not create a proxy for an argument in the call to Tensor.zX(). This usually means an unsupported type was passed as an argument to a tensor method.)Ú"methods_consuming_unbacked_scalarsc              3   óV   K  — | ]$}t          |t          ¦  «        o
|j        d k    V — Œ%dS )r   N)rT   ru   ry   )rç   r«   s     rY   ré   z-TensorVariable.call_method.<locals>.<genexpr>  sK   è è € ð ð àõ ˜1�nÑ-Ô-Ð=°!´&¸A²+ðð ð ð ð ð r[   c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S rÆ   ©rÎ   )rç   Úargs     rY   ré   z-TensorVariable.call_method.<locals>.<genexpr>  s*   è è € Ð#DÐ#D¸ C§M¢M¡O¤OÐ#DÐ#DÐ#DÐ#DÐ#DÐ#Dr[   )4r£   r–  r—  r|  r™  rš  rc  rd  r    rS  r¦   rn   Úlistr‰   r'   rØ   rV   rP   rU   rQ   r  ÚInternalTorchDynamoErrorÚ)torch.distributed._functional_collectivesr¤  rø   r´   rà   rÈ   r   rÂ   r§   Ú	TypeErrorr  rv   r�   r¥   r¤   r�   rS   rW   r0   r  r°  r  Ú	shape_envÚanyr   ÚvaluesÚignore_fresh_unbacked_symbolsr   r°   r·   )r�   r�   rõ   rý   r•   r–  r—  r™  rš  ra  Úis_base_tensor_methodrž  r¤  rø   Úhandler_methodÚrealized_kwargsro  Úer¢   Ú
check_typerv   r°  Úctxr±   s                           rY   rÓ   zTensorVariable.call_method_  sˆ  € ð 	@Ð?Ð?Ð?Ð?Ð?Ð?Ð?ØXÐXÐXÐXÐXÐXÐXÐXà×Ò˜rÑ"Ô"ð 	 t¨t×/KÒ/KÑ/MÔ/MÐ'MÐ'MÝØBØD tÐDÐD¨dÐDÐD°TÐDÐD¸FÐDÐDð7Øð7ð 7ð 7àðñ ô ð ð �>Ò!Ð!ÝØ=Ø0¨Ð0Ð0Ð0ØQàWðð	ñ ô ð õ '×*Ò*¨4°Ñ6Ô6ˆØ +°4Ð 7Ðð (Ð'¨­E°4°&½4À¹:¼:Ñ2EÑ,FÔ,FÈÑOÔOð	à%ð	ð Œ{ð Uð˜?˜?Ø�
¥:¨d¬k¸;Ñ#GÔ#GÈÑNÔNñô àñô ��ð -×3Ò3°B½ÅÄÈdÑ8SÔ8SÑTÔT�à*Ð*Ø�H�e T F­T°$©Z¬ZÑ$7Ñ8Ô8¸&ñô ð ð	ð �6Š>ˆ>Øð �vð Ý”mÔ'×@Ò@ØHñô ð ð NÐMÐMÐMÐMÐMà.Ð.Ð.Ð.Ð.Ð.à �=ØØ”	×&Ò&Ø# [°4·=²=±?´?Ð2DÀbñô ñô ð ð �9ÒÐÝØ+Ø< $Ð<Ð<¨Ð<Ð<°&Ð<Ð<Ð<Ø>à=ðå&Ô2ðð	ñ ô ð ð ð �ZÒÐ F¨fÐ$4Ð$4ÝØGØ< $Ð<Ð<¨Ð<Ð<°&Ð<Ð<Ð<Ø>à5ðå&Ô2ðð	ñ ô ð ð	Ý$ TÐ+;°TÐ+;Ð+;Ñ<Ô<ˆNðà"MÐ"M¸f¿lºl¹n¼nÐ"MÑ"MÔ"M�Ø'˜¨ÐE¨TÐEÐEÐE°_ÐEÐE�Øð "Ø!�Mð"øåð ð ð ÝØ7ØH¨4ÐHÐH°$ÐHÐH¸ÐHÐHÀÐHÐHð!,Ø#'ð!,ð !,ð !,àØðñ ô ð ð ð ð ð ð øøøøðøøøøõ ð 	ð 	ð 	ØˆDð	øøøð, œ
œÔ,×0Ò0°ÑAÔAˆà#0Ð#<�D�ÑÔÐÀ$Ä/ð 	õ �z 4Ñ(Ô(ð 	ÝØ1ØD tÐDÐD¨dÐDÐD°TÐDÐD¸FÐDÐDð-¨dð -ð -ØÔ&ð-ð -ð -ð 7Õ)Ô5Ð6ðñ ô ð ð 	+Ð*Ð*Ð*Ð*Ð*ð	Ø*�B”IÔ*ØØðõ # D =¨4 =°&Ñ9Ô9ðð ð ˆEˆEøõ
 #ð 		ð 		ð 		ÝØIØD tÐDÐD¨dÐDÐD°TÐDÐD¸FÐDÐDð6Ø!ð6ð 6ð 6ð 7Õ)Ô5Ð6Øðñ ô ð ð ð ð ð ð øøøøð		øøøð, 	>Ð=Ð=Ð=Ð=Ð=ð Œ|ðà”Ô&ðð Ð:Ð:Ð:Ýð ð å˜t V§]¢]¡_¤_Ñ5Ô5ðñ ô ñ ô ð ;ð ŒLÔ"Ô@Ð@õ ð 	ð ×/Ò/Ñ1Ô1ˆØˆS‰UŒUð 	.ð 	.Ø"�] 2 uÑ-Ô-ˆFð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.à×&Ò&Ø�¥Ð#DÐ#D¸tÐ#DÑ#DÔ#DÑ DÔ Dñ	
ô 	
ð 	
ð ˆsT   È<J: É-I? É?
J7Ê	$J2Ê2J7Ê:
KËKÍ%M: Í:
N>Î0N9Î9N>ÑQ&Ñ&Q*Ñ-Q*c                 ó$   —  | j         dg|¢R i |¤ŽS )Nrz   ©Ú_method_size_stride©r�   r�   rý   r•   s       rY   Úmethod_sizezTensorVariable.method_size  s'   € ð (ˆtÔ'¨Ð@°Ð@Ð@Ð@¸Ð@Ð@Ð@r[   c                 ó$   —  | j         dg|¢R i |¤ŽS )Nr{   rÄ  rÆ  s       rY   Úmethod_stridezTensorVariable.method_stride   s'   € ð (ˆtÔ'¨ÐB°4ÐBÐBÐB¸6ÐBÐBÐBr[   r   c                 óÒ  — t          |¦  «        }dt          t                   dt          dt          fd„}|dk    r|nt          j        }|dk    rt          | |¦  «        }n$|dk    r|                      ¦   «         r| j        }nd }|�'|€ ||¦  «        S t	          j        ||         ¦  «        S | j	        j
        j                             d¦  «        x}�•|€J t          ||¦  «        ¦   «         }t          |¦  «        s" |t          d„ |D ¦   «         ¦  «        ¦  «        S nI t          ||¦  «        |¦  «        }t          |¦  «        s!t	          j        t          |¦  «        ¦  «        S d S )Nrî   ÚoptionsrK   c                 ó6   ‡— t          ˆfd„| D ¦   «         fi ‰¤ŽS )Nc                 ó4   •— g | ]}t          j        |fi ‰¤Ž‘ŒS r˜   )r9   rØ   )rç   ÚyrË  s     €rY   r.  zXTensorVariable._method_size_stride.<locals>.make_const_size_variable.<locals>.<listcomp>,  s-   ø€ ÐBÐBÐB¸1Õ!Ô(¨Ð6Ð6¨gÐ6Ð6ÐBÐBÐBr[   )r;   )rî   rË  s    `rY   Úmake_const_size_variablezDTensorVariable._method_size_stride.<locals>.make_const_size_variable*  s9   ø€ ÝØBÐBÐBÐBÀÐBÑBÔBðð ØFMðð ð r[   rz   r¢   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S rÆ   ©r`   ©rç   Úrs     rY   ré   z5TensorVariable._method_size_stride.<locals>.<genexpr>J  s(   è è € Ð,DÐ,D¸­S°©V¬VÐ,DÐ,DÐ,DÐ,DÐ,DÐ,Dr[   )r-   r   r   r;   r9   rØ   rV   r/  rz   rv   r�   r¥   r¦   r   rn   r`   )r�   rõ   r   rÏ  ÚRetVariablerÓ  ÚfakeÚfake_rs           rY   rÅ  z"TensorVariable._method_size_stride%  sŽ  € õ ˜3ÑÔˆð	­µ¬ð 	Å#ð 	Í,ð 	ð 	ð 	ð 	ð )-°ª¨Ð$Ð$Õ<LÔ<Sð 	ð �6Š>ˆ>Ý˜˜dÑ#Ô#ˆAˆAØ�VŠ^ˆ^ §¢Ñ 1Ô 1ˆ^Ø”	ˆAˆAàˆAàˆ=Øˆ{Ø"�{ 1‘~”~Ð%å'Ô.¨q°¬vÑ6Ô6Ð6ð ”J”OÔ(×,Ò,¨_Ñ=Ô=Ð=ˆDÐJØˆ{Ø,�  tÑ,Ô,Ñ.Ô.�Ý'¨Ñ/Ô/ð Fð '˜;¥uÐ,DÐ,D¸VÐ,DÑ,DÔ,DÑ'DÔ'DÑEÔEÐEðFð
 -�  tÑ,Ô,¨SÑ1Ô1�Ý'¨Ñ/Ô/ð @Ý+Ô2µ3°v±;´;Ñ?Ô?Ð?Øˆtr[   c                 óR  — |                       ¦   «         r't          j        |t          | j        ¦  «        ¦  «        S | j        j        j                             d¦  «        x}�E| 	                    ¦   «         }t          |¦  «        s"t          j        |t          |¦  «        ¦  «        S d S r¹   )r/  r7   r×   r/   rz   rv   r�   r¥   r¦   Únumelr   r`   )r�   r�   rÕ  rÖ  s       rY   Úmethod_numelzTensorVariable.method_numelQ  s�   € Ø�?Š?ÑÔð 	AÝ"Ô(¨­W°T´YÑ-?Ô-?Ñ@Ô@Ð@ð ”J”OÔ(×,Ò,¨_Ñ=Ô=Ð=ˆDÐJØ—Z’Z‘\”\ˆFÝ# FÑ+Ô+ð >Ý&Ô,¨Rµ°V±´Ñ=Ô=Ð=Øˆtr[   c                 óH   — | j         �t          j        || j         ¦  «        S d S rÆ   )ry   r7   r×   rÃ   s     rY   Ú
method_dimzTensorVariable.method_dim^  s$   € ØŒ9Ð Ý"Ô(¨¨T¬YÑ7Ô7Ð7Øˆtr[   c                 óR   — | j         �t          j        || j         j        ¦  «        S d S rÆ   )rp   r7   r×   Úis_floating_pointrÃ   s     rY   Úmethod_is_floating_pointz'TensorVariable.method_is_floating_pointe  s)   € ð Œ:Ð!Ý"Ô(¨¨T¬ZÔ-IÑJÔJÐJØˆtr[   c                 ó  — t           j        r+t          dddg t          j        ¢t          j        ¢¬¦  «         | j        j        j         	                    d¦  «        x}�'t          j        ||                     ¦   «         ¦  «        S d S )Nz0Encountered tensor.is_inference() during tracingrR  z&tensor.is_inference() is not supportedr½   r¢   )r   Ú"fake_tensor_disable_inference_moder    r   ÚFUNDAMENTALÚINFERENCE_MODErv   r�   r¥   r¦   r7   r×   Úis_inference©r�   r�   rÕ  s      rY   Úmethod_is_inferencez"TensorVariable.method_is_inferencel  s�   € õ Ô4ð 		ÝØJØØDðÝ&Ô2ðå&Ô5ðð	ñ ô ð ð ”J”OÔ(×,Ò,¨_Ñ=Ô=Ð=ˆDÐJÝ"Ô(¨¨T×->Ò->Ñ-@Ô-@ÑAÔAÐAØˆtr[   c                 óR   — | j         �t          j        || j         j        ¦  «        S d S rÆ   )rp   r7   r×   Ú
is_complexrÃ   s     rY   Úmethod_is_complexz TensorVariable.method_is_complex}  s)   € ð Œ:Ð!Ý"Ô(¨¨T¬ZÔ-BÑCÔCÐCØˆtr[   rí   c                 ó.  — |�|                      ¦   «         nt          j        }| j        �t	          j        ||| j        v ¦  «        S | j        j        j         	                    d¦  «        x}�)t	          j        ||                     |¬¦  «        ¦  «        S d S )Nr¢   rì   )
r  rP   Úcontiguous_formatr~   r7   r×   rv   r�   r¥   r¦   )r�   r�   rí   Úmemory_format_constrÕ  s        rY   Úmethod_is_contiguousz#TensorVariable.method_is_contiguous„  s£   € ð Ð(ð ×,Ò,Ñ.Ô.Ð.åÔ(ð 	ð
 ÔÐ)å"Ô(¨Ð-@ÀDÔDVÐ-VÑWÔWÐWØ”j”oÔ*×.Ò.¨Ñ?Ô?Ð?ˆdÐLÝ"Ô(Ø�D×&Ò&Ð5HÐ&ÑIÔIñô ð ð ˆtr[   FÚnon_blockingc           
      óª  ‡ — |€©‰ 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          |                     ¦   «         ¦  «        ¦  «        dk    rr|                     ¦   «         }t          j	        |t          |¦  «        ¦  «        }ddlm} |rd|i|¥} || |j        j        d	d
gt#          ‰ |g|¦  «        ¢R Ž ¦  «        S d S )Nc              3   ó4   •K  — | ]\  }}‰j         |v ¯|V — Œd S rÆ   )rp   )rç   rª   r«   r�   s      €rY   ré   z-TensorVariable.method_type.<locals>.<genexpr>£  s6   øè è € ð ð Ù�a˜¸T¼ZÈ1¸_¸_�¸_¸_¸_¸_ðð r[   Úcpuztorch.ú.ztorch.tensortyper4   r÷   rí  rÓ   r¤   )rp   rT   rw   rP   Únextr3   r§   r¤   r7   r×   rW   r)   r  r£   rø   r´   rà   r0   )	r�   r�   rp   rí  r•   Ú
tensortypeÚtensor_typeÚtensor_type_constrø   s	   `        rY   Úmethod_typezTensorVariable.method_type—  s«  ø€ ð ˆMØ”
Ð&Ý˜4œ;­¬Ñ5Ô5ð 'õ ð ð ð ð Ý1Ô7Ñ9Ô9ðñ ô ñ ô ˆJð Œ{Ô 5Ò(Ð(Ý&Ô,¨RÐ1O¸*Ô:MÐ1OÐ1OÑPÔPÐPå&Ô,ØÐI ¤Ô!1ÐIÐI°JÔ4GÐIÐIñô ð ð ÐÝ•D˜×1Ò1Ñ3Ô3Ñ4Ô4Ñ5Ô5Ð9KÒKÐKð
  ×2Ò2Ñ4Ô4ˆKÝ /Ô 5°b½#¸kÑ:JÔ:JÑ KÔ KÐà.Ð.Ð.Ð.Ð.Ð.àð BØ(¨,ÐA¸&ÐA�à �=ØØ&�”	Ô&Ø!Øðõ '¨Ð.?Ð'@À&ÑIÔIðð ð ñô ð ð ˆtr[   ÚclsrC   c                 óX  — t          |t          ¦  «        rn|j        rgddlm} |                     ¦   «         } |j        || ||j        ¦  «        }|j        j         	                    t          ¦   «         |t          ¬¦  «         |S t          d| › d|› d�ddgt          j        ¢¬	¦  «         d S )
Nr4   rB   ©Úmutation_type_clszHArgument of `as_subclass` must be a non-dispatcher-style tensor subclassz.as_subclass(rd   úCurrently not supportedz:Avoid this call or move it outside `torch.compile` regioner½   )rT   ÚTensorSubclassVariabler‰   r|  rC   r  rz  r´   rA  Ú
_track_objÚobjectr5   r    r   rÂ   )r�   r�   r÷  rC   Úpy_clsrT  s         rY   Úmethod_as_subclassz!TensorVariable.method_as_subclassÅ  sè   € õ �cÕ1Ñ2Ô2ð 	°s´zð 	ØDÐDÐDÐDÐDÐDà×+Ò+Ñ-Ô-ˆFØ>Ð.Ô>Ø�D˜& #¤*ñô ˆCð ŒIÔ"×-Ò-Ý‘”˜#Õ1Eð .ñ ô ð ð ˆJÝØ^ØÐ0Ð0¨#Ð0Ð0Ð0Ø1àLðå"Ô.ðð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r[   c                 óª   — t          | j        t          j        ¦  «        r3| j        j        dk    r| j        j        nd}t          j        ||¦  «        S d S )Nrð  éÿÿÿÿ)rT   rw   rP   r¤   rˆ   r7   r×   )r�   r�   rˆ   s      rY   Úmethod_get_devicez TensorVariable.method_get_deviceÞ  sP   € õ �d”k¥5¤<Ñ0Ô0ð 	4Ø)-¬Ô)9¸UÒ)BÐ)B�D”KÔ%Ð%ÈˆEÝ"Ô(¨¨UÑ3Ô3Ð3Øˆtr[   c                 ó@   — t          j        || j        j        ¦  «        S rÆ   )r7   r×   rp   ÚitemsizerÃ   s     rY   Úmethod_element_sizez"TensorVariable.method_element_sizeæ  s   € ÝÔ$ R¨¬Ô)<Ñ=Ô=Ð=r[   )Úforcer  ÚNumpyNdarrayVariablec                ó  — t           j        st          dd| › d�ddg¬¦  «         t          st          dd| › d�dd	g¬¦  «         | j        t
          j        k    rt          d
| j        › d�¦  «        ‚|r]|                     ¦   «         rI|  	                    |dg i ¦  «        }|j
                             dd|                     ¦   «         fi ¦  «        }n$ |j
        j        ddgt          | | gi ¦  «        ¢R Ž }t                               ||¦  «        S )Nz%Tensor.numpy() with trace_numpy=Falser¡  z numpyzW`Tensor.numpy()` was called, but the `trace_numpy` configuration was manually disabled.zUSet `torch._dynamo.config.trace_numpy = True` to allow Dynamo to trace through NumPy.r½   z&Tensor.numpy() without NumPy installedz_`Tensor.numpy()` was called, but the NumPy library is not available in the current environment.z5Ensure NumPy is installed in your Python environment.zcan't convert z4 layout tensor to numpy. Use Tensor.to_dense() firstÚdetachrÓ   rð  Úview_as)r   Útrace_numpyr    Únprx   rP   Ústridedr¸  r  rÓ   r´   rà   rÈ   r0   r  rØ   )r�   r�   r  Útrv   s        rY   Úmethod_numpyzTensorVariable.method_numpyé  si  € õ Ô!ð 
	ÝØ?Ø3 tÐ3Ð3Ð3ð7ð5ðð	ñ 	ô 	ð 	õ ð 		ÝØ@Ø3 tÐ3Ð3Ð3ð?ð Lððñ ô ð ð Œ;�%œ-Ò'Ð'ÝØb ¤ÐbÐbÐbñô ð ð ð 	�U×-Ò-Ñ/Ô/ð 	à× Ò   X¨r°2Ñ6Ô6ˆAØ”I×*Ò*¨=¸%À!Ç*Â*Á,Ä,ÀÐRTÑUÔUˆEˆEð +�B”IÔ*Ø˜yðÝ+<¸dÀD¸\È2Ñ+NÔ+Nðð ð ˆEõ $×*Ò*¨2¨uÑ5Ô5Ð5r[   c                 óD  ‡ ‡‡‡— ddl mŠ dt          j        dt          j        j        dt          t          t                   z  fˆ ˆˆˆfd„Š‰                      ¦   «         j	        j
        d         } ‰|‰                      ¦   «         ¦  «        }t          j        ‰|¦  «        S )Nr4   r÷   ÚtensorÚ	sub_proxyrK   c                 óÖ  •‡‡— dt           dt          j        j        dt          fˆˆfd„Š| j        t          j        t          j        t          j        t          j	        fvrt          dd‰› d�dd	g¬
¦  «         |                      ¦   «         dk    r ‰| ‰¦  «        S |                      ¦   «         dk    rˆˆfd„t          | ¦  «        D ¦   «         S ˆˆfd„t          | ¦  «        D ¦   «         S )Nrx  r  rK   c                 ó@   •—  ‰‰|                      ¦   «         ¦  «        S rÆ   )rÑ   )rx  r  r�   rø   s     €€rY   Úwrapz:TensorVariable.method_tolist.<locals>.tolist.<locals>.wrap  s'   ø€ Ø$�}ØØ—N’NÑ$Ô$ñô ð r[   z'Tensor.tolist() with non-integer tensorr¡  z to_listzLDynamo currently does not support tracing `tolist()` on non-integer tensors.z[Ensure the input tensor to `tolist()` is an integer type (e.g., int8, int16, int32, int64).r½   r   r4   c                 ó:   •— g | ]\  }} ‰|‰|         ¦  «        ‘ŒS r˜   r˜   )rç   rx  Úvalr  r  s      €€rY   r.  z@TensorVariable.method_tolist.<locals>.tolist.<locals>.<listcomp>2  s-   ø€ ÐPÐPÐP±F°A°s˜˜˜S )¨A¤,Ñ/Ô/ÐPÐPÐPr[   c                 ó<   •— g | ]\  }} ‰|‰|         ¬ ¦  «        ‘ŒS ))r  r˜   )rç   rx  Ú
sub_tensorr  Útolists      €€rY   r.  z@TensorVariable.method_tolist.<locals>.tolist.<locals>.<listcomp>4  s@   ø€ ð ð ð á!�A�zð ��z¨Y°q¬\Ð:Ñ:Ô:ðð ð r[   )r   rP   ÚfxÚProxyr7   rp   Úint8Úint16Úint32Úint64r    r   Ú	enumerate)r  r  r  r�   r  r�   rø   s    `@€€€€rY   r  z,TensorVariable.method_tolist.<locals>.tolist  s<  øøø€ ð�ð ­¬¬ð ½?ð ð ð ð ð ð ð ð Œ|Ý”
Ý”Ý”Ý”ð	$ð ð õ ØEØ9¨4Ð9Ð9Ð9ð!9ðBðð	ñ 	ô 	ð 	ð �zŠz‰|Œ|˜qÒ Ð Ø�t˜F IÑ.Ô.Ð.à�zŠz‰|Œ|˜qÒ Ð ØPÐPÐPÐPÐP½iÈÑ>OÔ>OÐPÑPÔPÐPðð ð ð ð å%.¨vÑ%6Ô%6ðñ ô ð r[   r¢   )r£   rø   rP   rU   r  r  r   rµ  rÈ   r�   r¥   r7   r×   )r�   r�   r  Úoutr  rø   s   ``  @@rY   Úmethod_tolistzTensorVariable.method_tolist  s°   øøøø€ Ø*Ð*Ð*Ð*Ð*Ð*ð!	�5œ<ð !	µE´H´Nð !	ÅsÍTÕRUÌYÁð !	ð !	ð !	ð !	ð !	ð !	ð !	ð !	ð !	ðF —’‘”Ô%Ô*¨?Ô;ˆØˆf�V˜TŸ]š]™_œ_Ñ-Ô-ˆÝÔ$ R¨Ñ-Ô-Ð-r[   Ú	vars_iterÚerror_on_non_leafc                 ó–  — ddl m} g }t          ¦   «         }|D ]¯}t          |t          ¦  «        r˜|j        r‘|j        r|rt          dd|› �ddg¬¦  «         Œ?|r4|j         rt          |j         |¦  «        rt          dd	|› �d
dg¬¦  «         Œu|j        j	        }||vr*| 
                    |¦  «         |                     |¦  «         Œ°|S )aá  
        Collect unique leaf tensors from vars_iter for backward.

        Only collects leaf tensors (no grad_fn). Non-leaf tensors are skipped
        (or error if error_on_non_leaf=True) because when auto-detecting inputs,
        we must not stop gradients at non-leafs - they are intermediates, and the
        real leaf tensors (parameters) are further up the autograd graph.

        Deduplicates by proxy.node.
        Returns list of unique leaf tensor variables.
        r   )ÚSyntheticLocalSourcezbackward() with non-leaf tensorz-backward(inputs=[...]) with non-leaf tensor: zBbackward(inputs=[...]) with non-leaf tensors is not yet supported.zIOnly pass leaf tensors (parameters, graph inputs) to backward(inputs=...)r½   z'backward() with in-graph created tensorz5backward(inputs=[...]) with in-graph created tensor: z^backward(inputs=[...]) with tensors created inside the compiled function is not yet supported.zSOnly pass tensors that are inputs to the compiled function or captured from outside)r‰   r(  ÚsetrT   ru   r|   r”   r    rv   r�   ÚaddÚappend)r�   r%  r&  r(  ro  Ú
seen_nodesrT  r�   s           rY   Ú_collect_backward_inputsz'TensorVariable._collect_backward_inputs=  s<  € ð 	2Ð1Ð1Ð1Ð1Ð1àˆÝ),©¬ˆ
Øð '	+ð '	+ˆCÝ˜#�~Ñ.Ô.ð &+°3Ô3Dð &+ð ”?ð +Ø(ð Ý%Ø$EØ$YÐTWÐ$YÐ$YØ(là kð#ð	ñ ô ð øð 'ð +Øœ
ð+Ý&0°´Ð=QÑ&RÔ&Rð+õ "Ø IØ ]ÐX[Ð ]Ð ]ð%Bð rððñ ô ð ð ð œ9œ>�DØ :Ð-Ð-Ø"Ÿš tÑ,Ô,Ð,ØŸš cÑ*Ô*Ð*øàˆr[   ÚgradientÚretain_graphÚcreate_graphÚinputsc                 óš  — t           j        s#t          dd| › d|› d|› d|› d|› �
ddg¬¦  «         | j        s| j        st          d¦  «        ‚|d	u }|rbt          |j        j        |j        j	         
                    ¦   «         ¦  «        }|                      |¦  «        }|st          j        d	¦  «        S n“t          |t          j        ¦  «        r|j        }	nDt          |t          j        ¦  «        r't'          |j         
                    ¦   «         ¦  «        }	n|g}	|                      |	d
¬¦  «        }|st          ddddg¬¦  «         dt)          j        ||¦  «        i}
|�||
d<   |�||
d<   t)          j        ||¦  «        }| |g}|�|                     |¦  «         t)          j        |t.          j        j        ¦  «        }|                     |||
¦  «        }ddlm} |                     |dd
¬¦  «        }|                     |¦  «         t)          j        |t.          j        j        j         j!        ¦  «        }|€tE          d¦  «        ‚tG          |¦  «        D ]J\  }}| $                    |dt)          j        ||¦  «        gi ¦  «        }|                     |||gi ¦  «         ŒK| %                    |¦  «         t          j        d	¦  «        S )a´  
        Trace tensor.backward() by rewriting as autograd.grad() + accumulate_grad.

        Implementation:
        1. Collect leaf tensors to compute gradients for
        2. Call autograd.grad(loss, inputs) to compute gradients
        3. For each leaf tensor, call accumulate_grad to update .grad

        Non-leaf tensor handling:
        - Auto-detect (inputs=None): Non-leaf tensors are silently skipped.
          This matches eager where only leaves get .grad.
        - User-provided (inputs=[...]): Errors if any non-leaf tensor is found.
          While eager backward(inputs=[non_leaf]) works, Dynamo cannot trace it
          because the backward rewrite accesses .grad, and Dynamo creates
          a generic GetAttrVariable for .grad on non-leaf tensors (instead of a
          TensorVariable), which cannot be used in tensor operations.

        TODO: Support non-leaf tensors by fixing .grad access on non-leaf in Dynamo.
        z"Unsupported Tensor.backward() callr¡  z
 backward rX  z]Dynamo currently does not support tracing `Tensor.backward()` when trace_autograd_ops is off.z)Set torch._dynamo.trace_autograd_ops=Truer½   z8tensor does not require grad and does not have a grad_fnNT)r&  zbackward() with empty inputsz8backward(inputs=[...]) resulted in no valid leaf tensorsz?backward(inputs=[...]) requires at least one valid leaf tensor.zOEnsure at least one tensor in inputs is a leaf (requires_grad=True, no grad_fn)Úallow_unusedr/  r0  r4   )ÚGradModeVariableF)Úinitializedzinput_vars must not be Noner›  )&r   Útrace_autograd_opsr    r|   r”   r   r   r´   Úleaf_var_creation_orderÚinput_source_to_varr»  r-  r9   rØ   rT   r   ÚBaseListVariabler§   ÚConstDictVariablerµ  r7   r×   r+  rP   Úautogradr@  rÞ   Úctx_managerr4  Úenterrh  ÚinductorÚaccumulate_grad_Údefaultr  r"  rÓ   Úexit)r�   r�   r.  r/  r0  r1  Úauto_detectÚall_varsÚ
input_varsÚprovided_varsÚgrad_kwargsÚ
inputs_varÚ	grad_argsÚautograd_grad_fnÚ	grads_varr4  Úgrad_mode_varÚaccumulate_grad_fnÚidxÚ	input_varÚgrad_is                        rY   Úmethod_backwardzTensorVariable.method_backwardz  sX  € õ6 Ô(ð 	ÝØ<Øh tÐhÐh°xÐhÐhÀ,ÐhÐhÐQ]ÐhÐhÐ`fÐhÐhØ{ØBÐCð	ñ ô ð ð Ô!ð 	¨$Ô*:ð 	Ý#ØJñô ð ð  �nˆØð !	õ Ø”	Ô1Ø”	Ô-×4Ò4Ñ6Ô6ñô ˆHð ×6Ò6°xÑ@Ô@ˆJØð 5õ (Ô.¨tÑ4Ô4Ð4ð	5õ ˜&¥)Ô"<Ñ=Ô=ð )Ø &¤��Ý˜F¥IÔ$?Ñ@Ô@ð )Ý $ V¤\×%8Ò%8Ñ%:Ô%:Ñ ;Ô ;��à!' �Ø×6Ò6Ø°ð 7ñ ô ˆJð ð 
õ Ø:ØVØ aàiðð	ñ ô ð ð &¥Ô'<¸RÀÑ'MÔ'MÐNˆØÐ#Ø*6ˆK˜Ñ'ØÐ#Ø*6ˆK˜Ñ'å$Ô*¨2¨zÑ:Ô:ˆ
Ø˜:Ð&ˆ	ØÐØ×Ò˜XÑ&Ô&Ð&å*Ô0°µU´^Ô5HÑIÔIÐØ$×2Ò2°2°yÀ+ÑNÔNˆ	ð 	2Ð1Ð1Ð1Ð1Ð1à(×/Ò/°°EÀtÐ/ÑLÔLˆØ×Ò˜BÑÔÐå,Ô2Ø•”	Ô"Ô3Ô;ñ
ô 
Ðð ÐÝ Ð!>Ñ?Ô?Ð?Ý'¨
Ñ3Ô3ð 	Jð 	J‰NˆC�Ø×*Ò*Ø�M¥OÔ$9¸"¸cÑ$BÔ$BÐ#CÀRñô ˆFð ×,Ò,¨R°)¸VÐ1DÀbÑIÔIÐIÐIà×Ò˜2ÑÔÐåÔ& tÑ,Ô,Ð,r[   ÚDataPtrVariablec                 ó    — t          | ¦  «        S rÆ   ©rQ  rÆ  s       rY   Úmethod_data_ptrzTensorVariable.method_data_ptrñ  s   € õ ˜tÑ$Ô$Ð$r[   c                 ó$   — t          | d¬¦  «        S )NÚconst_data_ptr)Úmethod_namerS  rÆ  s       rY   Úmethod_const_data_ptrz$TensorVariable.method_const_data_ptrù  s   € õ ˜tÐ1AÐBÑBÔBÐBr[   Ústreamc                 ó<  — ddl m} t          ||¦  «        s)t          d|                     ¦   «         j        › �¦  «        ‚|j                             dt          j	        j         j
        |                      ¦   «         |j        fi ¦  «         t          j        d ¦  «        S )Nr4   )ÚStreamVariablez/record_stream() expects a Stream argument, got rÞ   )Ústreamsr[  rT   r‹   rË   rW   r´   rà   rP   rh  Úrecord_streamrÈ   Úuser_object_indexr9   rØ   )r�   r�   rY  r[  s       rY   Úmethod_record_streamz#TensorVariable.method_record_stream  s§   € ð
 	,Ð+Ð+Ð+Ð+Ð+å˜& .Ñ1Ô1ð 	ÝØaÀ&×BTÒBTÑBVÔBVÔB_ÐaÐañô ð ð 	Œ	×ÒØÝŒIÔÔ+Ø�]Š]‰_Œ_˜fÔ6Ð7Øñ		
ô 	
ð 	
õ  Ô& tÑ,Ô,Ð,r[   c           	      óŽ   — |j         s=t          j        s1|                      ¦   «          t	          dd| › d|› d|› �ddg¬¦  «         d S )Nz@Unsupported Tensor.item() call with capture_scalar_outputs=Falser¡  z item rX  zYDynamo does not support tracing `Tensor.item()` with config.capture_scalar_outputs=False.zœSet `torch._dynamo.config.capture_scalar_outputs = True` or `export TORCHDYNAMO_CAPTURE_SCALAR_OUTPUTS=1` to include these operations in the captured graph.r½   )Ú	one_graphr   Úcapture_scalar_outputsÚ_warn_capture_scalar_outputsr    rÆ  s       rY   Úmethod_itemzTensorVariable.method_item  sv   € ð Œ|ð 	¥FÔ$Að 	Ø×-Ò-Ñ/Ô/Ð/ÝØZØB tÐBÐB°4ÐBÐB¸&ÐBÐBð<ðIðð
ñ 
ô 
ð 
ð ˆtr[   c           	      ó0  — | j         �v| j         j        sj| j         j        s^|                      |dg i ¦  «        }ddlm}  |||j                             dt          | 	                    ¦   «         fi ¦  «        ¬¦  «        S t          t          |dg¬¦  «         d S )NrÑ   r4   r÷   rÞ   r]  zEonly integer tensors of a single element can be converted to an indexrü   )rp   rÝ  rç  rÓ   r£   rø   r´   rà   r   rÈ   r   r¸  ©r�   r�   rÑ   rø   s       rY   Únb_index_implzTensorVariable.nb_index_impl*  sÌ   € ð Œ:Ð!Ø”
Ô,ð "Ø59´ZÔ5Jð "ð ×#Ò# B¨°°BÑ7Ô7ˆDØ.Ð.Ð.Ð.Ð.Ð.à �=ØØ”i×,Ò,Ø#ÝØ—]’]‘_”_Ð&Øñ	ô ðñ ô ð õ 	!ÝØàWðð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r[   c           	      ó  — | j         �$| j         j        rt          t          |dg¬¦  «         |                      |dg i ¦  «        }ddlm}  |||j                             dt          | 
                    ¦   «         fi ¦  «        ¬¦  «        S )Nz:value cannot be converted to type int64_t without overflowrü   rÑ   r4   r÷   rÞ   r]  )rp   rç  r   r‹   rÓ   r£   rø   r´   rà   r   rÈ   rf  s       rY   Únb_int_implzTensorVariable.nb_int_implH  s®   € ð Œ:Ð! d¤jÔ&;Ð!Ý$ÝØØRÐSðñ ô ð ð ×Ò  F¨B°Ñ3Ô3ˆØ*Ð*Ð*Ð*Ð*Ð*àˆ}ØØ”)×(Ò(ØÝØ—’‘”Ð"Øñ	ô ð
ñ 
ô 
ð 	
r[   c                 ó,   — |                       |¦  «        S rÆ   ©ri  rÃ   s     rY   Úmethod___int__zTensorVariable.method___int__d  s   € Ø×Ò Ñ#Ô#Ð#r[   c           	      ó  — | j         �$| j         j        rt          t          |dg¬¦  «         |                      |dg i ¦  «        }ddlm}  |||j                             dt          | 
                    ¦   «         fi ¦  «        ¬¦  «        S )Nz9value cannot be converted to type double without overflowrü   rÑ   r4   r÷   rÞ   r]  )rp   rç  r   r‹   rÓ   r£   rø   r´   rà   r   rÈ   rf  s       rY   Únb_float_implzTensorVariable.nb_float_implg  s®   € ð Œ:Ð! d¤jÔ&;Ð!Ý$ÝØØQÐRðñ ô ð ð
 ×Ò  F¨B°Ñ3Ô3ˆØ*Ð*Ð*Ð*Ð*Ð*àˆ}ØØ”)×(Ò(ØÝØ—’‘”Ð"Øñ	ô ð
ñ 
ô 
ð 	
r[   c                 ó,   — |                       |¦  «        S rÆ   ©rn  rÃ   s     rY   Úmethod___float__zTensorVariable.method___float__€  s   € Ø×!Ò! "Ñ%Ô%Ð%r[   c           	      ó–   — ddl m}  |||j                             dt          j        |                      ¦   «         fi ¦  «        ¦  «        S ©Nr4   r÷   rÞ   )r£   rø   r´   rà   ÚoperatorÚnegrÈ   ©r�   r�   rø   s      rY   Únb_negative_implzTensorVariable.nb_negative_implƒ  ó[   € ð 	+Ð*Ð*Ð*Ð*Ð*àˆ}ØØŒI×"Ò"ØÝ”Ø—’‘”Ð"Øñ	ô ñ
ô 
ð 	
r[   c                 ó,   — |                       |¦  «        S rÆ   ©rw  rÃ   s     rY   Úmethod___neg__zTensorVariable.method___neg__“  ó   € Ø×$Ò$ RÑ(Ô(Ð(r[   c           	      ó–   — ddl m}  |||j                             dt          j        |                      ¦   «         fi ¦  «        ¦  «        S rs  )r£   rø   r´   rà   rt  ÚposrÈ   rv  s      rY   Únb_positive_implzTensorVariable.nb_positive_impl–  rx  r[   c                 ó,   — |                       |¦  «        S rÆ   ©r  rÃ   s     rY   Úmethod___pos__zTensorVariable.method___pos__¦  r|  r[   c           	      ó–   — ddl m}  |||j                             dt          j        |                      ¦   «         fi ¦  «        ¦  «        S rs  )r£   rø   r´   rà   rt  ÚabsrÈ   rv  s      rY   Únb_absolute_implzTensorVariable.nb_absolute_impl©  rx  r[   c                 ó,   — |                       |¦  «        S rÆ   ©r…  rÃ   s     rY   Úmethod___abs__zTensorVariable.method___abs__¹  r|  r[   c           	      ó.  — ddl m} t          |d         t          ¦  «        r*t          j        t          j        |d¦  «        |d         g}}nt          j	        } |j
        j        d|gt          | gt          |¦  «        z   |¦  «        ¢R Ž } |||¦  «        S )Nr4   r÷   r   rÞ   )r£   rø   rT   rÔ   rP   Úselectr7   r×   rt  Úgetitemr´   rà   r0   rµ  )r�   r�   rý   r•   rø   rp  rv   s          rY   rœ  z!TensorVariable.method___getitem__¼  s¸   € ð 	+Ð*Ð*Ð*Ð*Ð*å�d˜1”g�Ñ/Ô/ð 	"õ
 ”å#Ô)¨"¨aÑ0Ô0Ø˜”Gðð ˆBˆBõ Ô!ˆBà&�”	Ô&ØØð
õ  ˜v­¨T©
¬
Ñ2°FÑ;Ô;ð
ð 
ð 
ˆð ˆ}˜R Ñ'Ô'Ð'r[   c                  óô   — t           j        j                             ¦   «         } d                     t          j        | ¦  «        ¦  «        }t                               t          j
        d¦  «        |¦  «         d S )NrR  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
                )rP   Ú_guardsÚTracingContextÚextract_stackÚjoinÚ	tracebackÚformat_listÚlogÚwarningÚtextwrapÚdedent)Ú
user_stackÚuser_stack_formatteds     rY   rc  z+TensorVariable._warn_capture_scalar_outputsÚ  sp   € õ ”]Ô1×?Ò?ÑAÔAˆ
Ø!Ÿwšw¥yÔ'<¸ZÑ'HÔ'HÑIÔIÐÝ�ŠÝŒOð	ñô ð !ñ	
ô 	
ð 	
ð 	
ð 	
r[   c                 ó,   — |                       |¦  «        S rÆ   )Ú	sq_lengthrÃ   s     rY   Úmethod___len__zTensorVariable.method___len__ï  s   € Ø�~Š~˜bÑ!Ô!Ð!r[   c                 óZ   — |                       |dt          j        |d¦  «        gi ¦  «        S )z9Sequence length for tensors (size along first dimension).rz   r   )rÓ   r7   r×   rÃ   s     rY   rš  zTensorVariable.sq_lengthò  s,   € à×Ò  F­_Ô-BÀ2ÀqÑ-IÔ-IÐ,JÈBÑOÔOÐOr[   c                 ób   — t          |                      |¦  «        t          ¦   «         ¬¦  «        S )N©rD  )r:   r†  r6   rÃ   s     rY   Útp_iter_implzTensorVariable.tp_iter_implö  s3   € Ý#Ø×$Ò$ RÑ(Ô(Õ8HÑ8JÔ8Jð
ñ 
ô 
ð 	
r[   c                 ó,   — |                       |¦  «        S rÆ   )rŸ  rÃ   s     rY   Úmethod___iter__zTensorVariable.method___iter__û  s   € Ø× Ò  Ñ$Ô$Ð$r[   rX   Útensor1Útensor2c                ó4  — |�•t           j        r‰ddlm} t	          j        t          j        ¦  «        }t	          j        |j        ¦  «        }| 	                    |||gi ¦  «        }| 	                    |||| gi ¦  «        }	|  
                    |d|	gi ¦  «        S d S ©Nr   )Úinductor_primsÚcopy_)r   Úenable_dynamo_decompositionsÚtorch._inductorr¦  r   rG  rP   ÚmulÚfmarÞ   rÓ   )
r�   r�   r¢  r£  rJ   r¦  Úmul_varÚfma_varr/   ro  s
             rY   Úmethod_addcmul_zTensorVariable.method_addcmul_þ  s¤   € ð Ð¥Ô!DÐØ6Ð6Ð6Ð6Ð6Ð6åÔ<½U¼YÑGÔGˆGÝÔ<¸^Ô=OÑPÔPˆGØ×+Ò+¨B°¸'Ð0BÀBÑGÔGˆGØ×*Ò*¨2°¸ÀÐ/EÀrÑJÔJˆFØ×#Ò# B¨°&°¸2Ñ>Ô>Ð>Øˆtr[   c                 óÎ  —  |j         j        dt          j        gt	          | ||gi ¦  «        ¢R Ž }|                      ¦   «         }t          j        j         	                    ¦   «         5  |j
        r*|j
        j        r|j
        j                             ¦   «         nt          ¦   «         5  t          |j        |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |                      |||                     ¦   «         ¦  «         t$          j        st$          j        r%|j         j                             |j        d¦  «         t/          j        d ¦  «        S )NrÞ   F)Úallow_non_graph_faker   )r´   rà   rt  Úsetitemr0   r°   rP   rQ   rR   Ú+_disable_saved_tensors_hooks_during_tracingr  r¹  r¼  r   r+   r�   r·   rÎ   r   Úuse_graph_deduplicationÚtrack_nodes_for_deduplicationÚregion_trackerÚadd_node_mutationr9   rØ   )r�   r�   r“  rJ   rv   r±   s         rY   Úmethod___setitem__z!TensorVariable.method___setitem__  sö  € ð '�”	Ô&ØÝÔð
õ   c¨5Ð1°2Ñ6Ô6ð
ð 
ð 
ˆð ×/Ò/Ñ1Ô1ˆõ ŒMÔ×KÒKÑMÔMð	Gð 	Gð Œ|ðØ "¤Ô 6ðˆBŒLÔ"×@Ò@ÑBÔBÐBå‘”ð		Gð 	Gõ ˜5œ: rÀÐFÑFÔFÐFð	Gð 	Gð 	Gñ 	Gô 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gøøøð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gñ 	Gô 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gøøøð 	Gð 	Gð 	Gð 	Gð 	×&Ò& r¨>¸5¿?º?Ñ;LÔ;LÑMÔMÐMåÔ)ð 	F­VÔ-Qð 	FØŒIÔ$×6Ò6°u´zÀ1ÑEÔEÐEåÔ& tÑ,Ô,Ð,s7   Á'A C"Â'CÂ?C"ÃC	ÃC"ÃC	ÃC"Ã"C&Ã)C&c           	      ó>   — t          dd| › d|› d|› �dg ¬¦  «         d S )Nz!Unsupported Tensor.resize_() callr¡  z	 resize_ rX  z=Dynamo currently does not support tracing `Tensor.resize_()`.r½   r=  rÆ  s       rY   Úmethod_resize_zTensorVariable.method_resize_1  sI   € õ 	Ø7ØA 4ÐAÐA°$ÐAÐA¸ÐAÐAØWØð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r[   c           	      ó>   — t          dd| › d|› d|› �dg ¬¦  «         d S )Nz$Unsupported Tensor.resize_as_() callr¡  z resize_as_ rX  z@Dynamo currently does not support tracing `Tensor.resize_as_()`.r½   r=  rÆ  s       rY   Úmethod_resize_as_z TensorVariable.method_resize_as_>  sI   € õ 	Ø:ØD 4ÐDÐD°TÐDÐD¸FÐDÐDØZØð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r[   c           	      ó>   — t          dd| › d|› d|› �dg ¬¦  «         d S )Nz(Unsupported Tensor.sparse_resize_() callr¡  z sparse_resize_ rX  zDDynamo currently does not support tracing `Tensor.sparse_resize_()`.r½   r=  rÆ  s       rY   Úmethod_sparse_resize_z$TensorVariable.method_sparse_resize_K  sI   € õ 	Ø>ØH 4ÐHÐH¸ÐHÐHÀÐHÐHØ^Øð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r[   c           	      ó>   — t          dd| › d|› d|› �dg ¬¦  «         d S )Nz2Unsupported Tensor.sparse_resize_and_clear_() callr¡  z sparse_resize_and_clear_ rX  zNDynamo currently does not support tracing `Tensor.sparse_resize_and_clear_()`.r½   r=  rÆ  s       rY   Úmethod_sparse_resize_and_clear_z.TensorVariable.method_sparse_resize_and_clear_X  sI   € õ 	ØHØR 4ÐRÐRÀ4ÐRÐRÈ&ÐRÐRØhØð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r[   c           	      ó|   — t          |¦  «        dk    r(t          dd| › d|› d|› �dg t          j        ¢¬¦  «         d S )Nr4   zUnsupported Tensor.set_() callr¡  z set_ rX  zhDynamo currently does not support tracing `Tensor.set_()` overloads that include more than one argument.r½   )r}  r    r   rÂ   rÆ  s       rY   Úmethod_set_zTensorVariable.method_set_e  sc   € õ ˆt‰9Œ9�qŠ=ˆ=õ Ø8ØB tÐBÐB°4ÐBÐB¸&ÐBÐBðAà6Õ)Ô5Ð6ðñ ô ð ð ˆtr[   )ÚalpharÂ  c                óð   — |�st          |t          ¦  «        r^t          j        rRddlm} t          j        |j        ¦  «        }| 	                    |||| gi ¦  «        }|  
                    |d|gi ¦  «        S d S r¥  )rT   ru   r   r¨  r©  r¦  r   rG  r«  rÞ   rÓ   )r�   r�   rÚ   rÂ  r¦  r­  ro  s          rY   Úmethod_add_zTensorVariable.method_add_{  s�   € ð ÐÝ˜5¥.Ñ1Ô1ð åÔ3ð ð 7Ð6Ð6Ð6Ð6Ð6åÔ<¸^Ô=OÑPÔPˆGØ×*Ò*¨2°°u¸dÐ/CÀRÑHÔHˆFØ×#Ò# B¨°&°¸2Ñ>Ô>Ð>Øˆtr[   c                ó0  — |�“t           j        r‡t          j        t          j        ¦  «                             |||gi ¦  «        }ddlm} t          j        |j	        ¦  «        }|                     |||| gi ¦  «        }|  
                    |d|gi ¦  «        S d S r¥  )r   r¨  r   rG  rP   ÚdivrÞ   r©  r¦  r«  rÓ   )	r�   r�   r¢  r£  rJ   ro  r¦  r­  Ú
fma_results	            rY   Úmethod_addcdiv_zTensorVariable.method_addcdiv_�  s¦   € ð Ð¥Ô!DÐÝÔ;½E¼IÑFÔF×TÒTØ�W˜gÐ&¨ñô ˆFð 7Ð6Ð6Ð6Ð6Ð6åÔ<¸^Ô=OÑPÔPˆGØ ×.Ò.¨r°F¸EÀ4Ð3HÈ"ÑMÔMˆJØ×#Ò# B¨°*°¸rÑBÔBÐBØˆtr[   rÑ   c                 ó  — t          j        t          j        ¦  «                             || |gi ¦  «        }t          j        t          j        ¦  «                             ||gi ¦  «        }|                     |dg i ¦  «        S )NrÑ   )r   rG  rP   ÚeqrÞ   rº  rÓ   )r�   r�   rÑ   ro  s       rY   Úsq_containszTensorVariable.sq_contains£  sz   € õ Ô7½¼ÑAÔA×OÒOØ��t�˜bñ
ô 
ˆõ Ô7½¼	ÑBÔB×PÒPØ��˜"ñ
ô 
ˆð ×!Ò! " f¨b°"Ñ5Ô5Ð5r[   r´  c                 ó.   — |                       ||¦  «        S rÆ   )rË  )r�   r�   r´  s      rY   Úmethod___contains__z"TensorVariable.method___contains__²  s   € ð ×Ò  CÑ(Ô(Ð(r[   c                 ó&   —  | j         |dg|¢R i |¤ŽS )NÚregister_hook©Ú_method_register_hookrÆ  s       rY   Úmethod_register_hookz#TensorVariable.method_register_hook·  s)   € ð *ˆtÔ)¨"¨oÐOÀÐOÐOÐOÈÐOÐOÐOr[   c                 ó&   —  | j         |dg|¢R i |¤ŽS )NÚ"register_post_accumulate_grad_hookrÐ  rÆ  s       rY   Ú)method_register_post_accumulate_grad_hookz8TensorVariable.method_register_post_accumulate_grad_hook¿  s;   € ð *ˆtÔ)ØÐ4ð
Ø7;ð
ð 
ð 
Ø?Eð
ð 
ð 	
r[   Úhookc                 ó¢  ‡‡— | j         �sqt          j        r�|j                             |¦  «        \  Š}dt
          j        dt          j        dd fˆˆfd„}ddlm	} |  
                    ¦   «         }d|j        j        d<    |||j                             d	|||fi ¦  «        ¦  «        S dd
lm} |  
                    ¦   «         }	|	j        }
	 |                     d„ ¦  «        5   |||| gi dd d dd¬¦	  «	        \  \  }}}}d d d ¦  «         n# 1 swxY w Y   n2# t
          j        j        j        $ r t+          dddg ¬¦  «         Y nw xY w|j        j        j                             ¦   «         }|j                             dt
          j                             |j        |¦  «        ¦  «        Š|
                     d‰di ¦  «        }ddlm} |	|gt?          |                      ¦   «         ¦  «        ¢R }|
                     d	|tC          |¦  «        i ¦  «        }|	j        j        d         |j        j        d<   || _"        |  #                    |¦  «         tI          j%        tH          j&         '                    ¦   «         ¬¦  «        S tI          j%        tH          j&         '                    ¦   «         ¬¦  «        }|j        j(         )                    | ||‰¦  «         |S )Nr  Úbw_staterK   c                 ó~   •— t          | ‰¦  «        } |t          j        t          t          |‰¬¦  «        ¦  «         d S )N)rp  rØ  Ú	hook_name)rV   r  r  r   r$   )r  rØ  rÏ  rÚ  rõ   s      €€rY   Ú_register_hook_trampolinezGTensorVariable._method_register_hook.<locals>._register_hook_trampoline×  sP   ø€ õ %,¨F°DÑ$9Ô$9�MØ!�MÝ!Ô)Ý)Ý<Ø%-Ø&/ð	ñ ô ñô ð ð  ˜4r[   r4   r÷   TÚhas_backward_hookrÞ   )Úspeculate_subgraphc                 ó*   — |                       ¦   «         S rÆ   r³  )r«   s    rY   ú<lambda>z6TensorVariable._method_register_hook.<locals>.<lambda>  s   € ¸!¿+º+¹-¼-€ r[   rÏ  Úautomatic_with_forced_inputs)Úsource_targetÚenable_gradÚset_subgraph_inputsÚrestore_side_effectsz(register_hook with stride-dependent codez0Hook accesses grad metadata (e.g. is_contiguous)z}register_hook callbacks that branch on gradient metadata are not supported because grad properties are unknown at trace time.r½   Ú	hook_bodyÚget_attrr˜   r   )Úregister_hook_opr¢   rž  )*r‰   r   Úcompiled_autograd_enabledr´   Úadd_backward_state_hookrP   rU   ÚBackwardStater£   rø   rÈ   r�   r¥   rà   Úhigher_order_opsrÝ  r‘   Ústrict_translation_moderQ   r  r!   r    Útracing_contextÚmodule_contextÚcopy_graphstateÚinstall_subgraphr  ÚGraphModuleÚ
nn_modulesÚ%torch._higher_order_ops.register_hookrç  rµ  Úkeysrn   rv   r¬   r   ÚRemovableHandleVariableÚbaser6   rA  rÏ  )r�   r�   rõ   rÖ  Úbw_state_proxyrÛ  rø   Ú
self_proxyrÝ  Útensor_proxyÚtarget_tracerÚbody_rÚ_Ú
hook_graphÚhook_freevarsÚhook_nn_modulesÚ	hook_noderç  Úp_argsÚhooked_proxyÚhandle_variablerÚ  s     `                  @rY   rÑ  z$TensorVariable._method_register_hookÉ  s˜  øø€ ð Œ{ñ d	õ !Ô:ð "à,.¬I×,MÒ,MÈdÑ,SÔ,SÑ)�	˜>ð Ý!œLð Ý4EÔ4Sð àð ð  ð  ð  ð  ð  ð  ð" 3Ð2Ð2Ð2Ð2Ð2à!Ÿ]š]™_œ_�
Ø<@�
”Ô$Ð%8Ñ9à$�}ØØ”I×*Ò*Ø'Ø1Ø# ^Ð4Øñ	ô ñô ð ð  =Ð<Ð<Ð<Ð<Ð<àŸ=š=™?œ?ˆLØ(Ô/ˆMð
Ø×/Ò/Ð0GÐ0GÑHÔHð ð Ø=OÐ=OØØØ˜ØØ'Ø&*Ø$(Ø,JØ-1ð
>ñ 
>ô 
>Ñ:‘K�V˜Q ¨]ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øøõ ”=Ô$ÔIð ð ð ÝØFØNð!<ð ðñ ô ð ð ð ðøøøð !œiÔ7ÔF×VÒVÑXÔXˆOØœ	×2Ò2ØÝ”×$Ò$ _Ô%?ÀÑLÔLñô ˆIð &×2Ò2°:¸yÈ"ÈbÑQÔQˆIàNÐNÐNÐNÐNÐNà" IÐKµ°]×5GÒ5GÑ5IÔ5IÑ0JÔ0JÐKÐKˆFØ(×5Ò5ØØ Ý�f‘”Øñ	ô ˆLð 7CÔ6GÔ6LØô7ˆLÔÔ" ?Ñ3ð &ˆDŒJØ×'Ò'¨Ñ+Ô+Ð+ÝÔ4Ý'œn×=Ò=Ñ?Ô?ðñ ô ð õ $Ô;Ý#œ.×9Ò9Ñ;Ô;ð
ñ 
ô 
ˆð 	Œ	Ô×,Ò,¨T°4¸È$ÑOÔOÐOØÐs6   Ã	D ÃDÃ<D ÄDÄD ÄDÄD Ä,EÅETc                 ó´  — |dur|                      ¦   «         }|                      ¦   «         j        }|j        d         }|j        |k    �r| j        rt          dd| › d�dg ¬¦  «         |j        j        rt          dd| › d�d	d
dg¬¦  «         t          j
        j                             ¦   «         }t          j
        j                             d¦  «         	 |j                             dt          j
        j        j        di ¦  «         |j                             dd|                      ¦   «         fi ¦  «         |j                             dt          j
        j        j        |fi ¦  «         t          j
        j                             |¦  «         n)# t          j
        j                             |¦  «         w xY w|                     |¦  «         || _        |rƒ|j        j                             | ¦  «         | j        s]|j        j                             | ¦  «        r>|j        j                             | dt.          j                             d ¦  «        ¦  «         | S )NTr¢   z(Unsupported Tensor.requires_grad_() callr¡  z requires_grad_zaDynamo does not support changes to a Tensor's `requires_grad` through calling `requires_grad_()`.r½   z.requires_grad_() intermediate leaked as outputz³An intermediate tensor with requires_grad_() called on it (or a tensor derived from it) is returned from the compiled region. Graph breaking here to preserve partial acceleration.z8Call .detach() before returning if you only need values.z‚Consume the gradient inside the compiled function (call backward() and use .grad), or move requires_grad_() outside torch.compile.rÞ   ©TrÓ   Úrequires_grad_r@  )r  rÈ   r�   r¥   r|   r‰   r    Úspeculation_logÚgraph_break_on_requires_grad_rP   re   rf   Ú!get_inplace_requires_grad_allowedÚ!set_inplace_requires_grad_allowedr´   Úcreate_noderà   r  r7  r+  rA  Úis_attribute_mutationÚ
store_attrr   r9   rØ   )r�   r�   r|   r�   r¢   Ú
prev_states         rY   Úmethod_requires_grad_z$TensorVariable.method_requires_grad_;  s‚  € ð
  Ð$Ð$Ø)×<Ò<Ñ>Ô>ˆMà�}Š}‰ŒÔ#ˆØœ	 /Ô2ˆØÔ&¨-Ò7Ñ7ð Œ{ð ÝØFØ@¨4Ð@Ð@Ð@ð!Jàðñ ô ð ð Ô!Ô?ð ÝØLØ@¨4Ð@Ð@Ð@ð!$ð
 SðJððñ ô ð õ0 œÔ,×NÒNÑPÔPˆJÝŒHÔ×AÒAÀ$ÑGÔGÐGðRØ”	×%Ò%Ø#Ý”HÔ'ÔIØØñ	ô ð ð ”	×&Ò&Ø!Ø$Ø—]’]‘_”_Ð&Øñ	ô ð ð ”	×%Ò%Ø#Ý”HÔ'ÔIØ�MØñ	ô ð õ ”Ô#×EÒEÀjÑQÔQÐQÐQø•”Ô#×EÒEÀjÑQÔQÐQÐQøøøØ×(Ò(¨Ñ7Ô7Ð7Ø!.ˆDÔØð Ø”	Ô1×8Ò8¸Ñ>Ô>Ð>ð
 ”{ð  r¤yÔ'=×'SÒ'SØñ(ô (ð ð ”IÔ*×5Ò5Ø˜f¥iÔ&@×&GÒ&GÈÑ&MÔ&Mñô ð ð ˆs   ÃBF Æ&F4c                 ó´   — ddl m} |j                             dd|                      ¦   «         fi ¦  «        } |||¦  «         |                      |¦  «         | S )Nr4   r÷   rÓ   Údetach_)r£   rø   r´   rà   rÈ   r¬   )r�   r�   rø   rv   s       rY   Úmethod_detach_zTensorVariable.method_detach_”  so   € Ø*Ð*Ð*Ð*Ð*Ð*à”	×&Ò&ØØØ�]Š]‰_Œ_ÐØñ	
ô 
ˆð 	ˆ�b˜%Ñ Ô Ð Ø×#Ò# BÑ'Ô'Ð'Øˆr[   c                 óN   — t          dd| › d�ddgt          j        ¢¬¦  «         d S )Nz'Unsupported Tensor.share_memory_() callr¡  z share_memory_zTDynamo does not support Tensor.share_memory_() which modifies tensor storage for IPCz7Move share_memory_() call outside the compiled region. r½   )r    r   rÂ   r’   s    rY   Úmethod_share_memory_z#TensorVariable.method_share_memory_¢  sJ   € ÝØ=Ø7 4Ð7Ð7Ð7ØnàIðå"Ô.ðð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r[   c                 ó  — t          |¦  «        dk    rt          |d         t          ¦  «        s,t          |¦  «        dk    r>t          d„ |D ¦   «         ¦  «        r%|                      |dt          |¦  «        |¦  «        S d S )Nr4   r   c              3   óŒ   K  — | ]?}|                      ¦   «         o&t          |                     ¦   «         t          ¦  «        V — Œ@d S rÆ   )rf  rT   r  r`   )rç   Úas     rY   ré   z,TensorVariable.method_new.<locals>.<genexpr>·  s]   è è € ð ð àð ×$Ò$Ñ&Ô&ÐR­:°a×6JÒ6JÑ6LÔ6LÍcÑ+RÔ+Rðð ð ð ð ð r[   Ú	new_empty)r}  rT   r;   ÚallrÓ   rµ  rÆ  s       rY   Ú
method_newzTensorVariable.method_new­  s‰   € õ �‰IŒI˜ŠNˆN�z¨$¨q¬'µ<Ñ@Ô@ˆNÝ�‰IŒI˜ŠNˆNÝð ð àðñ ô ñ ô ð ð ×#Ò# B¨µT¸$±Z´ZÀÑHÔHÐHØˆtr[   r�   c                 ó8  — t          |¦  «        dk    rd S |d         }|                     d¦  «        }|�:|                     ¦   «         sd S |                     ¦   «         t          j        k    rd S t          |¦  «        }|                     dd ¦  «         |                     d|  	                    |d¦  «        ¦  «         |                     d|  	                    |d¦  «        ¦  «         t          j        t          j        ¦  «                             ||g|¦  «        S )Nr4   r   rx   rp   rw   )r}  r¦   rf  r  rP   r  ÚdictÚpopÚ
setdefaultrq  r   rG  r  rÞ   )r�   r�   rý   r•   Údata_argrx   Ú
fwd_kwargss          rY   Úmethod_new_tensorz TensorVariable.method_new_tensor¿  s
  € õ ˆt‰9Œ9˜Š>ˆ>Ø�4Ø˜”7ˆØ—’˜HÑ%Ô%ˆØÐØ×,Ò,Ñ.Ô.ð Ø�tØ×(Ò(Ñ*Ô*­e¬mÒ;Ð;Ø�tÝ˜&‘\”\ˆ
Ø�Š�x Ñ&Ô&Ð&Ø×Ò˜g t×'7Ò'7¸¸GÑ'DÔ'DÑEÔEÐEØ×Ò˜h¨×(8Ò(8¸¸XÑ(FÔ(FÑGÔGÐGÝÔ5µe´lÑCÔC×QÒQØØˆJØñ
ô 
ð 	
r[   ÚUntypedStorageVariablec                 óŠ   — t          | |                      ¦   «         j        j        d                              ¦   «         ¦  «        S r¹   )r"  rÈ   r�   r¥   Úuntyped_storagerÃ   s     rY   Úmethod_untyped_storagez%TensorVariable.method_untyped_storageØ  s:   € õ &Ø�$—-’-‘/”/Ô&Ô+¨OÔ<×LÒLÑNÔNñ
ô 
ð 	
r[   c                 ó`   — | j         s&| j        j                             |¦  «         d| _         d S rÍ   )rƒ   rv   r�   Ú_rename)r�   rõ   s     rY   Úset_name_hintzTensorVariable.set_name_hintß  s2   € ØÔ ð 	%ØŒJŒO×#Ò# DÑ)Ô)Ð)Ø $ˆDÔØˆtr[   Úreversec                 ó  — ddl m} t          |t          ¦  «        s)t	          |¦  «        st          j        |t          ¦  «        S |r|| gn| |g} |j        j	        dt          j        gt          |i ¦  «        ¢R Ž } |||¬¦  «        S ©Nr4   r÷   rÞ   r]  )r£   rø   rT   ru   ra   r7   r×   rß   r´   rà   rt  r*  r0   )r�   r�   rÚ   r)  rø   rý   rv   s          rY   Únb_add_implzTensorVariable.nb_add_implå  s¬   € ð 	+Ð*Ð*Ð*Ð*Ð*å˜5¥.Ñ1Ô1ð 	=Õ5JÈ5Ñ5QÔ5Qð 	=Ý"Ô(¨­^Ñ<Ô<Ð<Ø 'Ð:��tˆ}ˆ}¨d°E¨]ˆØ&�”	Ô&Ø�Xœ\ð
Ý,=¸dÀBÑ,GÔ,Gð
ð 
ð 
ˆð
 ˆ} ¨%Ð0Ñ0Ô0Ð0r[   c           
      óô   — ddl m} |                     ¦   «         st          j        |t
          ¦  «        S |r|| fn| |f\  }} || |j        j        dt          j	        gt          ||gi ¦  «        ¢R Ž ¦  «        S rs  )r£   rø   r^   r7   r×   rß   r´   rà   rt  Úlshiftr0   ©r�   r�   rÚ   r)  rø   ÚlhsÚrhss          rY   Únb_lshift_implzTensorVariable.nb_lshift_implø  ó¥   € ð 	+Ð*Ð*Ð*Ð*Ð*à×$Ò$Ñ&Ô&ð 	=Ý"Ô(¨­^Ñ<Ô<Ð<Ø$+Ð>�E˜4�=�=°$¸°‰ˆˆSØˆ}ØØ"ˆBŒIÔ"Ø¥¤ðÝ3DÀcÈ3ÀZÐQSÑ3TÔ3Tðð ð ñ
ô 
ð 	
r[   c           
      óô   — ddl m} |                     ¦   «         st          j        |t
          ¦  «        S |r|| fn| |f\  }} || |j        j        dt          j	        gt          ||gi ¦  «        ¢R Ž ¦  «        S rs  )r£   rø   r^   r7   r×   rß   r´   rà   rt  Úrshiftr0   r/  s          rY   Únb_rshift_implzTensorVariable.nb_rshift_impl
	  r3  r[   c           
      óô   — ddl m} |                     ¦   «         st          j        |t
          ¦  «        S |r|| fn| |f\  }} || |j        j        dt          j	        gt          ||gi ¦  «        ¢R Ž ¦  «        S rs  )r£   rø   r^   r7   r×   rß   r´   rà   rt  Úor_r0   r/  s          rY   Ú
nb_or_implzTensorVariable.nb_or_impl	  ó¤   € ð 	+Ð*Ð*Ð*Ð*Ð*à×$Ò$Ñ&Ô&ð 	=Ý"Ô(¨­^Ñ<Ô<Ð<Ø$+Ð>�E˜4�=�=°$¸°‰ˆˆSØˆ}ØØ"ˆBŒIÔ"Ø¥¤ðÝ0AÀ3ÈÀ*ÈbÑ0QÔ0Qðð ð ñ
ô 
ð 	
r[   c           
      óô   — ddl m} |                     ¦   «         st          j        |t
          ¦  «        S |r|| fn| |f\  }} || |j        j        dt          j	        gt          ||gi ¦  «        ¢R Ž ¦  «        S rs  )r£   rø   r^   r7   r×   rß   r´   rà   rt  Úand_r0   r/  s          rY   Únb_and_implzTensorVariable.nb_and_impl.	  s¤   € ð 	+Ð*Ð*Ð*Ð*Ð*à×$Ò$Ñ&Ô&ð 	=Ý"Ô(¨­^Ñ<Ô<Ð<Ø$+Ð>�E˜4�=�=°$¸°‰ˆˆSØˆ}ØØ"ˆBŒIÔ"Ø¥¤ðÝ1BÀCÈÀ:ÈrÑ1RÔ1Rðð ð ñ
ô 
ð 	
r[   c           
      óô   — ddl m} |                     ¦   «         st          j        |t
          ¦  «        S |r|| fn| |f\  }} || |j        j        dt          j	        gt          ||gi ¦  «        ¢R Ž ¦  «        S rs  )r£   rø   r^   r7   r×   rß   r´   rà   rt  Úxorr0   r/  s          rY   Únb_xor_implzTensorVariable.nb_xor_impl@	  r:  r[   c           
      ó˜   — ddl m} |r|| fn| |f\  }} || |j        j        dt          j        gt          ||gi ¦  «        ¢R Ž ¦  «        S rs  )r£   rø   r´   rà   rt  rª  r0   r/  s          rY   Únb_multiply_implzTensorVariable.nb_multiply_implR	  s}   € ð 	+Ð*Ð*Ð*Ð*Ð*à$+Ð>�E˜4�=�=°$¸°‰ˆˆSØˆ}ØØ"ˆBŒIÔ"Ø¥¤ðÝ0AÀ3ÈÀ*ÈbÑ0QÔ0Qðð ð ñ
ô 
ð 	
r[   c           
      ó  — t          |t          ¦  «        s)t          |¦  «        st          j        |t
          ¦  «        S ddlm} |r|| fn| |f\  }} || |j        j	        dt          j        gt          ||gi ¦  «        ¢R Ž ¦  «        S rs  )rT   ru   ra   r7   r×   rß   r£   rø   r´   rà   rt  Úfloordivr0   r/  s          rY   Únb_floor_divide_implz#TensorVariable.nb_floor_divide_imple	  s´   € õ ˜5¥.Ñ1Ô1ð 	=Õ5JÈ5Ñ5QÔ5Qð 	=Ý"Ô(¨­^Ñ<Ô<Ð<Ø*Ð*Ð*Ð*Ð*Ð*à$+Ð>�E˜4�=�=°$¸°‰ˆˆSØˆ}ØØ"ˆBŒIÔ"Ø¥Ô!2ðÝ5FÈÈSÀzÐSUÑ5VÔ5Vðð ð ñ
ô 
ð 	
r[   c           
      ó  — t          |t          ¦  «        s)t          |¦  «        st          j        |t
          ¦  «        S ddlm} |r|| fn| |f\  }} || |j        j	        dt          j        gt          ||gi ¦  «        ¢R Ž ¦  «        S rs  )rT   ru   ra   r7   r×   rß   r£   rø   r´   rà   rt  Útruedivr0   r/  s          rY   Únb_true_divide_implz"TensorVariable.nb_true_divide_implz	  s´   € õ ˜5¥.Ñ1Ô1ð 	=Õ5JÈ5Ñ5QÔ5Qð 	=Ý"Ô(¨­^Ñ<Ô<Ð<Ø*Ð*Ð*Ð*Ð*Ð*à$+Ð>�E˜4�=�=°$¸°‰ˆˆSØˆ}ØØ"ˆBŒIÔ"Ø¥Ô!1ðÝ4EÀsÈCÀjÐRTÑ4UÔ4Uðð ð ñ
ô 
ð 	
r[   c           
      ó  — t          |t          ¦  «        s)t          |¦  «        st          j        |t
          ¦  «        S ddlm} |r|| fn| |f\  }} || |j        j	        dt          j        gt          ||gi ¦  «        ¢R Ž ¦  «        S rs  )rT   ru   ra   r7   r×   rß   r£   rø   r´   rà   rt  Úmodr0   r/  s          rY   Únb_remainder_implz TensorVariable.nb_remainder_impl�	  s²   € õ ˜5¥.Ñ1Ô1ð 	=Õ5JÈ5Ñ5QÔ5Qð 	=Ý"Ô(¨­^Ñ<Ô<Ð<Ø*Ð*Ð*Ð*Ð*Ð*à$+Ð>�E˜4�=�=°$¸°‰ˆˆSØˆ}ØØ"ˆBŒIÔ"Ø¥¤ðÝ0AÀ3ÈÀ*ÈbÑ0QÔ0Qðð ð ñ
ô 
ð 	
r[   c                 ól   — |                       ¦   «         j        j        d         }t          |¦  «        dfS )Nr¢   T)rÈ   r�   r¥   r†   rä  s      rY   Ú	hash_implzTensorVariable.hash_impl¤	  s,   € ð �}Š}‰ŒÔ#Ô(¨Ô9ˆÝ�$‰xŒx˜ˆ~Ðr[   c           
      óö   — t          |¦  «        st          j        |t          ¦  «        S |r|| gn| |g}t                               | |j        j        dt          j	        gt          |i ¦  «        ¢R Ž d ¬¦  «        S ©NrÞ   ©rÕ   ©ra   r7   r×   rß   rÔ   rØ   r´   rà   rt  Úsubr0   ©r�   r�   rÚ   r)  rý   s        rY   Únb_subtract_implzTensorVariable.nb_subtract_impl«	  ó”   € õ % UÑ+Ô+ð 	=Ý"Ô(¨­^Ñ<Ô<Ð<Ø 'Ð:��tˆ}ˆ}¨d°E¨]ˆÝ×%Ò%ØØ"ˆBŒIÔ"Ø¥¤ðÝ0AÀ$ÈÑ0KÔ0Kðð ð ð ð &ñ 
ô 
ð 	
r[   c                 óÈ   — t          |t          ¦  «        sdS |                      ¦   «         j        j        d         }|                     ¦   «         j        j        d         }||u S )NFr¢   )rT   r7   rÈ   r�   r¥   )r�   rÚ   r  Úbs       rY   Úis_python_equalzTensorVariable.is_python_equal½	  sT   € Ý˜%¥Ñ1Ô1ð 	Ø�5Ø�MŠM‰OŒOÔ Ô% oÔ6ˆØ�NŠNÑÔÔ!Ô& Ô7ˆØ�Aˆvˆr[   rÆ   ©NF©F)NNNN)rK   Nr  )r�   r@   rK   ru   )r�   r@   rK   r"  )‘rW   Ú
__module__Ú__qualname__Ú__doc__r7   Ú_nonvar_fieldsÚstrrŠ   rP   rU   r,   r  r  rp   rw   rx   r`   rN   r¤   rn   r   rš   r¬   r°   r·   r»   rÄ   rÈ   rË   rÎ   rÙ   râ   Ústaticmethodr  rô   r  r!  r#  r%  r(  r9   r+  r1  r3  r5  r7  r:  r	   r>  rE  rJ  rL  rP  rV  rq  r   rµ  r†  rŒ  r/  Úpropertyrz   rd  re  rŸ  rÓ   rÇ  rÉ  rÅ  rÙ  Úmethod_nelementrÛ  Úmethod_ndimensionrÞ  rå  rè  rì  rö  r   r  r  r  r$  r   r-  rP  rT  rX  r_  rd  rg  ri  rl  rn  rq  rw  r{  r  r‚  r…  rˆ  rœ  r  Úcacherc  r›  rš  rŸ  r¡  r®  r·  r¹  r»  r½  r¿  rÁ  rÄ  rÈ  rË  rÍ  rÒ  rÕ  rÑ  r  r  r  r  r!  r%  r(  r,  r2  r6  r9  r=  r@  rB  rE  rH  rK  rM  rT  rþ  rX  Ú__classcell__©rœ   s   @rY   ru   ru   ´   ss  ø€ € € € € ØGÐGð 	ØØØØØØØØØØØØØØðð  
Ô	'ð!€Nð&Y¨Sð Yð Yð Yð YðB ¤ð Bð Bð Bð Bð. )-Ø)-Ø%)Ø$(ð#&/ð &/ð &/àŒxŒ~ð&/ð Œ{ð	&/ð
 ”ð&/ð ”ð&/ð ð&/ð ð&/ð ð&/ð ð&/ð ð&/ð ð&/ð ð&/ð �S˜#�XŒ Ñ%ð&/ð �c˜3�h” $Ñ&ð&/ð  ˜d‘{ð!&/ð" ˜T‘kð#&/ð$ ð%&/ð& 
ð'&/ð &/ð &/ð &/ð &/ð &/ðR JNð ð  Ø-ð Ø;?À$¹;ð à	ð ð  ð  ð  ðE 3¨¡:ð Eð Eð Eð Eð
Aà'ðAð ˜d™
ðAð ð	Að
 
ðAð Að Að Að*
˜Cð 
ð 
ð 
ð 
ð

Ð7ð 
¸Oð 
ð 
ð 
ð 
ð˜%œ(œ.ð ð ð ð ð˜Tð ð ð ð ð˜4ð ð ð ð ð@Ð7ð @¸Oð @ð @ð @ð @ð8à'ð8ð ð8ð ð	8ð
 
ð8ð 8ð 8ð 8ð" ð/˜%œ,ð /¨4°°S°¬>ð /ð /ð /ñ „\ð/ðb[BØ-ð[BØ58ð[Bà	ð[Bð [Bð [Bð [Bðz7Ð#>ð 7À?ð 7ð 7ð 7ð 7ðØ-ðà	˜4Ñ	ðð ð ð ðØ-ðà	˜4Ñ	ðð ð ð ðØ-ðà	˜4Ñ	ðð ð ð ðØ-ðà	˜DÑ	 ðð ð ð ð8Ð$?ð 8ÀOð 8ð 8ð 8ð 8ðØ-ðà	˜DÑ	 ðð ð ð ðØ-ðà	˜DÑ	 ðð ð ð ðØ-ðà	˜DÑ	 ðð ð ð ðØ-ðà	˜DÑ	 ðð ð ð ð
Ð*Eð 
È(ð 
ð 
ð 
ð 
ðØ-ðà	˜4Ñ	ðð ð ð ð(Ð#>ð (À?ð (ð (ð (ð (ð
;Ø-ð;à	˜DÑ	 ð;ð ;ð ;ð ;ð
Ð'Bð 
Àð 
ð 
ð 
ð 
ð2Ø-ð2Ø58ð2à	ð2ð 2ð 2ð 2ð>[Ø-ð[Ø58ð[à	ð[ð [ð [ð [ð| NRð?
ð ?
Ø-ð?
Ø6>¸s´mÀdÑ6Jð?
à	ˆoÔ	ð?
ð ?
ð ?
ð ?
ðB;à'ð;ð ,ð;ð  ð	;ð
 �?Ô#ð;ð ˜c ?Ð2Ô3ð;ð 
ð;ð ;ð ;ð ;ð&˜Dð &ð &ð &ð &ð ð�e˜C ˜H”oð ð ð ñ „Xðð
N¨¨c¬ð Nð Nð Nð Nð
°T¸#´Yð 
ð 
ð 
ð 
ð
 0à'ð 0ð ð 0ð 
ð	 0ð  0ð  0ð  0ðDzà'ðzð ðzð �?Ô#ð	zð
 -ðzð 
ðzð zð zð zðxAØ-ðAØ69ðAØEHðAà	˜4Ñ	ðAð Að Að Að
CØ-ðCØ69ðCØEHðCà	˜4Ñ	ðCð Cð Cð Cð ,0ð*ð *Øð*Ø! D™jð*à	˜4Ñ	ð*ð *ð *ð *ðX	Ð:ð 	¸ÐQUÑ?Uð 	ð 	ð 	ð 	ð #€OðÐ8ð ¸_ÈtÑ=Sð ð ð ð ð
 #ÐðØ-ðà	˜DÑ	 ðð ð ð ðØ-ðà	˜DÑ	 ðð ð ð ð"Ø-ðà	˜DÑ	 ðð ð ð ð 15ðð à'ðð '¨Ñ-ðð 
˜DÑ	 ð	ð ð ð ð, !Ø"ð	,ð ,à'ð,ð �T‰zð,ð ð	,ð
 ð,ð 
˜4Ñ	ð,ð ,ð ,ð ,ð\
Ø-ð
Ø4Cð
à	'ð
ð 
ð 
ð 
ð2Ø-ðà	˜4Ñ	ðð ð ð ð>Ð&Að >Àoð >ð >ð >ð >ð SXð(6ð (6ð (6Ø-ð(6Ø9HÈ4Ñ9Oð(6à	ð(6ð (6ð (6ð (6ðT(.Ð ;ð (.Àð (.ð (.ð (.ð (.ðV OTð;ð ;Ø! /Ô2ð;ØGKð;à	ˆoÔ	 Ñ	%ð;ð ;ð ;ð ;ð@ ,0Ø/3Ø/3Ø)-ðu-ð u-à'ðu-ð " DÑ(ðu-ð &¨Ñ,ð	u-ð
 &¨Ñ,ðu-ð   $Ñ&ðu-ð 
˜4Ñ	ðu-ð u-ð u-ð u-ðn%à'ð%ð ð%ð "ð	%ð
 
ð%ð %ð %ð %ðCà'ðCð ðCð "ð	Cð
 
ðCð Cð Cð Cð-à'ð-ð  ð-ð 
ð	-ð -ð -ð -ð&à'ðð ðð "ð	ð
 
ðð ð ð ð,
à'ð
ð 
ð
ð 
ð 
ð 
ð<
à'ð
ð 
ð
ð 
ð 
ð 
ð8$Ð!<ð $Àð $ð $ð $ð $ð
à'ð
ð 
ð
ð 
ð 
ð 
ð2&Ð#>ð &À?ð &ð &ð &ð &ð
à'ð
ð 
ð
ð 
ð 
ð 
ð )Ð!<ð )Àð )ð )ð )ð )ð
à'ð
ð 
ð
ð 
ð 
ð 
ð )Ð!<ð )Àð )ð )ð )ð )ð
à'ð
ð 
ð
ð 
ð 
ð 
ð )Ð!<ð )Àð )ð )ð )ð )ð(à'ð(ð ð(ð "ð	(ð
 
ð(ð (ð (ð (ð< Ø„_ð
ð 
ð 
ñ „_ñ „\ð
ð&"Ð!<ð "Àð "ð "ð "ð "ðPÐ7ð P¸Oð Pð Pð Pð Pð
Ð:ð 
¸ð 
ð 
ð 
ð 
ð
%Ð"=ð %À/ð %ð %ð %ð %ð !ðð ð à'ðð ðð ð	ð �T‰zðð 
ˆt‰ðð ð ð ð$-à'ð-ð ð-ð ð	-ð
 
ð-ð -ð -ð -ðB
à'ð
ð ð
ð "ð	
ð
 
ð
ð 
ð 
ð 
ð
à'ð
ð ð
ð "ð	
ð
 
ð
ð 
ð 
ð 
ð
à'ð
ð ð
ð "ð	
ð
 
ð
ð 
ð 
ð 
ð
à'ð
ð ð
ð "ð	
ð
 
ð
ð 
ð 
ð 
ðà'ðð ðð "ð	ð
 
ðð ð ð ð6 )-ðð ð à'ðð ðð
  Ñ%ðð 
˜4Ñ	ðð ð ð ð6 )-ðð ð à'ðð "ðð "ð	ð  Ñ%ðð 
˜4Ñ	ðð ð ð ð&6Ø-ð6Ø5Dð6à	ð6ð 6ð 6ð 6ð)Ø-ð)Ø4Cð)à	ð)ð )ð )ð )ð
Pà'ðPð ðPð "ð	Pð
 
ðPð Pð Pð Pð
à'ð
ð ð
ð "ð	
ð
 
ð
ð 
ð 
ð 
ðpØ-ðpØ58ðpØ@Oðpà	ðpð pð pð pðj 15ðWð Wà'ðWð ˜oÑ-ðWð 
ð	Wð Wð Wð Wðrð ð ð ð	
 hð 	
ð 	
ð 	
ð 	
ðà'ðð ðð "ð	ð
 
˜4Ñ	ðð ð ð ð$
Øð
à'ð
ð ð
ð "ð	
ð
 
˜4Ñ	ð
ð 
ð 
ð 
ð2
Ø-ð
à	!ð
ð 
ð 
ð 
ð #ð ¨$ð ð ð ð ð ð	1ð 1à'ð1ð ð1ð ð	1ð
 
ð1ð 1ð 1ð 1ð. ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð, ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð, ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð, ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð, ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð, ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð. ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð2 ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð2 ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð*Ð7ð ¸EÀ#ÀtÀ)Ô<Lð ð ð ð ð ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð$ Vð °ð ð ð ð ð ð ð ð r[   ru   c                   ó¨  ‡ — e Zd ZdZddhej        £Zdefd„Ze	 d9ddde	de	dz  d	e	dd
f
d„¦   «         Z
de	de	de	ddfˆ fd„Zdefd„Zdefd„Zde	fd„Zdddefd„Zdddededefd„Zddde	defd„Z	 d9ded         deez  ez  fd„Zdddedee         deeef         def
d„Zdddefˆ fd„Zdddefd„Zddde	de	defd„Z	 d:ddded!edefd"„Z	 d:ddded!edefd#„Z 	 d:ddded!edefd$„Z!	 d:ddded!edefd%„Z"	 d:ddded!edefd&„Z#	 d:ddded!edefd'„Z$	 d:ddded!edefd(„Z%	 d:ddded!edefd)„Z&	 d:ddded!edefd*„Z'	 d:ddded!edefd+„Z(	 d:ddded!edefd,„Z)dddefd-„Z*ddde	de	defd.„Z+dddefd/„Z,ddde	de	defd0„Z-ddde.eef         fd1„Z/dddefd2„Z0ddde	de	defd3„Z1dddefd4„Z2ddde	de	defd5„Z3defd6„Z4defd7„Z5de6defd8„Z7ˆ xZ8S );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.
    rv   rÕ   rK   c                 ó*   — t          | j        ¦  «        S rÆ   )ÚreprrÕ   r’   s    rY   r»   zSymNodeVariable.debug_reprÒ	  s   € Ý�D”LÑ!Ô!Ð!r[   Nr�   r@   rË  r7   c                 ó8  — |€t          |j        |¦  «        }d|j        j        v r;|j        j        d         |k    r%t          d|j        j        d         › d|› �¦  «        ‚t	          |j        |¦  «         t          |t          j        t          t          f¦  «        r@t          |t          j        ¦  «        rt          |¦  «        n|}t          j        ||¦  «        S t          ||fi |¤Ž}|j        j        dk    r|j        j                             |¦  «         |S )Nr¢   zproxy example_value z != r—   )r+   r�   r¥   r  r2   rT   ÚsympyÚIntegerr`   rN   r7   r×   rÔ   r›   r´   Úcurrent_tracerÚrecord_proxyable_vt)r÷  r�   rv   rÕ   rË  r#  s         rY   rØ   zSymNodeVariable.createÕ	  s  € ð ˆ?Ý$ U¤Z°Ñ4Ô4ˆGØ˜eœjœoÐ-Ð-ØŒzŒ˜Ô/°7Ò:Ð:Ý$ØZ¨5¬:¬?¸?Ô+KÐZÐZÐQXÐZÐZñô ð õ 	˜%œ* gÑ.Ô.Ð.å�g¥¤­sµDÐ9Ñ:Ô:ð 	6Ý&0°½%¼-Ñ&HÔ&HÐU•c˜'‘l”l�lÈgˆGÝ"Ô(¨¨WÑ5Ô5Ð5å˜e WÐ8Ð8°Ð8Ð8ˆØŒ:Œ=˜MÒ)Ð)ØŒIÔ$×8Ò8¸Ñ=Ô=Ð=Øˆ
r[   r•   c                 ód   •—  t          ¦   «         j        di |¤Ž || _        || _        d | _        d S ©Nr˜   )r™   rš   rv   rÕ   Ú_tensor_var)r�   rv   rÕ   r•   rœ   s       €rY   rš   zSymNodeVariable.__init__ï	  s<   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒ
àˆŒØ26ˆÔÐÐr[   c                 ó€   — t          | j        t          ¦  «        r| j        j        j        S t          | j        ¦  «        S rÆ   )rT   rÕ   r   r�   Úpytyper¤   r’   s    rY   rË   zSymNodeVariable.python_typeö	  s4   € Ý�d”l¥HÑ-Ô-ð 	&Ø”<Ô$Ô+Ð+å˜œÑ%Ô%Ð%r[   c                 ó   — dS rÍ   r˜   r’   s    rY   r^   zSymNodeVariable.is_symnode_likeü	  rÏ   r[   c                 ó   — | j         S rÆ   rÇ   r’   s    rY   rÈ   zSymNodeVariable.as_proxyÿ	  rÉ   r[   c                 óD  — t          | j        t          j        ¦  «        r| S t          | j        t          j        t          j        f¦  «        s$t          dt          | j        ¦  «        › �¦  «        ‚t           	                    ||  
                    ¦   «         dk    ¦  «        S )Nz!Expected SymInt or SymFloat, got r   )rT   rÕ   rP   rÖ   ÚSymIntÚSymFloatr  r¤   rÔ   rØ   rÈ   rÃ   s     rY   rÙ   zSymNodeVariable.bool_impl
  sˆ   € õ �d”l¥E¤MÑ2Ô2ð 	ØˆKÝ˜$œ,­¬µu´~Ð(FÑGÔGð 	Ý ØHµD¸¼Ñ4FÔ4FÐHÐHñô ð õ ×%Ò% b¨$¯-ª-©/¬/¸QÒ*>Ñ?Ô?Ð?r[   rÚ   r›   c                 óÊ  — t          |t          t          t          f¦  «        sU|dv r8t          |         }t          j        | |t          ¦   «         d¦  «        ¦  «        S t          j        t          ¦  «        S t          |         }|j
                             d||                      ¦   «         |                     ¦   «         fi ¦  «        }t                               ||d¬¦  «        S )z4SymNode tp_richcompare: symbolic numeric comparison.©Ú__eq__Ú__ne__NrÞ   rP  )rT   rÔ   r9   ru   r(   r7   r×   rþ  rØ   rß   r´   rà   rÈ   )r�   r�   rÚ   r›   rá   rv   s         rY   râ   z SymNodeVariable.richcompare_impl
  sÆ   € õ ˜%¥/Õ3CÅ^Ð!TÑUÔUð 	;ØÐ)Ð)Ð)Ý.¨rÔ2�Ý&Ô,¨R°°µv±x´xÀÑ1FÔ1FÑGÔGÐGÝ#Ô*­>Ñ:Ô:Ð:Ý& rÔ*ˆØ”	×&Ò&Ø˜U T§]¢]¡_¤_°e·n²nÑ6FÔ6FÐ$GÈñ
ô 
ˆõ ×%Ò% b¨%¸Ð%Ñ>Ô>Ð>r[   rp   c           	      ó¼   — | j         €Ot          j        |t          j        ¦  «                             || gdt          j        ||¦  «        i¦  «        | _         | j         S )Nrp   )rq  r7   r×   rP   Úscalar_tensorrÞ   )r�   r�   rp   s      rY   Ú	as_tensorzSymNodeVariable.as_tensor#
  s[   € ØÔÐ#Ý.Ô4Ø•EÔ'ñ ô  çŠm˜B  ¨µ/Ô2GÈÈEÑ2RÔ2RÐ(SÑTÔTð Ôð ÔÐr[   Úoutput_graphr?   c                 óà   — 	 t          | j        ¦  «        S # t          $ rM}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   rP   r  ÚexperimentalÚ_configÚno_data_dependent_graph_breakr"   r#   ÚANTI_PATTERNr_  )r�   r€  rÀ  s      rY   r~  zSymNodeVariable.evaluate_expr*
  s}   € ð
	Ý ¤Ñ-Ô-Ð-øÝ*ð 	ð 	ð 	ÝŒxÔ$Ô,ÔJð ØåÝÔ*ØPÍÈAÉÌÐPÐPØ5ðñ ô ð øøøøð		øøøs   ‚ –
A- AA(Á(A-rõ   rý   c           
      ól   — ddl m}  || |j        j        d|gt	          | g|¢|¦  «        ¢R Ž ¦  «        S )Nr4   r÷   rÓ   )r£   rø   r´   rà   r0   )r�   r�   rõ   rý   r•   rø   s         rY   rÓ   zSymNodeVariable.call_method9
  sf   € ð 	+Ð*Ð*Ð*Ð*Ð*àˆ}ØØ"ˆBŒIÔ"ØØðõ # D =¨4 =°&Ñ9Ô9ðð ð ñ
ô 
ð 	
r[   c                 óð   •— |                       ¦   «         }|t          t          fv r1t          j                             |                      ¦   «         ¦  «        S t          ¦   «                              |¦  «        S rÆ   )	rË   r`   rN   r   r9   rØ   r~  r™   rg  )r�   r�   rs  rœ   s      €rY   rg  zSymNodeVariable.nb_index_implK
  s`   ø€ ð ×!Ò!Ñ#Ô#ˆØ•c�4�[Ð Ð ÝÔ-×4Ò4°T×5GÒ5GÑ5IÔ5IÑJÔJÐJÝ‰wŒw×$Ò$ RÑ(Ô(Ð(r[   c           	      óŽ   — ddl m}  |||j                             dt          |                      ¦   «         fi ¦  «        ¬¦  «        S r+  )r£   rø   r´   rà   r   rÈ   rv  s      rY   ri  zSymNodeVariable.nb_int_implY
  s^   € ð 	+Ð*Ð*Ð*Ð*Ð*àˆ}ØØ”)×(Ò(ØÝØ—’‘”Ð"Øñ	ô ð
ñ 
ô 
ð 	
r[   c                 ó,   — |                       |¦  «        S rÆ   rk  rÆ  s       rY   rl  zSymNodeVariable.method___int__l
  s   € ð ×Ò Ñ#Ô#Ð#r[   Fr)  c           
      óö   — t          |¦  «        st          j        |t          ¦  «        S |r|| gn| |g}t                               | |j        j        dt          j	        gt          |i ¦  «        ¢R Ž d ¬¦  «        S rO  )ra   r7   r×   rß   rÔ   rØ   r´   rà   rt  r*  r0   rS  s        rY   r,  zSymNodeVariable.nb_add_implq
  rU  r[   c           
      óð   — |                      ¦   «         st          j        |t          ¦  «        S t                               | |j        j        dt          j	        gt          | |gi ¦  «        ¢R Ž d ¬¦  «        S rO  )r^   r7   r×   rß   rÔ   rØ   r´   rà   rt  r8  r0   ©r�   r�   rÚ   r)  s       rY   r9  zSymNodeVariable.nb_or_implƒ
  ó‡   € ð ×$Ò$Ñ&Ô&ð 	=Ý"Ô(¨­^Ñ<Ô<Ð<Ý×%Ò%ØØ"ˆBŒIÔ"Ø¥¤ðÝ0AÀ4ÈÀ-ÐQSÑ0TÔ0Tðð ð ð ð &ñ 
ô 
ð 	
r[   c           
      óð   — |                      ¦   «         st          j        |t          ¦  «        S t                               | |j        j        dt          j	        gt          | |gi ¦  «        ¢R Ž d ¬¦  «        S rO  )r^   r7   r×   rß   rÔ   rØ   r´   rà   rt  r<  r0   rŽ  s       rY   r=  zSymNodeVariable.nb_and_impl“
  s‡   € ð ×$Ò$Ñ&Ô&ð 	=Ý"Ô(¨­^Ñ<Ô<Ð<Ý×%Ò%ØØ"ˆBŒIÔ"Ø¥¤ðÝ1BÀDÈ%À=ÐRTÑ1UÔ1Uðð ð ð ð &ñ 
ô 
ð 	
r[   c           
      óð   — |                      ¦   «         st          j        |t          ¦  «        S t                               | |j        j        dt          j	        gt          | |gi ¦  «        ¢R Ž d ¬¦  «        S rO  )r^   r7   r×   rß   rÔ   rØ   r´   rà   rt  r?  r0   rŽ  s       rY   r@  zSymNodeVariable.nb_xor_impl£
  r�  r[   c           
      ó   — |                      ¦   «         st          j        |t          ¦  «        S |r|| gn| |g}t                               | |j        j        dt          j	        gt          |i ¦  «        ¢R Ž d ¬¦  «        S rO  )r^   r7   r×   rß   rÔ   rØ   r´   rà   rt  r.  r0   rS  s        rY   r2  zSymNodeVariable.nb_lshift_impl³
  ó˜   € ð ×$Ò$Ñ&Ô&ð 	=Ý"Ô(¨­^Ñ<Ô<Ð<Ø 'Ð:��tˆ}ˆ}¨d°E¨]ˆÝ×%Ò%ØØ"ˆBŒIÔ"Ø¥¤ðÝ3DÀTÈ2Ñ3NÔ3Nðð ð ð ð &ñ 
ô 
ð 	
r[   c           
      ó   — |                      ¦   «         st          j        |t          ¦  «        S |r|| gn| |g}t                               | |j        j        dt          j	        gt          |i ¦  «        ¢R Ž d ¬¦  «        S rO  )r^   r7   r×   rß   rÔ   rØ   r´   rà   rt  r5  r0   rS  s        rY   r6  zSymNodeVariable.nb_rshift_implÄ
  r“  r[   c           
      óö   — t          |¦  «        st          j        |t          ¦  «        S |r|| gn| |g}t                               | |j        j        dt          j	        gt          |i ¦  «        ¢R Ž d ¬¦  «        S rO  rQ  rS  s        rY   rT  z SymNodeVariable.nb_subtract_implÕ
  rU  r[   c           
      ó   — t          |¦  «        st          j        |t          ¦  «        S |r|| fn| |f\  }}t                               | |j        j        dt          j	        gt          ||gi ¦  «        ¢R Ž d ¬¦  «        S rO  )ra   r7   r×   rß   rÔ   rØ   r´   rà   rt  rª  r0   ©r�   r�   rÚ   r)  r0  r1  s         rY   rB  z SymNodeVariable.nb_multiply_implç
  sœ   € õ % UÑ+Ô+ð 	=Ý"Ô(¨­^Ñ<Ô<Ð<Ø$+Ð>�E˜4�=�=°$¸°‰ˆˆSÝ×%Ò%ØØ"ˆBŒIÔ"Ø¥¤ðÝ0AÀ3ÈÀ*ÈbÑ0QÔ0Qðð ð ð ð &ñ 
ô 
ð 	
r[   c           
      ó   — t          |¦  «        st          j        |t          ¦  «        S |r|| fn| |f\  }}t                               | |j        j        dt          j	        gt          ||gi ¦  «        ¢R Ž d ¬¦  «        S rO  )ra   r7   r×   rß   rÔ   rØ   r´   rà   rt  rD  r0   r—  s         rY   rE  z$SymNodeVariable.nb_floor_divide_implù
  sž   € õ % UÑ+Ô+ð 	=Ý"Ô(¨­^Ñ<Ô<Ð<Ø$+Ð>�E˜4�=�=°$¸°‰ˆˆSÝ×%Ò%ØØ"ˆBŒIÔ"Ø¥Ô!2ðÝ5FÈÈSÀzÐSUÑ5VÔ5Vðð ð ð ð &ñ 
ô 
ð 	
r[   c           
      ó   — t          |¦  «        st          j        |t          ¦  «        S |r|| fn| |f\  }}t                               | |j        j        dt          j	        gt          ||gi ¦  «        ¢R Ž d ¬¦  «        S rO  )ra   r7   r×   rß   rÔ   rØ   r´   rà   rt  rG  r0   r—  s         rY   rH  z#SymNodeVariable.nb_true_divide_impl
  sž   € õ % UÑ+Ô+ð 	=Ý"Ô(¨­^Ñ<Ô<Ð<Ø$+Ð>�E˜4�=�=°$¸°‰ˆˆSÝ×%Ò%ØØ"ˆBŒIÔ"Ø¥Ô!1ðÝ4EÀsÈCÀjÐRTÑ4UÔ4Uðð ð ð ð &ñ 
ô 
ð 	
r[   c           
      ó   — t          |¦  «        st          j        |t          ¦  «        S |r|| fn| |f\  }}t                               | |j        j        dt          j	        gt          ||gi ¦  «        ¢R Ž d ¬¦  «        S rO  )ra   r7   r×   rß   rÔ   rØ   r´   rà   rt  rJ  r0   r—  s         rY   rK  z!SymNodeVariable.nb_remainder_impl  sœ   € õ % UÑ+Ô+ð 	=Ý"Ô(¨­^Ñ<Ô<Ð<Ø$+Ð>�E˜4�=�=°$¸°‰ˆˆSÝ×%Ò%ØØ"ˆBŒIÔ"Ø¥¤ðÝ0AÀ3ÈÀ*ÈbÑ0QÔ0Qðð ð ð ð &ñ 
ô 
ð 	
r[   c           	      óŽ   — ddl m}  |||j                             dt          |                      ¦   «         fi ¦  «        ¬¦  «        S r+  )r£   rø   r´   rà   r   rÈ   rv  s      rY   rn  zSymNodeVariable.nb_float_impl,  s^   € ð
 	+Ð*Ð*Ð*Ð*Ð*àˆ}ØØ”)×(Ò(ØÝØ—’‘”Ð"Øñ	ô ð
ñ 
ô 
ð 	
r[   c                 ó,   — |                       |¦  «        S rÆ   rp  rÆ  s       rY   rq  z SymNodeVariable.method___float__=  s   € ð ×!Ò! "Ñ%Ô%Ð%r[   c                 ó„   — t                                |t          j        |                      ¦   «         ¦  «        d ¬¦  «        S ©NrP  )rÔ   rØ   rt  ru  rÈ   rÃ   s     rY   rw  z SymNodeVariable.nb_negative_implB  ó<   € õ ×%Ò%ØÝŒL˜Ÿš™œÑ)Ô)Øð &ñ 
ô 
ð 	
r[   c                 ó,   — |                       |¦  «        S rÆ   rz  rÆ  s       rY   r{  zSymNodeVariable.method___neg__L  ó   € ð ×$Ò$ RÑ(Ô(Ð(r[   c                 óH   — t          |                      ¦   «         ¦  «        dfS rY  ©Úhashr~  rÃ   s     rY   rM  zSymNodeVariable.hash_implQ  s!   € Ý�D×&Ò&Ñ(Ô(Ñ)Ô)¨5Ð0Ð0r[   c                 ó„   — t                                |t          j        |                      ¦   «         ¦  «        d ¬¦  «        S rž  )rÔ   rØ   rt  r~  rÈ   rÃ   s     rY   r  z SymNodeVariable.nb_positive_implT  rŸ  r[   c                 ó,   — |                       |¦  «        S rÆ   r�  rÆ  s       rY   r‚  zSymNodeVariable.method___pos__^  r¡  r[   c                 ó„   — t                                |t          j        |                      ¦   «         ¦  «        d ¬¦  «        S rž  )rÔ   rØ   rt  r„  rÈ   rÃ   s     rY   r…  z SymNodeVariable.nb_absolute_implc  rŸ  r[   c                 ó,   — |                       |¦  «        S rÆ   r‡  rÆ  s       rY   rˆ  zSymNodeVariable.method___abs__m  r¡  r[   c                 ó   — dS rÍ   r˜   r’   s    rY   Úis_python_hashablez"SymNodeVariable.is_python_hashabler  rÏ   r[   c                 óD   — t          |                      ¦   «         ¦  «        S rÆ   r£  r’   s    rY   Úget_python_hashzSymNodeVariable.get_python_hashu  s   € õ �D×&Ò&Ñ(Ô(Ñ)Ô)Ð)r[   c                 óþ   — t          |t          ¦  «        r*|                      ¦   «         |                     ¦   «         k    S t          |t          ¦  «        o)|                      ¦   «         |                     ¦   «         k    S rÆ   )rT   rÔ   r~  r7   r  )r�   rÚ   s     rY   rX  zSymNodeVariable.is_python_equalz  sr   € Ý�e�_Ñ-Ô-ð 	AØ×%Ò%Ñ'Ô'¨5×+>Ò+>Ñ+@Ô+@Ò@Ð@õ �u�oÑ.Ô.ð CØ×"Ò"Ñ$Ô$¨×(@Ò(@Ñ(BÔ(BÒBð	
r[   rÆ   rZ  )9rW   r[  r\  r]  r7   r^  r_  r»   Úclassmethodr   rØ   rš   r¤   rË   rN   r^   rÈ   rÙ   râ   ru   r  r
   r`   r_   r~  rµ  r  rÓ   rg  ri  rl  r,  r9  r=  r@  r2  r6  rT  rB  rE  rH  rK  rn  rq  rw  r{  rn   rM  r  r‚  r…  rˆ  rª  r¬  rþ  rX  re  rf  s   @rY   rÔ   rÔ   Å	  sÊ  ø€ € € € € ðð ð 	Øðð 
Ô	'ð€Nð"˜Cð "ð "ð "ð "ð ð
 #ð	ð à'ðð ðð �t‘ð	ð
 ðð 
ðð ð ñ „[ðð27˜cð 7¨Cð 7¸3ð 7À4ð 7ð 7ð 7ð 7ð 7ð 7ð&˜Tð &ð &ð &ð &ð ð ð ð ð ð˜#ð ð ð ð ð@à'ð@ð 
ð@ð @ð @ð @ð?à'ð?ð ð?ð ð	?ð
 
ð?ð ?ð ?ð ?ð$ Ð7ð  Àð  Èð  ð  ð  ð  ð 7;ðð Ø$ ]Ô3ðà	�‰�eÑ	ðð ð ð ð
à'ð
ð ð
ð �?Ô#ð	
ð
 �S˜/Ð)Ô*ð
ð 
ð
ð 
ð 
ð 
ð$)à'ð)ð 
ð)ð )ð )ð )ð )ð )ð
à'ð
ð 
ð
ð 
ð 
ð 
ð&$Ø-ð$Ø69ð$ØEHð$à	ð$ð $ð $ð $ð ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð, ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð( ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð( ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð( ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð* ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð* ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð, ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð, ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð* ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð* ð	
ð 
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð"
à'ð
ð 
ð
ð 
ð 
ð 
ð"&Ø-ð&Ø69ð&ØEHð&à	ð&ð &ð &ð &ð

à'ð
ð 
ð
ð 
ð 
ð 
ð)Ø-ð)Ø69ð)ØEHð)à	ð)ð )ð )ð )ð
1Ð7ð 1¸EÀ#ÀtÀ)Ô<Lð 1ð 1ð 1ð 1ð
à'ð
ð 
ð
ð 
ð 
ð 
ð)Ø-ð)Ø69ð)ØEHð)à	ð)ð )ð )ð )ð

à'ð
ð 
ð
ð 
ð 
ð 
ð)Ø-ð)Ø69ð)ØEHð)à	ð)ð )ð )ð )ð
 Dð ð ð ð ð* ð *ð *ð *ð *ð

 Vð 
°ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r[   rÔ   c                   ód  ‡ — e Zd ZdZedddej        j        dedd fd„¦   «         Z	de
fd„Zdddeee
f         fd	„Zddd
ededefd„Zdddedefd„Zededee         deeef         deee         eeef         f         fd„¦   «         Zdddedee         deeef         def
ˆ fd„Zdefd„Zˆ xZS )r  z}
    Represents a np.ndarray, but backed by torch Tensor via torch._numpy.ndarray.
    Use this for Tensor.numpy() call.
    r�   r@   rv   rË  rK   c                 ó0   — ddl m}  |dt          | |dœ|¤ŽS )Nr4   rÜ   rv  r˜   )r£   rÝ   r  )r�   rv   rË  rÝ   s       rY   rØ   zNumpyNdarrayVariable.createŠ  sH   € ð 	/Ð.Ð.Ð.Ð.Ð.à Ð ð 
Ý+ØØð
ð 
ð ð	
ð 
ð 	
r[   c                 ó   — dS rY  r˜   r’   s    rY   Úis_hashablez NumpyNdarrayVariable.is_hashable—  s   € Øˆur[   c                 ó*   — ddl m}  ||d¦  «         d S )Nr   )Úraise_type_errorz unhashable type: 'numpy.ndarray')r  r´  )r�   r�   r´  s      rY   rM  zNumpyNdarrayVariable.hash_implš  s.   € Ø*Ð*Ð*Ð*Ð*Ð*àÐ˜Ð?Ñ@Ô@Ð@Ð@Ð@r[   rÚ   r›   c                 ól  — ddl m} t          |t          t          t
          f¦  «        st	          j        t          ¦  «        S t          |         }|j	         
                    d ||¦  «        |                      ¦   «         |                     ¦   «         fi ¦  «        }t                               ||¦  «        S )zKndarray tp_richcompare: element-wise comparison via numpy_operator_wrapper.r   )Únumpy_operator_wrapperrÞ   )rR   r¶  rT   rÔ   r9   ru   rØ   rß   r(   r´   rà   rÈ   r  )r�   r�   rÚ   r›   r¶  rá   rv   s          rY   râ   z%NumpyNdarrayVariable.richcompare_implŸ  s¨   € ð 	3Ð2Ð2Ð2Ð2Ð2å˜%¥/Õ3CÅ^Ð!TÑUÔUð 	;Ý#Ô*­>Ñ:Ô:Ð:Ý& rÔ*ˆØ”	×&Ò&ØØ"Ð" 5Ñ)Ô)Ø�]Š]‰_Œ_˜eŸnšnÑ.Ô.Ð/Øñ	
ô 
ˆõ $×*Ò*¨2¨uÑ5Ô5Ð5r[   rõ   c                 óŽ  ‡ ‡‡‡	‡
— ddl mŠ	 ddlmŠ
 d }‰                      ¦   «         j        j        d         }t          j        |¦  «        }dt          fˆˆ	ˆ ˆˆ
fd„}‰dv rN‰j
                             d	‰	‰                      ¦   «         ‰fi ¦  «        }t                               ‰|¦  «        }�n‰d
v r#t          j        ‰t          |‰¦  «        ¦  «        S ‰dv rUt!          t          |‰¦  «        x}¦  «        s,t          j        ‰t#          d„ |D ¦   «         ¦  «        ¦  «        S  |¦   «         S ‰dk    rBt!          |j        x}¦  «        s"t          j        ‰t'          |¦  «        ¦  «        S  |¦   «         S ‰dv rt)          dd‰ › d‰› �d‰› d�g ¬¦  «         n#‰dk    rt)          dd‰ › d‰› �d‰› d�g ¬¦  «         |€t*          ‚|S )Nr   )Únumpy_attr_wrapperr4   r÷   r¢   rK   c            	      óz   •—  ‰‰‰j                              d‰‰                     ¦   «         ‰ fi ¦  «        ¦  «        S )NrÞ   )r´   rà   rÈ   )rõ   r¸  r�   r�   rø   s   €€€€€rY   Úinsert_into_graphz;NumpyNdarrayVariable.var_getattr.<locals>.insert_into_graphÂ  sG   ø€ Ø �=ØØ”	×&Ò&Ø#Ð%7¸$¿-º-¹/¼/È4Ð9PÐRTñô ñô ð r[   )ÚTÚrealÚimagÚflatrÞ   )ry   r  )ro   r{   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S rÆ   rÑ  rÒ  s     rY   ré   z3NumpyNdarrayVariable.var_getattr.<locals>.<genexpr>ä  s(   è è € Ð6IÐ6IÀ!µs¸1±v´vÐ6IÐ6IÐ6IÐ6IÐ6IÐ6Ir[   rz   )rö  Úflagsrp   z$Unsupported ndarray attribute accessr<  rX  z3Dynamo currently does not support tracing `ndarray.r®  r½   Ú__version__z&Unsupported ndarray.__version__ access)rR   r¸  r£   rø   rÈ   r�   r¥   ÚtnpÚndarrayr7   r´   rà   r  rØ   r×   rV   r   rn   rz   r`   r    r  )r�   r�   rõ   ro  r¢   Úexample_ndarrayrº  rv   rÓ  r¸  rø   s   ```      @@rY   rq  z NumpyNdarrayVariable.var_getattr³  sp  øøøøø€ ð 	/Ð.Ð.Ð.Ð.Ð.Ø*Ð*Ð*Ð*Ð*Ð*àˆàŸš™œÔ,Ô1°/ÔBˆÝœ+ mÑ4Ô4ˆð	¥?ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð Ð0Ð0Ð0Ø”I×*Ò*ØØ"Ø—’‘” $Ð'Øñ	ô ˆEõ *×0Ò0°°UÑ;Ô;ˆF‰Fð Ð)Ð)Ð)Ý"Ô(¨­W°_ÀdÑ-KÔ-KÑLÔLÐLØÐ(Ð(Ð(Ý#­°À$Ñ)GÔ)GÐ$G AÑHÔHð KÝ&Ô,¨RµÐ6IÐ6IÀqÐ6IÑ6IÔ6IÑ1IÔ1IÑJÔJÐJØ$Ð$Ñ&Ô&Ð&Ø�VŠ^ˆ^Ý#¨Ô)=Ð$= AÑ>Ô>ð 9Ý&Ô,¨Rµ°Q±´Ñ8Ô8Ð8Ø$Ð$Ñ&Ô&Ð&ØÐ/Ð/Ð/ÝØ>Ø4 tÐ4Ð4¨dÐ4Ð4ØZÐRVÐZÐZÐZØð	ñ ô ð ð ð �]Ò"Ð"ÝØ@Ø4 tÐ4Ð4¨dÐ4Ð4ØZÐRVÐZÐZÐZØð	ñ ô ð ð ˆ>Ý%Ð%Øˆr[   rý   r•   c                 ób   ‡— | dk    r%dddœŠˆfd„|                      ¦   «         D ¦   «         }||fS )NÚclipÚminÚmax)Úa_minÚa_maxc                 óD   •— i | ]\  }}‰                      ||¦  «        |“ŒS r˜   )r¦   )rç   rª   r«   Úkwargs_renames      €rY   r­  z3NumpyNdarrayVariable.patch_args.<locals>.<dictcomp>  s/   ø€ ÐLÐLÐL±T°Q¸�m×'Ò'¨¨1Ñ-Ô-¨qÐLÐLÐLr[   )r§   )rõ   rý   r•   rÌ  s      @rY   Ú
patch_argszNumpyNdarrayVariable.patch_argsü  sF   ø€ ð �6Š>ˆ>Ø&+°eÐ<Ð<ˆMØLÐLÐLÐL¸V¿\º\¹^¼^ÐLÑLÔLˆFØ�Vˆ|Ðr[   c                 óÄ  •— ddl m} ddlm} |                      |||¦  «        \  }}|dk    r’ddlm} d }d|v r	|d         }nt          |¦  «        dk    r|d         }|d uo|                     d	¦  «        }	t          ||¦  «        o|j
        t          u }
|	s|
r' |d
d| › d|› d|› d|› �dg t          j        ¢¬¦  «         |dv r$t          ¦   «                              ||||¦  «        S |dv r |dd| › d|› d|› d|› �d|› d�g ¬¦  «          |j        j        d ||¦  «        gt%          | gt'          |¦  «        z   |¦  «        ¢R Ž }t(                               ||¦  «        S )Nr   r=  )Únumpy_method_wrapperÚastyper4   )ÚBuiltinVariablerp   r   ÚOzndarray.astype(object)r¡  rX  z­`ndarray.astype('O')` or `ndarray.astype(object)` is not supported by torch.compile, as there is no equivalent to object type in torch.Tensor. This will be executed eagerly.r½   )Ú__len__rz   r  Ú__iter__)ÚtostringÚtobytesÚ__delattr__zUnsupported ndarray method callz	`ndarray.z&()` is not modelled in `torch._numpy`.rÞ   )r  r    rR   rÏ  rÍ  ÚbuiltinrÑ  r}  Úis_constant_matchrT   rp  rþ  r   rá  r™   rÓ   r´   rà   r0   rµ  r  rØ   )r�   r�   rõ   rý   r•   r    rÏ  rÑ  Ú	dtype_argÚis_object_strÚis_object_typerv   rœ   s               €rY   rÓ   z NumpyNdarrayVariable.call_method  s   ø€ ð 	(Ð'Ð'Ð'Ð'Ð'Ø0Ð0Ð0Ð0Ð0Ð0à—’ t¨T°6Ñ:Ô:‰ˆˆfà�8ÒÐØ0Ð0Ð0Ð0Ð0Ð0àˆIØ˜&Ð Ð Ø" 7œO�	�	Ý�T‘”˜Q’�Ø  œG�	Ø%¨TÐ1ÐV°i×6QÒ6QÐRUÑ6VÔ6VˆMå˜9 oÑ6Ô6ÐQ¸9¼<Í6Ð;Qð ð ð 
 ð 
Ø�Ø4ØH¨4ÐHÐH°$ÐHÐH¸ÐHÐHÀÐHÐHð9ð ;Õ-Ô9Ð:ð	ñ 	ô 	ð 	ð Ð<Ð<Ð<å‘7”7×&Ò& r¨4°°vÑ>Ô>Ð>ØÐ9Ð9Ð9ØˆMØ9ØD tÐDÐD¨dÐDÐD°TÐDÐD¸FÐDÐDØT¨ÐTÐTÐTØð	ñ ô ð ð '�”	Ô&ØØ Ð  Ñ&Ô&ð
õ  ˜v­¨T©
¬
Ñ2°FÑ;Ô;ð
ð 
ð 
ˆõ
 $×*Ò*¨2¨uÑ5Ô5Ð5r[   c                 ó6   — t           �t           j        S t          S rÆ   )r  rÃ  r   r’   s    rY   rË   z NumpyNdarrayVariable.python_type9  s   € Ýˆ>Ý”:ÐåˆOr[   )rW   r[  r\  r]  r`  rP   r  r  r   rØ   rN   r²  rn   r`   rM  r7   r_  râ   rq  rµ  r  rÍ  rÓ   r¤   rË   re  rf  s   @rY   r  r  „  s	  ø€ € € € € ðð ð
 ð

Ø'ð

Ø05´´ð

ØKNð

à	ð

ð 

ð 

ñ „\ð

ð˜Tð ð ð ð ðAÐ7ð A¸EÀ#ÀtÀ)Ô<Lð Að Að Að Að
6à'ð6ð ð6ð ð	6ð
 
ð6ð 6ð 6ð 6ð(GØ-ðGØ58ðGà	ðGð Gð Gð GðR ðØðØ˜oÔ.ðØ8<¸SÀ/Ð=QÔ8Rðà	ˆt�OÔ$ d¨3°Ð+?Ô&@Ð@Ô	Aðð ð ñ „\ðð26à'ð26ð ð26ð �?Ô#ð	26ð
 �S˜/Ð)Ô*ð26ð 
ð26ð 26ð 26ð 26ð 26ð 26ðh˜Tð ð ð ð ð ð ð ð r[   r  c                   ó®   ‡ — e Zd ZdZddhej        £Zdddœdej        j        de	e
z  dz  deded	df
ˆ fd
„Ze	 ddede	e
z  dz  ded	d fd„¦   «         Zˆ xZS )ÚUnspecializedPythonVariablezO
    This is a 1-element tensor represents unspecialized python float/int.
    Ú	raw_valueÚneed_unwrapNT©rà  rá  rv   r•   rK   c                óX   •—  t          ¦   «         j        |fi |¤Ž || _        || _        d S rÆ   )r™   rš   rà  rá  )r�   rv   rà  rá  r•   rœ   s        €rY   rš   z$UnspecializedPythonVariable.__init__K  s9   ø€ ð 	�‰ŒÔ˜Ð)Ð) &Ð)Ð)Ð)Ø"ˆŒØ&ˆÔÐÐr[   Útensor_variablec                 óH   — t          di t          |j        ¦  «        ¤||dœ¤ŽS )Nrâ  r˜   )rß  r  Ú__dict__)r÷  rä  rà  rá  s       rY   Úfrom_tensor_variablez0UnspecializedPythonVariable.from_tensor_variableW  sC   € õ +ð 
ð 
Ý�?Ô+Ñ,Ô,ð
àØ#ð
ð 
ð 
ð 
ð 	
r[   r  )rW   r[  r\  r]  ru   r^  rP   r  r  r_   r`   rN   r   rš   r®  rç  re  rf  s   @rY   rß  rß  @  s  ø€ € € € € ðð ð
 	Øðð 
Ô	&ð€Nð )-Ø ð
'ð 
'ð 
'àŒxŒ~ð
'ð ˜3‘; Ñ%ð	
'ð
 ð
'ð ð
'ð 
ð
'ð 
'ð 
'ð 
'ð 
'ð 
'ð ð
 !ð	
ð 
à'ð
ð ˜3‘; Ñ%ð
ð ð	
ð
 
'ð
ð 
ð 
ñ „[ð
ð 
ð 
ð 
ð 
r[   rß  c                   óx   ‡ — e Zd ZdZdhej        £Zdej        j        de	ddfˆ fd„Z
ededd f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.rá  rv   r•   rK   Nc                 óv   •— |                      dd¦  «        } t          ¦   «         j        |fi |¤Ž || _        d S )Nrá  F)r  r™   rš   rá  )r�   rv   r•   rá  rœ   s       €rY   rš   zFakeItemVariable.__init__o  sC   ø€ Ø—j’j °Ñ6Ô6ˆØ�‰ŒÔ˜Ð)Ð) &Ð)Ð)Ð)Ø&ˆÔÐÐr[   rä  c                 ó>   — t          di t          |j        ¦  «        ¤ŽS rp  )ré  r  ræ  )r÷  rä  s     rY   rç  z%FakeItemVariable.from_tensor_variablet  s#   € õ  ÐAÐA¥$ Ô'?Ñ"@Ô"@ÐAÐAÐAr[   )rW   r[  r\  r]  ru   r^  rP   r  r  r   rš   r®  rç  re  rf  s   @rY   ré  ré  f  s±   ø€ € € € € ð9ð 9ð 	ðà	Ô	&ð€Nð
'˜eœhœnð '¸ð 'Àð 'ð 'ð 'ð 'ð 'ð 'ð
 ðBØ,ðBà	ðBð Bð Bñ „[ðBð Bð Bð Bð Br[   ré  c                   óN   — e Zd Zdddee         deeef         defd„Zdefd„Z	dS )	rü  r�   r@   rý   r•   rK   c           	      ó  — ddl m} | j        j        }|t          j        j        u r—d }t          |¦  «        dk    rS|d                              ¦   «         r9t          |¦  «        dk    r&|d         } |j        ||| j        | j	        ¦  «        }njt          d| j        › d|› d|› d�dd	gt          j        ¢¬
¦  «         n;t          j        ||¦  «                             || gt!          |¦  «        z   |¦  «        }|€t#          d¦  «        ‚| j        j        }|t          j        j        ur+t          j        ||¦  «                             ||g|¦  «         |j        j                             t-          ¦   «         |t.          ¬¦  «         |S )Nr4   rB   r   zCCalling subclass default constructor with more than tensor argumentr¦  r§  rd   rû  zFAvoid this constructor call or move it outside `torch.compile` regioner½   z'__new__ must return a non-None variablerù  )r|  rC   rJ   Ú__new__rP   rU   r}  rÎ   rz  r‰   r    r   rÂ   r7   r×   rÞ   rµ  r  rš   r´   rA  rý  rþ  r5   )	r�   r�   rý   r•   rC   Únew_funcrT  ÚdataÚ	init_funcs	            rY   rÞ   z$TensorSubclassVariable.call_function|  sº  € ð 	AÐ@Ð@Ð@Ð@Ð@à”:Ô%ˆØ•u”|Ô+Ð+Ð+ØˆCÝ�4‰yŒy˜AŠ~ˆ~ $ q¤'×"3Ò"3Ñ"5Ô"5ˆ~½#¸f¹+¼+ÈÒ:JÐ:JØ˜A”w�ð CÐ2ÔBØ˜˜dœj¨$¬+ñô ��õ ØaØ#œzÐIÐI°ÐIÐIÀÐIÐIÐIØ 9ð2ðõ +Ô6ðð		ñ 	ô 	ð 	ð 	õ "Ô'¨¨HÑ5Ô5×CÒCØ�T�F�T $™ZœZÑ'¨ñô ˆCð ˆ;Ý Ð!JÑKÔKÐKà”JÔ'ˆ	ð �EœLÔ1Ð1Ð1ÝÔ! " iÑ0Ô0×>Ò>¸rÀCÀ5È&ÑQÔQÐQð 	Œ	Ô×)Ò)Ý‰HŒH�cÕ-Að 	*ñ 	
ô 	
ð 	
ð ˆ
r[   c                 ó   — | j         S rÆ   rX   r’   s    rY   r  z)TensorSubclassVariable.as_python_constant®  rÉ   r[   N)
rW   r[  r\  rµ  r7   r  r_  rÞ   r¤   r  r˜   r[   rY   rü  rü  {  sy   € € € € € ð0à'ð0ð �?Ô#ð0ð �S˜/Ð)Ô*ð	0ð
 
ð0ð 0ð 0ð 0ðd Dð ð ð ð ð ð r[   rü  c            
       óž   ‡ — e Zd Zdhej        £Zdedej        deddfˆ fd„Z	de
fd„Zdd	d
edee         deeef         def
ˆ fd„Zdd„Zˆ xZS )r"  r¢   Úfrom_tensorr•   rK   Nc                 óV   •—  t          ¦   «         j        di |¤Ž || _        || _        d S rp  )r™   rš   rô  r¢   )r�   rô  r¢   r•   rœ   s       €rY   rš   zUntypedStorageVariable.__init__¸  s8   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø&ˆÔà*ˆÔÐÐr[   c                 ó   — t           j        S rÆ   )rP   ÚUntypedStorager’   s    rY   rË   z"UntypedStorageVariable.python_typeÃ  s   € ÝÔ#Ð#r[   r�   r@   rõ   rý   c           
      ó0  •— |dk    rË|s|r2t          ||dt          |¦  «        › dt          |¦  «        › d�¦  «         | j                             ¦   «         }t	          |¦  «        s"t          j        |t          |¦  «        ¦  «        S ddlm	} ddl
m}  |||j                             d	|| j                             ¦   «         fi ¦  «        ¦  «        S |d
k    r›t          |¦  «        dk    rˆ|r"t          ||dt          |¦  «        › d�¦  «         |j                             d	t           j        j        j        | j                             ¦   «         |d                              ¦   «         fi ¦  «         | S t)          ¦   «                              ||||¦  «        S )Nrz   z0 args and 0 kwargsz
 args and z kwargsr   )Úuntyped_storage_sizer4   r÷   rÞ   Úresize_z0 kwargsr   )r1   r}  r¢   rz   r   r7   r×   r`   Úexternal_utilsrù  r£   rø   r´   rà   rô  rÈ   rP   rh  r>  Úresize_storage_bytes_r™   rÓ   )	r�   r�   rõ   rý   r•   ro  rù  rø   rœ   s	           €rY   rÓ   z"UntypedStorageVariable.call_methodÆ  sÃ  ø€ ð �6Š>ˆ>Øð �vð Ý#ØØØ)Ý˜4‘y”yÐ@Ð@­C°©K¬KÐ@Ð@Ð@ñ	ô ð ð Ô'×,Ò,Ñ.Ô.ˆFÝ# FÑ+Ô+ð å&Ô,¨Rµ°V±´Ñ=Ô=Ð=àAÐAÐAÐAÐAÐAØ2Ð2Ð2Ð2Ð2Ð2à$�}ØØ”I×*Ò*Ø'Ø,ØÔ)×2Ò2Ñ4Ô4Ð6Øñ	ô ñô ð ð �9ÒÐ¥ T¡¤¨a¢ Øð SÝ# B¨¨j½SÀ¹[¼[Ð:QÐ:QÐ:QÑRÔRÐRØŒI×"Ò"ØÝ”	Ô"Ô8ØÔ!×*Ò*Ñ,Ô,¨d°1¬g×.>Ò.>Ñ.@Ô.@ÐAØñ	ô ð ð ˆKå‰wŒw×"Ò" 2 t¨T°6Ñ:Ô:Ð:r[   rŽ   r>   c                 óz   —  || j         ¦  «         |                     d¦  «         |                     d¦  «         d S )Nr$  r   )rô  Úload_methodrÓ   rŒ   s     rY   Úreconstructz"UntypedStorageVariable.reconstructó  sD   € Øˆ�Ô Ñ!Ô!Ð!Ø×ÒÐ-Ñ.Ô.Ð.Ø×Ò˜AÑÔÐÐÐr[   ©rŽ   r>   rK   N)rW   r[  r\  r7   r^  ru   rP   r÷  r   rš   r¤   rË   r_  rµ  r  rÓ   rÿ  re  rf  s   @rY   r"  r"  ²  s  ø€ € € € € àðà	Ô	'ð€Nð
	+à#ð	+ð Ô+ð	+ð ð		+ð
 
ð	+ð 	+ð 	+ð 	+ð 	+ð 	+ð$˜Tð $ð $ð $ð $ð+;à'ð+;ð ð+;ð �?Ô#ð	+;ð
 �S˜/Ð)Ô*ð+;ð 
ð+;ð +;ð +;ð +;ð +;ð +;ðZð ð ð ð ð ð ð r[   r"  c            	       óì   ‡ — e Zd Zddej        j        j        j        fhZ	 dde	de
deddfˆ fd	„Zdefd
„Zedej        j        dej        j        fd„¦   «         Zdddefd„Zdddede
defd„Zdd„Zˆ xZS )rQ  )rÓ   r
  rÞ   Údata_ptrrô  rW  r•   rK   Nc                 óˆ   •—  t          ¦   «         j        di |¤Ž || _        || _        |                     ¦   «         | _        d S rp  )r™   rš   rô  rW  r°   Útensor_version)r�   rô  rW  r•   rœ   s       €rY   rš   zDataPtrVariable.__init__ÿ  sL   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø&ˆÔØ&ˆÔØ)×;Ò;Ñ=Ô=ˆÔÐÐr[   c                 ó   — t           S rÆ   rÑ  r’   s    rY   rË   zDataPtrVariable.python_type
  s   € Ýˆ
r[   r�   c                 óø  — t          |t          j        j        ¦  «        rÚ|j        |j        f| j        v rÅt          |j        ¦  «        dk    r­t          |j        d         t          j        j        ¦  «        rƒ|j        d         }t          |t          j        j        ¦  «        rW|j        |j        f| j        v rBt          |j        ¦  «        dk    r*t          |j        d         t          j        j        ¦  «        °ƒ|S )Nr4   r   )	rT   rP   r  ÚNoder›   ÚtargetÚ_DATA_PTR_PRESERVING_TARGETSr}  rý   )r÷  r�   s     rY   Ú"_strip_data_ptr_preserving_aliasesz2DataPtrVariable._strip_data_ptr_preserving_aliases  sÒ   € õ �t�UœXœ]Ñ+Ô+ð	 à”˜$œ+Ð&¨#Ô*JÐJÐJÝ�D”I‘” !Ò#Ð#Ý˜4œ9 Qœ<­¬¬Ñ7Ô7ð $ð ”9˜Q”<ˆDõ �t�UœXœ]Ñ+Ô+ð	 à”˜$œ+Ð&¨#Ô*JÐJÐJÝ�D”I‘” !Ò#Ð#Ý˜4œ9 Qœ<­¬¬Ñ7Ô7ð $ð ˆr[   rÚ   r7   c                 ó.  — t          |t          ¦  «        sdS | j        �| j        |j        k    rdS |                      | j                             ¦   «         j        ¦  «        }|                      |j                             ¦   «         j        ¦  «        }||u S rY  )rT   rQ  r  r
  rô  rÈ   r�   )r�   rÚ   Ú	self_rootÚ
other_roots       rY   Ú_is_same_data_ptrz!DataPtrVariable._is_same_data_ptr  sš   € Ý˜%¥Ñ1Ô1ð 	Ø�5àÔÐ&¨$Ô*=ÀÔAUÒ*UÐ*UØ�5à×;Ò;ØÔ×%Ò%Ñ'Ô'Ô,ñ
ô 
ˆ	ð ×<Ò<ØÔ×&Ò&Ñ(Ô(Ô-ñ
ô 
ˆ
ð ˜JÐ&Ð&r[   r�   r@   r›   c           	      óÖ   — |dvrt          j        t          ¦  «        S |                      |¦  «        }|rt          j        |dk    ¦  «        S t	          dd| › d|› d|› �dg ¬¦  «         dS )	z-DataPtr tp_richcompare: identity-based eq/ne.rz  r{  zData pointer comparisonzrichcompare_impl rX  zjDynamo can only trace data pointer comparisons when it can prove both operands have the same data pointer.r½   N)r9   rØ   rß   r  r    )r�   r�   rÚ   r›   Úsame_data_ptrs        rY   râ   z DataPtrVariable.richcompare_impl'  s™   € ð Ð)Ð)Ð)Ý#Ô*­>Ñ:Ô:Ð:Ø×.Ò.¨uÑ5Ô5ˆØð 	;Ý#Ô*¨2°ª>Ñ:Ô:Ð:ÝØ-Ø;¨Ð;Ð;¨rÐ;Ð;°EÐ;Ð;ðJàð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r[   rŽ   r>   c                 ó„   —  || j         ¦  «         |                     | j        ¦  «         |                     d¦  «         d S )Nr   )rô  rþ  rW  rÓ   rŒ   s     rY   rÿ  zDataPtrVariable.reconstruct;  sF   € Øˆ�Ô Ñ!Ô!Ð!Ø×Ò˜DÔ,Ñ-Ô-Ð-Ø×Ò˜AÑÔÐÐÐr[   )r  r   )rW   r[  r\  rP   rh  ri  r
  r@  r	  ru   r_  r   rš   r¤   rË   r®  r  r  r
  rN   r  r7   râ   rÿ  re  rf  s   @rY   rQ  rQ  ù  sL  ø€ € € € € à!Ø	˜%œ)œ.Ô/Ô7Ð8ð$Ð ð &ð	>ð 	>à#ð	>ð ð	>ð ð		>ð
 
ð	>ð 	>ð 	>ð 	>ð 	>ð 	>ð˜Tð ð ð ð ð ð°e´h´mð ÈÌÌð ð ð ñ „[ðð'Ð'8ð '¸Tð 'ð 'ð 'ð 'ð
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð(ð ð ð ð ð ð ð r[   rQ  )rU   )�r]  r  Úloggingrt  r•  r‘  r^  Úcollections.abcr   r   Ú
contextlibr   Ú	itertoolsr   r   Útypingr   r	   r
   r   rk  Útorch._numpyÚ_numpyrÂ  Útorch.fxrP   Útorch.randomr   r   Útorch._dynamor   Útorch._library.opaque_objectr   Útorch._opaque_baser   Útorch._subclasses.meta_utilsr   Ú%torch.fx.experimental.symbolic_shapesr   r   r   r   r   Útorch.utils._python_dispatchr   rR  r   r   r   Ú_trace_wrapped_higher_order_opr   r  r   r   r   r    r!   r"   r#   rû  r$   Úguardsr%   r&   r‰   r'   rR   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   rö  r5   r6   r7   rÒ   r9   Úlistsr:   r;   Úscript_objectr<   Úuser_definedr=   Únumpyr  ÚModuleNotFoundErrorÚtorch._dynamo.codegenr>   Útorch._dynamo.output_graphr?   Útorch._dynamo.symbolic_convertr@   Ú	functionsrA   r|  rC   Ú	getLoggerrW   r“  ÚgtÚltÚgeÚlerÊ  ÚneÚis_Úis_notÚsupported_tensor_comparison_opsÚsupported_const_comparison_opsÚsupported_comparison_opsr  Úfromkeysr»  Ú%supported_tensor_comparison_op_valuesÚ$supported_const_comparison_op_valuesrþ  rN   rZ   re   Ú
TensorBaseræ  rU   rS  ra   r_  rk   ru   rÔ   r  rß  ré  rü  r"  rQ  r˜   r[   rY   ú<module>r;     s	  ððð ð" Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9à €€€à Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø +Ð +Ð +Ð +Ð +Ð +Ø AÐ AÐ AÐ AÐ AÐ AØ )Ð )Ð )Ð )Ð )Ð )Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð ð ð ð ð ð ð GÐ FÐ FÐ FÐ FÐ Fà 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø :Ð :Ð :Ð :Ð :Ð :ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ;Ð :Ð :Ð :Ð :Ð :Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð JÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ &Ð &Ð &Ð &Ð &Ð &Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ðØÐÐÐÐøØð ð ð Ø	€B€B€Bðøøøð ð =Ø/Ð/Ð/Ð/Ð/Ð/Ø6Ð6Ð6Ð6Ð6Ð6ØHÐHÐHÐHÐHÐHà/Ð/Ð/Ð/Ð/Ð/Ø<Ð<Ð<Ð<Ð<Ð<ð €gÔ˜Ñ!Ô!€ð 
ŒØ	ŒØ
Œ+Ø
Œ+Ø
Œ+Ø
Œ+Ø
Œ,ØŒoð	#ð 	#Ð ð Œ,ØŒoØ
Œ+Ø
Œ+ð	"ð "Ð ðØ%ðà$ðÐ ð )-¯ªØ#×*Ò*Ñ,Ô,ñ)ô )Ð %ð (,§}¢}Ø"×)Ò)Ñ+Ô+ñ(ô (Ð $ð
 &ð ¨Tð ð ð ð ð ”8Ô&Ô/°%´,Ô2GÑGÐ ðY˜oð Y°$ð Yð Yð Yð YðKð K˜eœlð K°sð KÈ#ð Kð Kð Kð Kð*N$ð N$ð N$ð N$ð N$�_ñ N$ô N$ð N$ðbH|
ð |
ð |
ð |
ð |
�oñ |
ô |
ð |
ð~yð yð yð yð y˜>ñ yô yð yðx#
ð #
ð #
ð #
ð #
 .ñ #
ô #
ð #
ðLBð Bð Bð Bð B�~ñ Bô Bð Bð*4ð 4ð 4ð 4ð 4Ð5ñ 4ô 4ð 4ðnDð Dð Dð Dð D˜_ñ Dô Dð DðNEð Eð Eð Eð E�oñ Eô Eð Eð Eð Es   Ã>D ÄDÄD