§
    ŠŠtjÄŠ ã                   ón  — d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	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mZmZmZ ddlZddlmZ ddlmc 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,m-Z-m.Z.m/Z/ d
dl0m1Z1 d
dl2m3Z3m4Z4m5Z5 d
dl6m7Z7m8Z8 d
dl9m:Z: d
dl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA d
dlmBZBmCZCmDZDmEZEmFZFmGZG ddlHmIZImJZJmKZK ddlLmMZM ddlNmOZOmPZP ddlQmRZRmSZSmTZT erddlUmVZV ddlWmXZX  G d„ deK¦  «        ZY G d„ deK¦  «        ZZ G d„ deK¦  «        Z[ G d „ d!eK¦  «        Z\ G d"„ d#eK¦  «        Z] G d$„ d%e]¦  «        Z^ G d&„ d'eK¦  «        Z_ G d(„ d)eK¦  «        Z` G d*„ d+eK¦  «        Zad,ed-ed.ef         fd/„Zb G d0„ d1eK¦  «        Zcejd         G d2„ d3¦  «        ¦   «         Ze G d4„ d5eT¦  «        Zf G d6„ d7eT¦  «        Zg G d8„ d9eK¦  «        Zh G d:„ d;eK¦  «        Zi G d<„ d=eK¦  «        Zj G d>„ d?eK¦  «        Zk ejl        d¬@¦  «        d-emej        ejn        f         fdA„¦   «         Zo ejl        d¬@¦  «        d-emejn        ej        f         fdB„¦   «         Zp G dC„ dDeK¦  «        Zq G dE„ dFeK¦  «        Zr G dG„ dHeK¦  «        Zs G dI„ dJeK¦  «        Zt G dK„ dLeK¦  «        Zu G dM„ dNeK¦  «        Zv G dO„ dPeK¦  «        Zw G dQ„ dReK¦  «        Zx G dS„ dTeK¦  «        Zy G dU„ dVey¦  «        Zzej{        eyej|        eyej}        eziZ~ G dW„ dXeK¦  «        Z G dY„ dZeK¦  «        Z€ G d[„ d\eK¦  «        Z�dS )]aÎ  
This module contains miscellaneous variable tracker implementations for various Python types
and features used in Dynamo's symbolic execution. These classes help track and propagate
information about different kinds of variables during graph capture.

Key classes include:
- SuperVariable: Handles super() calls and method resolution
- ExceptionVariable: Tracks exception objects
- RandomVariable: Manages random number generators
- GetAttrVariable: Tracks attribute access
- MethodWrapperVariable: Handles method wrappers
- PythonModuleVariable: Tracks Python modules
- NumpyVariable: Handles numpy functions and types
- StringFormatVariable: Manages string formatting
- DebuggingVariable: Handles print and logging
é    N)ÚCallableÚSequence)ÚRandom)ÚBuiltinFunctionType)ÚAnyÚTYPE_CHECKINGÚ	TypeGuardÚUnion)ÚMutationType)ÚTupleVariable)ÚSourceé   )ÚconfigÚgraph_break_hintsÚtrace_rulesÚ	variables)Úcreate_call_functionÚcreate_call_function_exÚcreate_instruction)Ú$do_not_convert_to_tracable_parameter)Úraise_observed_exceptionÚraise_type_errorÚunimplemented)ÚGuardBuilderÚinstall_guard)Úunpatched_nn_module_init)Ú
AttrSourceÚGenericAttrSourceÚGetItemSourceÚTypeMROSourceÚ
TypeSourceÚWeakRefCallSource)Úcheck_unspec_or_constant_argsÚcmp_name_to_op_mappingÚidentityÚistypeÚproxy_args_kwargsÚraise_args_mismatché   )Ú#AsPythonConstantNotImplementedErrorÚNO_SUCH_SUBOBJÚVariableTracker)ÚConstantVariable)ÚNestedUserFunctionVariableÚUserFunctionVariable)Úcall_random_fnÚis_standard_setattrÚUserDefinedObjectVariable)Ú	PyCodegen)ÚInstructionTranslatorBasec            
       óâ   ‡ — e Zd ZeZh ej        £Z	 ddededz  deddfˆ fd„Zde	fd„Z
dˆ fd
„Zdddedeeedz  f         fˆ fd„Zdddedefd„Zdddedee         deeef         def
d„Zˆ xZS )ÚSuperVariableNÚtypevarÚobjvarÚkwargsÚreturnc                 óV   •—  t          ¦   «         j        di |¤Ž || _        || _        d S ©N© )ÚsuperÚ__init__r7   r8   )Úselfr7   r8   r9   Ú	__class__s       €úZ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_dynamo/variables/misc.pyr?   zSuperVariable.__init__X   s8   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ð ˆŒð
 ˆŒˆˆó    c                 ó   — t           j        S ©N)Úbuiltinsr>   ©r@   s    rB   Úpython_typezSuperVariable.python_typei   s
   € ÝŒ~ÐrC   Úcodegenr3   c                 ó  •‡— ‰                      ˆˆfd„¦  «          ‰| j        ¦  «         | j        �5 ‰| j        ¦  «         ‰                     t	          dd¦  «        ¦  «         d S ‰                     t	          dd¦  «        ¦  «         d S )Nc                  óH   •—  ‰t          j        t          ¦  «        ¦  «        S rE   )r   ÚBuiltinVariabler>   )rA   rI   s   €€rB   ú<lambda>z+SuperVariable.reconstruct.<locals>.<lambda>m   s   ø€  g g­iÔ.GÍÑ.NÔ.NÑ&OÔ&O€ rC   r   Fr)   )Úadd_push_nullr7   r8   Úextend_outputr   ©r@   rI   rA   s    `€rB   ÚreconstructzSuperVariable.reconstructl   s›   øø€ Ø×ÒÐOÐOÐOÐOÐOÑPÔPÐPØˆ�”ÑÔÐØŒ;Ð"ØˆG�D”KÑ Ô Ð Ø×!Ò!Õ"6°q¸%Ñ"@Ô"@ÑAÔAÐAÐAÐAà×!Ò!Õ"6°q¸%Ñ"@Ô"@ÑAÔAÐAÐAÐArC   Útxr4   Únamec                 óž  •— | j         s(t          ddd|› d| j        › d| j         › d�dg¬¦  «         | j         €t          d	¦  «        ‚| j                             ¦   «         }| j                              ¦   «         }| j         j        rt          | j         j        ¦  «        nd }t          |t          ¦  «        r| j         j
        }| j         j        }d }|j        }	 |                     |¦  «        d
z   }n0# t          $ r# t          t          ||¦  «        |¦  «        d fcY S w xY wt!          |t#          |¦  «        ¦  «        D ]f}	||	         j                             |t(          ¦  «        x}
r<|
t(          ur3|r+t+          t-          t/          |¦  «        |	¦  «        |¦  «        }|
|fc S Œgt          ddd|› d| j        › d| j         › d�ddg¬¦  «         d S )Nz1-arg super not implementedÚ z"Dynamo failed to trace attribute `z$` accessed via `super()` (for type `z` and object `z4`) because one-argument of super() is not supported.z-Use two-argument super(type, object_or_type).©Úgb_typeÚcontextÚexplanationÚhintsz!super() requires objvar to be setr)   zUnable to resolve super getattrz8`) because the resolved attribute type is not supported.z0Ensure the attribute exists in the parent class.z(Check the arguments passed to `super()`.)r8   r   r7   ÚAssertionErrorÚas_python_constantrH   Úsourcer!   Ú
issubclassÚtypeÚvalueÚ__mro__ÚindexÚ
ValueErrorÚgetattrr>   ÚrangeÚlenÚ__dict__Úgetr+   r   r   r    )r@   rR   rS   Úsearch_typeÚtype_to_useÚtype_to_use_sourcer]   Ú
search_mroÚstart_indexrb   Úresolved_getattrrA   s              €rB   Ú_resolved_getattr_and_sourcez*SuperVariable._resolved_getattr_and_sourceu   s{  ø€ ð Œ{ð 
	ÝØ5ØðDÀð Dð DØ,0¬LðDð DØHLÌðDð Dð Dð Dðð	ñ 	ô 	ð 	ð Œ;ÐÝ Ð!DÑEÔEÐEØ”l×5Ò5Ñ7Ô7ˆð ”k×-Ò-Ñ/Ô/ˆà.2¬kÔ.@ÐJ�J�t”{Ô)Ñ*Ô*Ð*Àdð 	õ �k¥4Ñ(Ô(ð 	4Øœ+Ô+ˆKØ!%¤Ô!3ÐàˆØ Ô(ˆ
ð	HØ$×*Ò*¨;Ñ7Ô7¸!Ñ;ˆKˆKøÝð 	Hð 	Hð 	Hõ �5 ¨kÑ:Ô:¸DÑAÔAÀ4ÐGÐGÐGÐGð	Høøøõ ˜;­¨J©¬Ñ8Ô8ð 
	4ð 
	4ˆEà#-¨eÔ#4Ô#=×#AÒ#AÀ$ÍÑ#WÔ#WÐWÐð 4Ø#­>Ð9Ð9à)ð Ý!+Ý)­-Ð8JÑ*KÔ*KÈUÑSÔSØ ñ"ô "˜ð ,¨VÐ3Ð3Ð3Ð3øåØ5ØðD¸Tð Dð DØ(,¬ðDð DØDHÄKðDð Dð Dð CØ:ðð
	
ñ 
	
ô 
	
ð 
	
ð 
	
ð 
	
s   ÃC0 Ã0*DÄDc                 óN  — |                       ||¦  «        \  }}t          j                             |¦  «        st	          | |t          |¦  «        ¬¦  «        S |r,t          |                     t          j	        ¦  «        ¦  «         t          j         
                    ||¬¦  «        S )N©Úpy_type©r]   )ro   r   r-   Ú
is_literalÚGetAttrVariabler_   r   Ú
make_guardr   ÚCONSTANT_MATCHÚcreate)r@   rR   rS   r`   r]   s        rB   Úvar_getattrzSuperVariable.var_getattrº   s–   € ð ×9Ò9¸"¸dÑCÔC‰ˆˆvÝÔ)×4Ò4°UÑ;Ô;ð 	DÝ" 4¨µt¸E±{´{ÐCÑCÔCÐCØð 	JÝ˜&×+Ò+­LÔ,GÑHÔHÑIÔIÐIÝÔ)×0Ò0°¸vÐ0ÑFÔFÐFrC   Úargsc                 ó   — |                       ||¦  «        \  }}| j        €t          d¦  «        ‚|t          j        u rt          t          ¦  «        S |t          j        j	        j        u rÕ| j        }ddl
m} t          |t          j        ¦  «        r}t          |j        |¦  «        rh|sf|sdt!          ¦   «         5  t#          j        |t&          |¬¦  «        }	|	                     || j        g|z   |¦  «        cd d d ¦  «         S # 1 swxY w Y   �nt+          dd| › d|› d|› d|› �d|› d	�g t,          j        ¢¬
¦  «         �nî| j        j        r¸t3          |d¦  «        r¨|j        dk    r�t          j                             |¦  «        r~|j        }
t3          |
d¦  «        r!|
j        dk    rt#          j        ||
¦  «        }n.|€t          d¦  «        ‚|j        }t          j        |
|¬¦  «        }|                      |d||¦  «        S t          |tB          ¦  «        rSt          |j"        tF          j$        ¦  «        r4t#          j        ||j"        |d¬¦  «        }	|	                     |||¦  «        S t          |tJ          ¦  «        rãt          |j"        tF          j$        ¦  «        rÄt          | j        t          j        ¦  «        r| j        }nGd }| j        j        rtM          | j        j        ¦  «        }t#          j        || j        j'        |¦  «        }|€t          d¦  «        ‚t#          j        ||j"        tQ          |d¦  «        d¬¦  «        }	|	                     ||g|¢|¦  «        S t          |tF          j$        ¦  «        r8t#          j        |||d¬¦  «        }	|	                     || j        g|z   |¦  «        S t          |tF          j)        ¦  «        r6t          j*        |j"        | j        |¬¦  «                             |||¦  «        S tW          |¦  «        r0t          | j        t          ¦  «        r | j        j,        |g|¢R i |¤ŽS |t          j-        u �r-|d         }	 | .                    ¦   «         }n2# t^          $ r%}t+          dd| › d|› �ddg|¬¦  «         Y d }~nd }~ww xY w|j0        j
         1                    | j        ¦  «        s/t+          dd| › d|› �d| j        › d�dgt,          j2        ¢¬
¦  «         t          |tf          ¦  «        st          dti          |¦  «        › �¦  «        ‚|j0        j
         5                    | j        |t          j6        ¦   «         ¦  «         t          j7         8                    d ¦  «        S t          | j        t          j        ¦  «        rH| j        j9        �<| j        j:        �0|| j        j:        v r"| j        j9                              ||||¦  «        S |t          j;        u rÎ|d         j<        }t          | j        t          ¦  «        r| j         =                    ||¦  «        S d }	 t           ;                    | j        j<        |¦  «        }n%# t|          $ r t          t|          |¦  «         Y nw xY wd }| j        j        �t�          | j        j        |¦  «        }t#          j        |||¦  «        S |t          jA        jB        u r§|d         }i }|d         jC        }|d         jC         C                    ¦   «         D ]#\  }}|jD         .                    ¦   «         }|||<   Œ$|jE        jF        }d|jE        _F        	 |                     |||¦  «        ||jE        _F        S # ||jE        _F        w xY wt          |tF          jG        ¦  «        rM|t‘          jI        ¦   «         v r8t#          j        |||d¬ ¦  «        }|                     || j        g|z   |¦  «        S t          |tF          jJ        ¦  «        r/t#          j        |||d¬¦  «        }	|	                     |||¦  «        S t+          d!d| › d|› �d"|› d#|› d$�d%g¬
¦  «         d S )&Nz2super() requires objvar to be set for method callsr   )ÚAttributeMutationNewrs   z#Unsupported super().__init__() callúcall_method ú z0Dynamo encountered a super().__init__() call on zK that resolved to a `torch.nn.Module.__init__()` call that we cannot trace.rV   Ú__name__Ú__new__Ú
__module__rF   z.source must not be None for user-defined classT©r]   Úrealizez2source must not be None for classmethod resolutionÚ__func__r   z7Non-constant attribute given to `super().__delattr__()`zbDynamo requires the attribute name passed to `super().__delattr__(...)` to be a constant (string).zEEnsure the attribute name is a string literal or a constant variable.)rW   rX   rY   rZ   Úfrom_exczFAttempted super().__delattr__() on an object without mutation trackingzmDynamo needs to track mutations on an object before `super().__delattr__` can be used on it. But the object (z3) doesn't have attribute mutation tracking enabled.z<Ensure the object is tracked by Dynamo's side effect system.zattr must be a str, got é   F)rƒ   zFAttempted to call a super() attribute that is not a function or methodz4Dynamo does not know how to trace the call `super().z()` because `super().z(` is not a function or method attribute.zMEnsure the attribute accessed via `super()` is a standard method or function.)Kro   r8   r[   Úobjectr?   ÚLambdaVariabler%   ÚtorchÚnnÚModuleÚside_effectsr|   Ú
isinstancer   r2   Úmutation_typer   r,   Úbuildr   Úcall_functionr   r   Ú	DIFFICULTr]   Úhasattrr   ÚUserDefinedClassVariableÚis_supported_new_methodÚ__self__r�   ÚmemberÚcall_methodÚstaticmethodr„   ÚtypesÚFunctionTypeÚclassmethodr!   Ú
value_typer   Ú
MethodTypeÚUserMethodVariabler1   Úmethod_setattr_standardÚ__delattr__r\   ÚNotImplementedErrorÚoutputÚis_attribute_mutationÚ
DYNAMO_BUGÚstrr_   Ú
store_attrÚDeletedVariabler-   rx   Ú_base_vtÚ_base_methodsÚ__getattribute__r`   Úgeneric_getattrÚAttributeErrorr   r   Ú_CÚ_disabled_torch_function_implÚitemsÚvtÚsymbolic_torch_function_stateÚtorch_function_subclass_enabledÚMethodDescriptorTyper   Úget_tensor_methodr   )r@   rR   rS   rz   r9   Úinner_fnr]   r8   r|   Úfn_vtÚuser_clsÚuser_cls_vtÚuser_cls_sourceÚcls_variableÚ
cls_sourceÚattrÚexcÚ	attr_nameÚ
attr_valueÚattr_sourceÚfuncÚ	tf_kwargsÚtf_argsÚhash_key_vtÚvalue_vtÚkey_strÚtx_oldÚfn_vars                               rB   r—   zSuperVariable.call_methodÌ   sÿ	  € ð  ×<Ò<¸RÀÑFÔFÑˆ�&ØŒ;ÐÝ Ð!UÑVÔVÐVð •v”Ð&Ð&Ý!¥(Ñ+Ô+Ð+Ø�œœÔ1Ð1Ð1Ø”[ˆFØ;Ð;Ð;Ð;Ð;Ð;õ ˜6¥9Ô#FÑGÔGðå˜vÔ3Ð5IÑJÔJðð ðð "(ðõ
 :Ñ;Ô;ð Qð QÝ+Ô1ØÕ4¸Vðñ ô �Eð !×.Ò.¨r°D´K°=À4Ñ3GÈÑPÔPð	Qð Qð Qð Qñ Qô Qð Qð Qð Qð Qð Qð Qøøøð Qð Qð Qð Qñ Qõ ØAØH¨4ÐHÐH°$ÐHÐH¸ÐHÐHÀÐHÐHð!1Ø ð!1ð !1ð !1ð 9Õ-Ô7Ð8ðñ ô ð ñ ð ŒKÔðf	9å˜ *Ñ-Ô-ðf	9ð Ô! YÒ.Ð.ÝÔ2×JÒJÈ8ÑTÔTð /ð  Ô(ˆHÝ�x Ñ.Ô.ð 
°8Ô3FÈ*Ò3TÐ3TÝ/>Ô/DÀRÈÑ/RÔ/R��à�>Ý(ØHñô ð ð #)¤-�Ý'Ô@Ø _ðñ ô �ð ×*Ò*¨2¨y¸$ÀÑGÔGÐGÝ˜¥,Ñ/Ô/ð S	9µJØÔ�uÔ1ñ5
ô 5
ð S	9õ $Ô)Ø�HÔ%¨f¸dðñ ô ˆEð ×&Ò& r¨4°Ñ8Ô8Ð8Ý˜¥+Ñ.Ô.ð L	9µ:ØÔ�uÔ1ñ4
ô 4
ð L	9õ ˜$œ+¥yÔ'IÑJÔJð ð  $œ{��ð "�
Ø”;Ô%ð @Ý!+¨D¬KÔ,>Ñ!?Ô!?�JÝ.Ô4ØØ”KÔ*Øñ ô  �ð
 ˆ~Ý$ØHñô ð õ $Ô)ØØÔ!Ý! &¨*Ñ5Ô5Øð	ñ ô ˆEð ×&Ò& r¨LÐ+@¸4Ð+@À&ÑIÔIÐIÝ˜¥%Ô"4Ñ5Ô5ð j	9Ý#Ô)¨"¨h¸vÈtÐTÑTÔTˆEØ×&Ò& r¨D¬K¨=¸4Ñ+?ÀÑHÔHÐHÝ˜¥%Ô"2Ñ3Ô3ð g	9ÝÔ/ØÔ! 4¤;°vðñ ô çŠm˜B  fÑ-Ô-ð.õ ! Ñ*Ô*ð c	9­zØŒKÕ2ñ0
ô 0
ð c	9ð 7�4”;Ô6°rÐK¸DÐKÐKÐKÀFÐKÐKÐKØ�Ô+Ð+Ñ+Ø˜”7ˆDðØ×.Ò.Ñ0Ô0��øÝ&ð 
ð 
ð 
ÝØUØ8¨4Ð8Ð8°$Ð8Ð8ð!Lð `ðð !ð	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøøð
øøøð ”9Ô)×?Ò?ÀÄÑLÔLð ÝØdØ8¨4Ð8Ð8°$Ð8Ð8ð!(à#œ{ð!(ð !(ð !(ð
 Wðå*Ô5ððñ ô ð õ ˜d¥CÑ(Ô(ð NÝ$Ð%LÅÀTÁ
Ä
Ð%LÐ%LÑMÔMÐMØŒIÔ"×-Ò-Ø”˜T¥9Ô#<Ñ#>Ô#>ñô ð õ Ô-×4Ò4°TÑ:Ô:Ð:å�t”{¥IÔ$GÑHÔHð<	9à”Ô$Ð0Ø”Ô)Ð5Ø˜DœKÔ5Ð5Ð5à”;Ô'×3Ò3°B¸¸dÀFÑKÔKÐKØ�Ô0Ð0Ð0Ø˜QœœˆIõ ˜$œ+Õ'@ÑAÔAð BØ”{×2Ò2°2°yÑAÔAÐAàˆJð=Ý#×4Ò4Ø”KÔ%Øñô �
�
øõ "ð =ð =ð =Ý(­¸Ñ<Ô<Ð<Ð<Ð<ð=øøøð ˆKØŒ{Ô!Ð-Ý/°´Ô0BÀIÑNÔN�Ý"Ô(¨¨Z¸ÑEÔEÐEØ�œÔ?Ð?Ð?ð
 ˜”7ˆDàˆIØ˜1”g”mˆGà)-¨a¬¬×)<Ò)<Ñ)>Ô)>ð .ð .Ñ%�˜XØ%œ.×;Ò;Ñ=Ô=�Ø%-�	˜'Ñ"Ð"àÔ5ÔUˆFØOTˆBÔ,ÔLðØ×)Ò)¨"¨g°yÑAÔAð ð Ô0ÔPÐPøØð Ô0ÔPð ð ð ð õ �x¥Ô!;Ñ<Ô<ð
	9à�KÔ9Ñ;Ô;Ð;Ð;õ %Ô*¨2¨x¸ÈÐNÑNÔNˆFØ×'Ò'¨¨T¬[¨M¸DÑ,@À&ÑIÔIÐIÝ˜¥%Ô";Ñ<Ô<ð 	9Ý#Ô)¨"¨h¸vÈtÐTÑTÔTˆEØ×&Ò& r¨4°Ñ8Ô8Ð8åð'à0 4Ð0Ð0¨$Ð0Ð0ð,Øð,ð ,Ø37ð,ð ,ð ,ð `ðð
	
ñ 
	
ô 
	
ð 
	
ð 
	
ð 
	
sH   Â8<DÄDÄDÑQ1 Ñ1
R Ñ;RÒR Ø:%Y  Ù ZÚZÝ	], Ý,]:rE   ©rI   r3   r:   N)r   r�   Ú__qualname__r>   Ú_cpython_typer,   Ú_nonvar_fieldsr   r?   r_   rH   rQ   r¥   Útupler   ro   ry   ÚlistÚdictr—   Ú__classcell__©rA   s   @rB   r6   r6   P   sª  ø€ € € € € à€MðØ	Ô	'ð€Nð *.ðð à ðð   $Ñ&ðð ð	ð
 
ðð ð ð ð ð ð"˜Tð ð ð ð ðBð Bð Bð Bð Bð BðC
Ø-ðC
Ø58ðC
à	ˆs�J Ñ%Ð%Ô	&ðC
ð C
ð C
ð C
ð C
ð C
ðJGØ-ðGØ58ðGà	ðGð Gð Gð Gð$]
à'ð]
ð ð]
ð �?Ô#ð	]
ð
 �S˜/Ð)Ô*ð]
ð 
ð]
ð ]
ð ]
ð ]
ð ]
ð ]
ð ]
ð ]
rC   r6   c                   óZ   ‡ — e Zd Zdej        deddfˆ fd„Zdefd„Zddd	e	de
fˆ fd
„Zˆ xZS )ÚFrameSummaryVariableÚframe_summaryr9   r:   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S r<   )r>   r?   rÔ   )r@   rÔ   r9   rA   s      €rB   r?   zFrameSummaryVariable.__init__­  s.   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø*ˆÔÐÐrC   c                 ó   — t           j        S rE   )Ú	tracebackÚFrameSummaryrG   s    rB   rH   z FrameSummaryVariable.python_type±  s   € ÝÔ%Ð%rC   rR   r4   rS   c                 óp  •— |dk    rt          j        || j        j        ¦  «        S |dk    rt          j        || j        j        ¦  «        S |dk    rt          j        || j        j        ¦  «        S |dk    rt          j        || j        j        ¦  «        S t          ¦   «                              ||¦  «        S )NÚlinenoÚfilenamerS   Úline)	r,   r�   rÔ   rÚ   rÛ   rS   rÜ   r>   ry   ©r@   rR   rS   rA   s      €rB   ry   z FrameSummaryVariable.var_getattr´  s«   ø€ ð �8ÒÐÝ"Ô(¨¨TÔ-?Ô-FÑGÔGÐGØ�ZÒÐÝ"Ô(¨¨TÔ-?Ô-HÑIÔIÐIØ�VŠ^ˆ^Ý"Ô(¨¨TÔ-?Ô-DÑEÔEÐEØ�VŠ^ˆ^Ý"Ô(¨¨TÔ-?Ô-DÑEÔEÐEÝ‰wŒw×"Ò" 2 tÑ,Ô,Ð,rC   )r   r�   rÊ   r×   rØ   r   r?   r_   rH   r¥   r,   ry   rÐ   rÑ   s   @rB   rÓ   rÓ   ¬  s§   ø€ € € € € ð+ iÔ&<ð +Èð +ÐPTð +ð +ð +ð +ð +ð +ð&˜Tð &ð &ð &ð &ð-Ø-ð-Ø58ð-à	ð-ð -ð -ð -ð -ð -ð -ð -ð -ð -rC   rÓ   c            
       ó|  ‡ — e Zd Zdeded ef         deddfˆ fd„Zede	j
        ded ef         dd fd„¦   «         Zededefd	„¦   «         Zdee	j
        ez           fd
„Zdedefd„Zdeej                 fd„Zdddededefd„Zdddedefˆ fd„Zdddddeddfd„Zdddedee         deeef         def
ˆ fd„Zˆ xZS )ÚTracebackVariablerÔ   Útb_nextr9   r:   Nc                 óx   •—  t          ¦   «         j        di |¤Ž || _        |€t          d¦  «        ‚|| _        d S )Nztb_next must not be Noner=   )r>   r?   rÔ   r[   rà   )r@   rÔ   rà   r9   rA   s       €rB   r?   zTracebackVariable.__init__Ã  sI   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø*ˆÔàˆ?Ý Ð!;Ñ<Ô<Ð<ØˆŒˆˆrC   c                 ó6   —  | t          |¦  «        |¬¦  «        S )N)rà   )rÓ   )ÚclsrÔ   rà   s      rB   Úfrom_frame_summaryz$TracebackVariable.from_frame_summaryÖ  s"   € ð ˆsÕ'¨Ñ6Ô6ÀÐHÑHÔHÐHrC   Úobjc                 óT   — t          | t          ¦  «        p|                      ¦   «         S rE   )r&   rß   Úis_constant_none©rå   s    rB   Úis_valid_tracebackz$TracebackVariable.is_valid_tracebackÞ  s$   € å�cÕ,Ñ-Ô-ÐG°×1EÒ1EÑ1GÔ1GÐGrC   c                 óŠ   — t          | j        t          ¦  «        r| j        gS | j        g| j                             ¦   «         z   S rE   )r&   rà   r-   rÔ   Ú
extract_tbrG   s    rB   rë   zTracebackVariable.extract_tbâ  sB   € Ý�$”,Õ 0Ñ1Ô1ð 	(ØÔ&Ð'Ð'ØÔ"Ð# d¤l×&=Ò&=Ñ&?Ô&?Ñ?Ð?rC   Útbc                 óx   — | }t          |t          ¦  «        r"||u rdS |j        }t          |t          ¦  «        °"dS )NTF)r&   rß   rà   )r@   rì   Úcurr_tbs      rB   Úhas_reference_cyclez%TracebackVariable.has_reference_cycleç  sK   € à8<ˆÝ�WÕ/Ñ0Ô0ð 	&Ø˜"ˆ}ˆ}Ø�tØ”oˆGõ �WÕ/Ñ0Ô0ð 	&ð ˆurC   c                 ó   — t           j        S rE   )r™   ÚTracebackTyperG   s    rB   rH   zTracebackVariable.python_typeð  s   € ÝÔ"Ð"rC   rR   r4   Úname_varÚvalc                 óô  — |                      ¦   «         }|dk    rÀ|                      |¦  «        st          t          |¦  «         t	          |t
          t          f¦  «        st          dt          |¦  «        › �¦  «        ‚|  	                    |¦  «        s*t          |t
          ¦  «        r*| 	                    | ¦  «        rt          t          |¦  «         || _        t          j                             d ¦  «        S )Nrà   z?tb_next val must be TracebackVariable or ConstantVariable, got )r\   ré   r   Ú	TypeErrorr�   rß   r-   r[   r_   rï   r&   rc   rà   r   rx   )r@   rR   rò   ró   rS   s        rB   Úcall_setattrzTracebackVariable.call_setattró  s÷   € ð ×*Ò*Ñ,Ô,ˆØ�9ÒÐØ×*Ò*¨3Ñ/Ô/ð 8Ý(­°BÑ7Ô7Ð7Ý˜cÕ$5Õ7GÐ#HÑIÔIð Ý$ØaÕVZÐ[^ÑV_ÔV_ÐaÐañô ð ð ×'Ò'¨Ñ,Ô,ð 9Ý�sÕ-Ñ.Ô.ð9Ø36×3JÒ3JÈ4Ñ3PÔ3Pð9õ )­°RÑ8Ô8Ð8ØˆDŒLÝÔ)×0Ò0°Ñ6Ô6Ð6rC   rS   c                 ó  •— |dk    r| j         S |dk    r| j                             |d¦  «        S |dk    r| j        S |dk    r"t          d| › d�dg t          j        ¢¬	¦  «         t          ¦   «                              ||¦  «        S )
Nrà   Ú	tb_linenorÚ   rÔ   Útb_lastiz traceback.tb_lasti not supportedz accessing 'tb_lasti'zNDynamo does not support accessing the tb_lasti attribute of traceback objects.rV   )rà   rÔ   ry   r   r   ÚSUPPORTABLEr>   rÝ   s      €rB   ry   zTracebackVariable.var_getattr  s¬   ø€ ð �9ÒÐØ”<ÐØ�[Ò Ð ØÔ%×1Ò1°"°hÑ?Ô?Ð?Ø�_Ò$Ð$ØÔ%Ð%Ø�ZÒÐÝØ:ØÐ6Ð6Ð6ØlØ6Õ)Ô5Ð6ð	ñ ô ð õ ‰wŒw×"Ò" 2 tÑ,Ô,Ð,rC   Úotherr,   Úopc                 ó*   — ddl m}  || |||¦  «        S ©Nr)   )Úobject_richcompare©Úobject_protocolrÿ   ©r@   rR   rû   rü   rÿ   s        rB   Úrichcompare_implz"TracebackVariable.richcompare_impl  ó-   € ð 	8Ð7Ð7Ð7Ð7Ð7à!Ð! $¨¨E°2Ñ6Ô6Ð6rC   rz   c                 ót   •— |dk    r | j         |g|¢R Ž S t          ¦   «                              ||||¦  «        S )NÚ__setattr__)rö   r>   r—   )r@   rR   rS   rz   r9   rA   s        €rB   r—   zTracebackVariable.call_method!  sI   ø€ ð �=Ò Ð Ø$�4Ô$ RÐ/¨$Ð/Ð/Ð/Ð/Ý‰wŒw×"Ò" 2 t¨T°6Ñ:Ô:Ð:rC   )r   r�   rÊ   rÓ   r
   r-   r   r?   r›   r×   rØ   rä   r˜   r,   Úboolré   rÎ   rë   rï   r_   r™   rñ   rH   rö   r¥   ry   r  rÏ   r—   rÐ   rÑ   s   @rB   rß   rß   Â  si  ø€ € € € € ðà+ðð Ð*Ð,<Ð<Ô=ðð ð	ð
 
ðð ð ð ð ð ð& ðIà Ô-ðIð Ð*Ð,<Ð<Ô=ðIð 
ð	Ið Ið Iñ „[ðIð ðH ð H°Dð Hð Hð Hñ „\ðHð@˜D Ô!7Ð:NÑ!NÔOð @ð @ð @ð @ð
 oð ¸$ð ð ð ð ð#˜T %Ô"5Ô6ð #ð #ð #ð #ð7à'ð7ð "ð7ð ð	7ð
 
ð7ð 7ð 7ð 7ð*-Ø-ð-Ø58ð-à	ð-ð -ð -ð -ð -ð -ð$7Ø-ð7Ø6Gð7ØMPð7à	ð7ð 7ð 7ð 7ð	;à'ð	;ð ð	;ð �?Ô#ð		;ð
 �S˜/Ð)Ô*ð	;ð 
ð	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;rC   rß   c                   óN  ‡ — e Zd ZeZ	 	 	 ddedee         dee	ef         dz  de
dz  dedz  ddfˆ fd„Zd	eddfd
„Zdd„Zdefd„Zddddde	ddfd„Zddde	dee         dee	ef         def
ˆ fd„Zddde	defˆ fd„Zde	fd„ZeZedede	fd„¦   «         Zde	fd„Zdddefd„Zˆ xZS ) ÚExceptionVariableNÚexc_typerz   Úinit_kwargsr]   rŽ   r:   c                 óŒ  •— t          ¦   «                              ||¬¦  «         || _        || _        |r$t	          d| › d|› �dg t
          j        ¢¬¦  «         t          j        d ¦  «        | _	        t          j        d ¦  «        | _
        t          j        d¦  «        | _        t          j        d ¦  «        | _        d | _        d S )N)r]   rŽ   z,Keyword args passed to exception constructorz with kwargs zRDynamo does not know how to handle keyword args passed to an exception constructorrV   F)r>   r?   r
  rz   r   r   rú   r-   rx   Ú__context__Ú	__cause__Ú__suppress_context__Ú__traceback__Úpython_stack)r@   r
  rz   r  r]   rŽ   rA   s         €rB   r?   zExceptionVariable.__init__2  sÒ   ø€ õ 	‰Œ×Ò °mÐÑDÔDÐDØ ˆŒØˆŒ	Øð 	ÝØFØÐ;Ð;¨kÐ;Ð;ØpØ6Õ)Ô5Ð6ð	ñ ô ð õ -=Ô,CÀDÑ,IÔ,IˆÔõ +;Ô*AÀ$Ñ*GÔ*GˆŒå5EÔ5LÈUÑ5SÔ5SˆÔ!å.>Ô.EÀdÑ.KÔ.KˆÔð <@ˆÔÐÐrC   rX   c                 ó   — || _         d S rE   )r  )r@   rX   s     rB   Úset_contextzExceptionVariable.set_contextS  s   € Ø"ˆÔÐÐrC   rI   r3   c                 ó"  ‡ ‡— ‰                      ˆˆ fd„¦  «         ‰                     ‰ j        ¦  «         ‰                     t	          ‰ j        ¦  «        d¦  «         dt
          dd fˆˆ fd„} |d¦  «          |d¦  «          |d¦  «         d S )	Nc                  óD   •— ‰                       d‰j        j        ¦  «        S )NrF   )Úload_import_fromr
  r   ©rI   r@   s   €€rB   rM   z/ExceptionVariable.reconstruct.<locals>.<lambda>X  s   ø€ �G×,Ò,¨Z¸¼Ô9OÑPÔP€ rC   FrS   r:   c                 óD  •— t          ‰| ¦  «        }t          |t          ¦  «        r|j        dvrt	          d|› �¦  «        ‚d S ‰                     ¦   «           ‰|¦  «         ‰                     ‰                     d¦  «        ¦  «         ‰                     | ¦  «         d S )N)TFNz-attr.value must be True, False, or None, got r   )	rd   r&   r-   r`   r[   Údup_toprO   Úrot_nr¦   )rS   r¼   rI   r@   s     €€rB   Úcodegen_attrz3ExceptionVariable.reconstruct.<locals>.codegen_attr]  s±   ø€ Ý˜4 Ñ&Ô&ˆDÝ�dÕ,Ñ-Ô-ð 	)Ø”:Ð%8Ð8Ð8Ý(ØNÈÐNÐNñô ð ð 9Ð8ð
 —’Ñ!Ô!Ð!Ø�˜‘”�Ø×%Ò% g§m¢m°AÑ&6Ô&6Ñ7Ô7Ð7Ø×"Ò" 4Ñ(Ô(Ð(Ð(Ð(rC   r  r  r  )rN   Úforeachrz   r�   rf   r¥   )r@   rI   r  s   `` rB   rQ   zExceptionVariable.reconstructV  sÉ   øø€ Ø×ÒØPÐPÐPÐPÐPñ	
ô 	
ð 	
ð 	�Š˜œ	Ñ"Ô"Ð"Ø×Ò�c $¤)™nœn¨eÑ4Ô4Ð4ð	)�sð 	) tð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	ˆ�]Ñ#Ô#Ð#Øˆ�[Ñ!Ô!Ð!ØˆÐ+Ñ,Ô,Ð,Ð,Ð,rC   c                 ó   — | j         S rE   )r
  rG   s    rB   rH   zExceptionVariable.python_typen  s
   € ØŒ}ÐrC   rR   r4   rû   r,   rü   c                 ó*   — ddl m}  || |||¦  «        S rþ   r   r  s        rB   r  z"ExceptionVariable.richcompare_implq  r  rC   rS   r9   c                 ó�  •— |dk    �rÞ|d                               ¦   «         }|d         }|dk    rn|                     ¦   «         sCt          |t          j        t          j        t          j        f¦  «        st          |› d�¦  «        ‚|                      |¦  «         �n)|dk    r�|                     ¦   «         s<t          |t          j	        t          j        t          j        t          j        f¦  «        r,|| _
        t          j                             d¦  «        | _        n§t          |d¦  «         n–|d	k    r/|                     dd
¦  «        r|| _        nrt          |d¦  «         na|dk    r2t                                |¦  «        st          |d¦  «         || _        n)t'          dd| › d|› �d|› d�g t(          j        ¢¬¦  «         t          j                             d ¦  «        S |dk    r7|\  }t                                |¦  «        st          |d¦  «         || _        | S t-          ¦   «                              ||||¦  «        S )Nr  r   r)   r  z! is not a valid exception contextr  Tz9exception cause must be None or derive from BaseExceptionr  Fr  z0__traceback__ must be a traceback object or Nonez4Unsupported attribute assignment on Exception objectzcall_setattr r~   z/Dynamo does not support setting the attribute 'z{' on tracked exception objects. Only `__context__`, `__cause__`, `__suppress_context__`, and `__traceback__` are supported.rV   Úwith_traceback)r\   rç   r�   r   r	  Ú!UserDefinedExceptionClassVariableÚ"UserDefinedExceptionObjectVariabler[   r  rL   r  r-   rx   r  r   Úis_constant_matchrß   ré   r  r   r   rú   r>   r—   )r@   rR   rS   rz   r9   ró   rì   rA   s          €rB   r—   zExceptionVariable.call_methodx  s«  ø€ ð �=Ò Ñ Ø˜”7×-Ò-Ñ/Ô/ˆDØ�q”'ˆCØ�}Ò$Ð$ð ×(Ò(Ñ*Ô*ðTå!Øå%Ô7Ý%ÔGÝ%ÔHðñô ðTõ )¨CÐ)RÐ)RÐ)RÑSÔSÐSØ× Ò  Ñ%Ô%Ð%Ñ%Ø˜Ò$Ð$Ø×'Ò'Ñ)Ô)ð ­ZØå!Ô1Ý!Ô3Ý!ÔCÝ!ÔDð	ñ.ô .ð ð &)�D”NÝ09Ô0J×0QÒ0QÐRVÑ0WÔ0W�DÔ-Ð-å$ØÐWñô ð ð ð Ð/Ò/Ð/Ø×(Ò(¨¨uÑ5Ô5ð Ø03�DÔ-Ð-å$ØÐWñô ð ð ð ˜Ò(Ð(Ý(×;Ò;¸CÑ@Ô@ð Ý$ØÐNñô ð ð &)�Ô"Ð"åØRØ9¨DÐ9Ð9°4Ð9Ð9ð!^Øð!^ð !^ð !^ð ;Õ-Ô9Ð:ðñ ô ð õ Ô-×4Ò4°TÑ:Ô:Ð:ØÐ%Ò%Ð%Ø‰DˆRÝ$×7Ò7¸Ñ;Ô;ð YÝ  Ð%WÑXÔXÐXØ!#ˆDÔØˆKå‘7”7×&Ò& r¨4°°vÑ>Ô>Ð>rC   c                 ó‚  •— |dk    rt          j        || j        ¦  «        S |dk    r| j        S |dk    r| j        S |dk    r| j        S |dk    r| j        S |dk    rCt          j        |t          | j        ¦  «        | j	        ot          | j	        d¦  «        ¬¦  «        S t          ¦   «                              ||¦  «        S )NrA   r  r  r  r  rz   rs   )r,   r�   r
  r  r  r  r  rÍ   rz   r]   r   r>   ry   rÝ   s      €rB   ry   zExceptionVariable.var_getattrÁ  sÚ   ø€ ð �;ÒÐÝ"Ô(¨¨T¬]Ñ;Ô;Ð;Ø�]Ò"Ð"ØÔ#Ð#Ø�[Ò Ð Ø”>Ð!ØÐ+Ò+Ð+ØÔ,Ð,Ø�_Ò$Ð$ØÔ%Ð%Ø�VŠ^ˆ^Ý"Ô(ØÝ�d”iÑ Ô Ø”{ÐF¥z°$´+¸vÑ'FÔ'Fðñ ô ð õ
 ‰wŒw×"Ò" 2 tÑ,Ô,Ð,rC   c                 ó0   — | j         j        › d| j        › d�S )Nú(ú))rA   r   r
  rG   s    rB   Ú__str__zExceptionVariable.__str__Ö  s    € Ø”.Ô)Ð<Ð<¨D¬MÐ<Ð<Ð<Ð<rC   Úargc                 óŽ   — 	 t          |                      ¦   «         ¦  «        S # t          $ r |                      ¦   «         cY S w xY wrE   )Úreprr\   Ú	ExceptionÚ
debug_repr©r)  s    rB   Ú_debug_format_argz#ExceptionVariable._debug_format_argÛ  sR   € ð	$Ý˜×.Ò.Ñ0Ô0Ñ1Ô1Ð1øÝð 	$ð 	$ð 	$Ø—>’>Ñ#Ô#Ð#Ð#Ð#ð	$øøøs   ‚ # £AÁAc                 ó„   ‡ — d                      ˆ fd„‰ j        D ¦   «         ¦  «        }‰                      ¦   «         › d|› d�S )Nú, c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rE   ©r/  ©Ú.0r)  r@   s     €rB   ú	<genexpr>z/ExceptionVariable.debug_repr.<locals>.<genexpr>ã  s1   øè è € ÐJÐJ¸˜×/Ò/°Ñ4Ô4ÐJÐJÐJÐJÐJÐJrC   r&  r'  )Újoinrz   Úpython_type_name)r@   rz   s   ` rB   r-  zExceptionVariable.debug_reprâ  sN   ø€ Ø�yŠyÐJÐJÐJÐJÀÄ	ÐJÑJÔJÑJÔJˆØ×'Ò'Ñ)Ô)Ð3Ð3¨DÐ3Ð3Ð3Ð3rC   c                 óP   — t          j        ||                      ¦   «         ¦  «        S rE   )r,   r�   r-  ©r@   rR   s     rB   Ú	repr_implzExceptionVariable.repr_implæ  s   € åÔ$ R¨¯ªÑ):Ô):Ñ;Ô;Ð;rC   )NNNrÉ   )r   r�   rÊ   ÚBaseExceptionrË   r   rÎ   r,   rÏ   r¥   r   r   r?   r  rQ   r_   rH   r  r—   ry   r(  Ú__repr__r˜   r/  r-  r;  rÐ   rÑ   s   @rB   r	  r	  -  sg  ø€ € € € € à!€Mð :>Ø $Ø-1ð@ð @àð@ð �?Ô#ð@ð ˜#˜Ð.Ô/°$Ñ6ð	@ð
 ˜‘ð@ð $ dÑ*ð@ð 
ð@ð @ð @ð @ð @ð @ðB# ?ð #°tð #ð #ð #ð #ð-ð -ð -ð -ð0˜Tð ð ð ð ð7Ø-ð7Ø6Gð7ØMPð7à	ð7ð 7ð 7ð 7ðG?à'ðG?ð ðG?ð �?Ô#ð	G?ð
 �S˜/Ð)Ô*ðG?ð 
ðG?ð G?ð G?ð G?ð G?ð G?ðR-Ø-ð-Ø58ð-à	ð-ð -ð -ð -ð -ð -ð*=˜ð =ð =ð =ð =ð €Hàð$˜ð $°3ð $ð $ð $ñ „\ð$ð4˜Cð 4ð 4ð 4ð 4ð<Ð7ð <¸Oð <ð <ð <ð <ð <ð <ð <ð <rC   r	  c                   ó   — e Zd ZdZdS )ÚUnknownVariablez
    It could be anything!
    N©r   r�   rÊ   Ú__doc__r=   rC   rB   r?  r?  ë  s   € € € € € ðð ð ð rC   r?  c                   ól   ‡ — e Zd ZdZddedz  deddfˆ fd„Zddd	ee         de	eef         defd
„Z
ˆ xZS )ÚDelayGraphBreakVariablez^
    Used to insert a dummy variable in the stack to do the graph break at CALL_FUNCTION.
    NÚmsgr9   r:   c                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S r<   )r>   r?   rD  )r@   rD  r9   rA   s      €rB   r?   z DelayGraphBreakVariable.__init__ö  s+   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒˆˆrC   rR   r4   rz   c                 ó|   — | j         €dn| j         j        }t          dd| j         › �d|› d| j        › �g ¬¦  «         d S )NrU   z#Unsupported function call (delayed)zsource: z@Dynamo determined that a graph break should occur when calling `z`. Reason: rV   )r]   rS   r   rD  )r@   rR   rz   r9   rS   s        rB   r�   z%DelayGraphBreakVariable.call_functionú  sn   € ð ”[Ð(ˆrˆr¨d¬kÔ.>ˆÝØ9Ø,˜tœ{Ð,Ð,ð9Ø!ð9ð 9Ø.2¬hð9ð 9àð	
ñ 	
ô 	
ð 	
ð 	
ð 	
rC   rE   )r   r�   rÊ   rA  r¥   r   r?   rÎ   r,   rÏ   r�   rÐ   rÑ   s   @rB   rC  rC  ñ  s®   ø€ € € € € ðð ðð ˜C $™Jð ¸ð Àð ð ð ð ð ð ð
à'ð
ð �?Ô#ð
ð �S˜/Ð)Ô*ð	
ð
 
ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
rC   rC  c                   ób   — e Zd ZdZdd„Zddd	edefd
„Zdddee         de	eef         defd„Z
dS )ÚComptimeVariableza
    This variable is special, it lets you execute arbitrary code at
    Dynamo compile time
    rI   r3   r:   Nc                 ó    — t          d¦  «        ‚)Nzcomptime is special form)r¡   ©r@   rI   s     rB   rQ   zComptimeVariable.reconstruct  s   € Ý!Ð"<Ñ=Ô=Ð=rC   rR   r4   rS   c                 óª   — ddl m } | j        €t          d¦  «        ‚t          j        |t          ||¦  «        t          | j        |¦  «        ¬¦  «        S )Nr   )Úcomptimez"ComptimeVariable requires a sourcers   )rL  r]   r[   r,   r�   rd   r   )r@   rR   rS   rL  s       rB   ry   zComptimeVariable.var_getattr  sd   € ð 	(Ð'Ð'Ð'Ð'Ð'àŒ;ÐÝ Ð!EÑFÔFÐFåÔ$Ø•˜ $Ñ'Ô'µ
¸4¼;ÈÑ0MÔ0Mð
ñ 
ô 
ð 	
rC   rz   r9   c           
      ó  — ddl m} |st          |¦  «        dk    r2t          |ddt          |¦  «        › dt          |¦  «        › d�¦  «         |d         }t	          |t
          ¦  «        r' |                     ¦   «          ||¦  «        ¦  «         nÐt	          |t          ¦  «        rœ|                     ¦   «         }|j	        rt          |d|j        › �¦  «         t          j        ||j        |j                             ¦   «         |j        rt%          |j        j        ¦  «        nd d	¦  «        } | ||¦  «        ¦  «         nt)          d
t+          |¦  «        › �¦  «        ‚t,          j                             d ¦  «        S )Nr   )ÚComptimeContextz
comptime()zat most 2 args and 0 kwargsz
 args and ú kwargsr   zOcomptime function must not have free variables, but these variables were free: r=   z"unsupported argument to comptime: )rL  rN  rf   r(   r�   r/   Úget_functionr.   Úget_codeÚclosurer   Úco_freevarsr™   rš   Ú	f_globalsÚfn_namer\   ÚdefaultsrÍ   r¯   ÚRuntimeErrorr_   r   r-   rx   )r@   rR   rz   r9   rN  ÚfnÚcoderÁ   s           rB   r�   zComptimeVariable.call_function  sŸ  € ð 	/Ð.Ð.Ð.Ð.Ð.ð ð 	•S˜‘Y”Y ’]�]ÝØØØ-Ý�t‘9”9Ð<Ð<­¨F©¬Ð<Ð<Ð<ñ	ô ð ð �!ŒWˆÝ�bÕ.Ñ/Ô/ð 	PØˆB�OŠOÑÔ˜o˜o¨bÑ1Ô1Ñ2Ô2Ð2Ð2Ý˜Õ6Ñ7Ô7ð 	Pà—;’;‘=”=ˆDØŒzð Ý ØØxÐfjÔfvÐxÐxñô ð õ Ô%ØØ”Ø”
×-Ò-Ñ/Ô/à,.¬KÐA•�b”kÔ'Ñ(Ô(Ð(¸Tð ñô ˆDð ˆD�� Ñ$Ô$Ñ%Ô%Ð%Ð%åÐNÅDÈÁHÄHÐNÐNÑOÔOÐOåÔ)×0Ò0°Ñ6Ô6Ð6rC   rÉ   )r   r�   rÊ   rA  rQ   r¥   r,   ry   rÎ   rÏ   r�   r=   rC   rB   rH  rH  
  s§   € € € € € ðð ð
>ð >ð >ð >ð

Ø-ð

Ø58ð

à	ð

ð 

ð 

ð 

ð-7à'ð-7ð �?Ô#ð-7ð �S˜/Ð)Ô*ð	-7ð
 
ð-7ð -7ð -7ð -7ð -7ð -7rC   rH  c                   óv   ‡ — e Zd ZU ej        Zedz  ed<   dZe	dz  ed<   	 ddedz  de
ddfˆ fd„Zdefd„Zˆ xZS )	ÚCellVariableNÚpre_existing_contentsÚ
local_namer9   r:   c                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S r<   )r>   r?   r\  )r@   r\  r9   rA   s      €rB   r?   zCellVariable.__init___  s0   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø%:ˆÔ"Ð"Ð"rC   c                 ó   — t           j        S rE   )r™   ÚCellTyperG   s    rB   rH   zCellVariable.python_typee  s
   € ÝŒ~ÐrC   rE   )r   r�   rÊ   r™   r`  rË   r,   Ú__annotations__r]  r¥   r   r?   r_   rH   rÐ   rÑ   s   @rB   r[  r[  O  s²   ø€ € € € € € à”N€Mð +¨TÑ1Ð1Ð1Ñ1ð "€J��d‘
Ð!Ð!Ñ!ð ?Cð;ð ;Ø%4°tÑ%;ð;ØNQð;à	ð;ð ;ð ;ð ;ð ;ð ;ð˜Tð ð ð ð ð ð ð ð rC   r[  c                   ó(   ‡ — e Zd Zdeddfˆ fd„Zˆ xZS )ÚNewGlobalVariabler9   r:   Nc                 ó:   •—  t          ¦   «         j        di |¤Ž d S r<   ©r>   r?   ©r@   r9   rA   s     €rB   r?   zNewGlobalVariable.__init__j  ó&   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ð"Ð"rC   )r   r�   rÊ   r   r?   rÐ   rÑ   s   @rB   rc  rc  i  sK   ø€ € € € € ð# ð #¨ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #rC   rc  Úfn_clsr:   .c                 óV   ‡ — dt           dt           dt           fˆ fd„}t          |_        |S )Nrz   r9   r:   c                  ó   •—  ‰j         | i |¤ŽS rE   )Úapply)rz   r9   rh  s     €rB   Útrampoline_autograd_applyzDproduce_trampoline_autograd_apply.<locals>.trampoline_autograd_applyo  s   ø€ ØˆvŒ|˜TÐ, VÐ,Ð,Ð,rC   )r   Ú!produce_trampoline_autograd_applyÚ_origin)rh  rl  s   ` rB   rm  rm  n  sH   ø€ ð-­ð -½ð -Åð -ð -ð -ð -ð -ð -õ )JÐÔ%Ø$Ð$rC   c            
       óf  ‡ — e Zd ZdZdhej        £Zdededdfˆ fd„Zdefd„Z	de
e         deeef         de
e         dz  fd	„Zd
dde
e         deeef         defd„Zd
dde
e         deeef         defd„Zd
dde
e         deeef         dd fd„Zd
ddede
e         deeef         def
d„Zˆ xZS )ÚAutogradFunctionVariablez-represents a torch.autograd.Function subclassrh  r9   r:   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S r<   )r>   r?   rh  )r@   rh  r9   rA   s      €rB   r?   z!AutogradFunctionVariable.__init__  s+   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒˆˆrC   c                 ó   — t           S rE   ©r_   rG   s    rB   rH   z$AutogradFunctionVariable.python_typeƒ  ó   € ÝˆrC   rz   c                 óv  ‡— ddl m} | j        j        }|j        } || j        j        ¦  «         }|rdnd}t          |j        ||j        …         ¦  «        Š|D ]B}|‰vr dS ‰ 	                    |¦  «        t          |¦  «        k     rt          d|› d�¦  «        ‚ŒCt          ˆfd„|D ¦   «         t          |¦  «        dz
  ¬¦  «        }	t          |¦  «        }
t          t          |¦  «        |	dz   ¦  «        D ]?}‰|         }||v r|
                     ||         ¦  «         Œ*t          d	|› d
|› d�¦  «        ‚|
S )a	  Resolve kwargs to positional args using forward().__code__.

        Uses co_varnames/co_argcount directly to match the C++
        resolve_kwargs_to_positional in python_function.cpp.
        Keyword-only args are not resolved; callers should graph break.
        r   ©Ú_is_setup_context_definedr)   Nz,forward() got multiple values for argument 'ú'c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rE   )rb   )r5  rS   Úparam_namess     €rB   r6  z;AutogradFunctionVariable._resolve_kwargs.<locals>.<genexpr>   s1   øè è € Ð8Ð8¨ˆ[×Ò˜tÑ$Ô$Ð8Ð8Ð8Ð8Ð8Ð8rC   )Údefaultz&forward() missing required argument: 'z' (position r'  )Útorch.autograd.functionrw  rh  ÚforwardÚ__code__Úsetup_contextrÎ   Úco_varnamesÚco_argcountrb   rf   rõ   Úmaxre   Úappend)r@   rz   r9   rw  rX  rY  Úhas_ctxÚparam_offsetrS   Úmax_idxÚresultÚirz  s               @rB   Ú_resolve_kwargsz(AutogradFunctionVariable._resolve_kwargs†  s‘  ø€ ð 	FÐEÐEÐEÐEÐEàŒ[Ô ˆØŒ{ˆØ/Ð/°´Ô0IÑJÔJÐJˆØ#Ð*�q�q¨ˆÝ˜4Ô+¨L¸4Ô;KÐ,KÔLÑMÔMˆàð 	Xð 	XˆDØ˜;Ð&Ð&Ø�t�tØ× Ò  Ñ&Ô&­¨T©¬Ò2Ð2ÝÐ VÈtÐ VÐ VÐ VÑWÔWÐWð 3õ Ø8Ð8Ð8Ð8°Ð8Ñ8Ô8Ý˜‘I”I ‘Mð
ñ 
ô 
ˆõ
 )-¨T©
¬
ˆÝ•s˜4‘y”y '¨A¡+Ñ.Ô.ð 	ð 	ˆAØ˜q”>ˆDØ�vˆ~ˆ~Ø—’˜f TœlÑ+Ô+Ð+Ð+åØS¸TÐSÐSÈqÐSÐSÐSñô ð ð ˆrC   rR   r4   c           	      óP  ‡‡— |ro|                       ||¦  «        }|€St          ddt          |¦  «        t          | j        j        j        j        ¦  «        z
  › �dg t          j        ¢¬¦  «         |}i }dŠdt          dd fˆˆfd„}t          j
        |||f¦  «         ‰�rt          j        ¦   «         �r| j        }d	d
lm} d	dlm} | j        j        }	 || j        j        ¦  «        }
|
r" || j        j        | j        j        ¦  «        }	d }| j        j        }|t          j        j        j        ur*t          dd| › d|› d|› �dddgt          j        ¢¬¦  «         | j        j        }|t          j        j        j        ur)t          dd| › d|› d|› �ddgt          j        ¢¬¦  «         ddlm} |€9|
s7t3          ‰                     | j        j        ¦  «        | j        j        ¦  «        }|ot3          |d¬¦  «        } ||	| j        j        ||¬¦  «                             ‰||¦  «        }| j        r„|
r‚t3          | j        d¦  «        }t?          |                      tB          j"        ¦  «        ¦  «         t3          | j        d¦  «        }t?          |                      tB          j"        ¦  «        ¦  «         |S | j        rt3          | j        d¦  «        }nd }| j        j        }tF           $                    ‰||¦  «        }|g|¢}tK          |tL          j'        ¦  «        rutQ          j)        |¦  «        }tU          |¦  «        dz
  tU          |j+        ¦  «        k    r
|dd …         }t          j,        ‰||d¬¦  «        }|                     ‰||¦  «        S tK          |tL          j-        ¦  «        rHt]          j/        |j0        t]          j1        | j        ¦  «        |¬¦  «                             ‰||¦  «        S t          dd| › d|› d|› �dte          |¦  «        j        › d �d!g¬¦  «         d S )"NÚautograd_function_kwonly_argsz!forward() has keyword-only args: zMautograd.Function.apply does not support keyword-only arguments in forward().rV   Fr°   r:   c                 ó°   •— |                       ¦   «         r| j        durdŠt          | t          j        ¦  «        r|                      ‰¦  «        rdŠd S d S d S )NFT)Ú	is_tensorÚrequires_gradr�   r   ÚNNModuleVariableÚis_training)r°   rŽ  rR   s    €€rB   Úvisitz2AutogradFunctionVariable.call_apply.<locals>.visitÃ  sl   ø€ à�|Š|‰~Œ~ð )àÔ#¨5Ð0Ð0Ø$(�MÝ˜"�iÔ8Ñ9Ô9ð )Ø—>’> "Ñ%Ô%ð )Ø$(�M�M�Mð)ð )ð)ð )rC   r   )Ú#autograd_function_forward_rewrittenrv  zUnsupported custom vjpzcall_apply r~   zgDynamo does not support tracing `torch.autograd.Function` subclasses that define a custom `vjp` method.z+Remove the custom `vjp` method if possible.z.Use standard `backward` instead if applicable.zUnsupported custom jvpzgDynamo does not support tracing `torch.autograd.Function` subclasses that define a custom `jvp` method.z+Remove the custom `jvp` method if possible.r)   )ÚAutogradFunctionApplyVariablerk  )r–   rs   r}  r  Tr‚   z=Non-function or method in subclass of torch.autograd.FunctionzˆDynamo requires the `forward` attribute of a `torch.autograd.Function` subclass to be a standard Python function or method. Found type `z
` instead.zPEnsure the `forward` method is defined as a regular function or instance method.)3r‰  r   Úsetrh  r}  r~  r€  r   rú   r,   r‘  r‰   Úis_grad_enabledr]   Ú"torch._functorch.autograd_functionr’  r|  rw  r  ÚvjpÚautogradÚFunctionÚjvpÚhigher_order_opsr“  r   Úimport_sourcer�   r   Úbackwardr�   r   rv   r   ÚCLOSURE_MATCHÚAutogradFunctionContextVariablerx   r�   r™   rš   ÚinspectÚ	signaturerf   Ú
parametersr�   r�   r   rž   r„   r“   r_   )r@   rR   rz   r9   Úresolvedr‘  r]   r’  rw  Ú
forward_fnÚis_setup_ctx_definedÚvjp_fnÚjvp_fnr“  Úapply_sourceró   Úfwd_srcÚsetup_ctx_srcrX  ÚctxÚsigr¶   rŽ  s    `                    @rB   Ú
call_applyz#AutogradFunctionVariable.call_apply¯  s  øø€ ð ð 
	Ø×+Ò+¨D°&Ñ9Ô9ˆHØÐÝØ;Ø}ÅÀFÁÄÍcÐRVÔR]ÔReÔRnÔRzÑN{ÔN{Ñ@{Ð}Ð}Ø oØ:Õ-Ô9Ð:ð	ñ ô ð ð ˆDØˆFàˆð	)•oð 	)¨$ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)õ 	Ô˜e d¨F ^Ñ4Ô4Ð4àñ F	�UÔ2Ñ4Ô4ñ F	Ø”[ˆFðð ð ð ð ð ð JÐIÐIÐIÐIÐIàœÔ,ˆJà#<Ð#<¸T¼[Ô=VÑ#WÔ#WÐ Ø#ð 	ð AÐ@Ø”KÔ'¨¬Ô)Bñô �
ð �à”[”_ˆFØ�Uœ^Ô4Ô8Ð8Ð8ÝØ4Ø@¨$Ð@Ð@°Ð@Ð@¸Ð@Ð@ð!-ð FØHðõ +Ô6ððñ ô ð ð ”[”_ˆFØ�Uœ^Ô4Ô8Ð8Ð8ÝØ4Ø@¨$Ð@Ð@°Ð@Ð@¸Ð@Ð@ð!-ð Fðå*Ô6ðð
ñ 
ô 
ð 
ð HÐGÐGÐGÐGÐGàˆ~Ð&:ˆ~Ý#Ø×$Ò$ T¤[Ô%;Ñ<Ô<¸d¼kÔ>Rñô �ð "ÐH¥j°ÀÐ&HÑ&HÔ&HˆLØ/Ð/ØØ”Ô$ØØ#ð	ñ ô ÷
 Šm˜B  fÑ-Ô-ð ð Œ{ð TÐ3ð TÝ$ T¤[°)Ñ<Ô<�Ý˜g×0Ò0µÔ1KÑLÔLÑMÔMÐMÝ *¨4¬;¸Ñ HÔ H�Ý˜m×6Ò6µ|Ô7QÑRÔRÑSÔSÐSàˆJàŒ;ð 	Ý ¤¨YÑ7Ô7ˆFˆFàˆFàŒ[Ô ˆÝ-×4Ò4°R¸¸vÑFÔFˆØˆ|�dˆ|ˆÝ�b�%Ô,Ñ-Ô-ð 	ÝÔ# BÑ'Ô'ˆCÝ�4‰yŒy˜1‰}¥ C¤NÑ 3Ô 3Ò3Ð3Ø˜A˜B˜B”x�Ý#Ô)¨"¨b¸ÈÐNÑNÔNˆEØ×&Ò& r¨4°Ñ8Ô8Ð8Ý˜�EÔ,Ñ-Ô-ð 	ÝÔ/Ø”ÝÔ2°4´;Ñ?Ô?Øðñ ô ÷ Šm˜B  fÑ-Ô-ð	.õ ØWØ< dÐ<Ð<¨TÐ<Ð<°FÐ<Ð<ðQå37¸±8´8Ô3DðQð Qð Qð3ðð
ñ 
ô 
ð 
ð 
ð 
rC   c                 óô  — | j         j        }t          |d         j        ¦  «        t          j        j        j        ur*t          dt          |d         j        ¦  «        › �¦  «        ‚t          |t          j        ¦  «        st          dt          |¦  «        › �¦  «        ‚| j        €t          d¦  «        ‚t          | j        d¦  «        }t          j        |||d¬¦  «        }|                     |||¦  «        S )Nr   z$Expected FakeBackwardCFunction, got zExpected FunctionType, got z*AutogradFunctionVariable requires a sourcer�  Tr‚   )rh  r�  r_   r`   r‰   Ú_dynamoÚexternal_utilsÚFakeBackwardCFunctionr[   r�   r™   rš   r]   r   r,   r�   r�   )r@   rR   rz   r9   rX  Ú	fn_sourcer¶   s          rB   Úcall_backwardz&AutogradFunctionVariable.call_backward8  sñ   € ð Œ[Ô!ˆå��a””ÑÔÝ”=Ô/ÔEðFð Fõ !ØLµt¸DÀ¼G¼MÑ7JÔ7JÐLÐLñô ð õ ˜"�eÔ0Ñ1Ô1ð 	KÝ Ð!I½tÀB¹x¼xÐ!IÐ!IÑJÔJÐJØŒ;ÐÝ Ð!MÑNÔNÐNÝ˜tœ{¨JÑ7Ô7ˆ	ÝÔ% b¨"°YÈÐMÑMÔMˆØ×"Ò" 2 t¨VÑ4Ô4Ð4rC   c                 ó*   — t          | j        ¦  «        S rE   )rp  rh  ©r@   rR   rz   r9   s       rB   r�   z&AutogradFunctionVariable.call_functionN  s   € õ (¨¬Ñ4Ô4Ð4rC   rS   c           
      óä  — ddl m} |dk    rqt          j        | j        ¦  «        rAt          | j        ¦  «        } || |j        j        d|gt          ||¦  «        ¢R Ž ¬¦  «        S |  	                    |||¦  «        S |dk    r|  
                    |||¦  «        S | j        �t          | j        |¦  «        nd }	 t          j        | j        |¦  «        }n# t          $ r d }Y nw xY wt!          |t"          ¦  «        r�|                     | j        ¦  «        }	t          j        |	¦  «        }
|
€t)          d|	› �¦  «        ‚|�,|
                     |	|¬¦  «                             |||¦  «        S  |
|	¦  «                             |||¦  «        S t!          |t.          ¦  «        r1t1          j        |j        | |¬¦  «                             |||¦  «        S t7          d	d
| › d|› �d|› d�dg¬¦  «         d S )Nr)   )Úwrap_fx_proxyrk  r�   )rR   Úproxyr�  z%trace_rules.lookup returned None for rs   z$Unsupported autograd.Function methodr}   r~   ú,Dynamo does not support calling the method `z‡` directly on the `torch.autograd.Function` instance. Supported methods include `apply`, `backward`, static methods, and class methods.znEnsure the method is decorated with `@staticmethod` or `@classmethod` if it's meant to be called on the class.rV   )Úbuilderr·  r   Úis_callable_allowedrh  rm  r¢   Úcreate_proxyr'   r­  r³  r]   r   r   Úgetattr_staticr¬   r�   r˜   Ú__get__Úlookupr[   Úcreate_with_sourcer�   r›   r   rž   r„   r   )r@   rR   rS   rz   r9   r·  rl  r]   rå   rÁ   Útraceds              rB   r—   z$AutogradFunctionVariable.call_methodV  sƒ  € ð 	+Ð*Ð*Ð*Ð*Ð*à�7Š?ˆ?ÝÔ.¨t¬{Ñ;Ô;ð 9Ý,MØ”Kñ-ô -Ð)ð %�}ØØ0˜"œ)Ô0Ø'Ø1ðõ +¨4°Ñ8Ô8ðð ð ðñ ô ð ð —’ r¨4°Ñ8Ô8Ð8à�ZÒÐØ×%Ò% b¨$°Ñ7Ô7Ð7à6:´kÐ6M•Z ¤¨TÑ2Ô2Ð2ÐSWˆFðÝÔ,¨T¬[¸$Ñ?Ô?��øÝ!ð ð ð Ø���ðøøøõ ˜#�|Ñ,Ô,ð Ø—{’{ 4¤;Ñ/Ô/�Ý$Ô+¨DÑ1Ô1�Ø�>Ý(Ð)WÐQUÐ)WÐ)WÑXÔXÐXØÐ%ð ×1Ò1°$¸vÐ1ÑFÔF×TÒTØ  fñô ðð "˜6 $™<œ<×5Ò5°b¸$ÀÑGÔGÐGÝ˜C¥Ñ-Ô-ð Ý Ô3Ø”L $¨vðñ ô ç’-  D¨&Ñ1Ô1ð2õ ØBØ8¨4Ð8Ð8°$Ð8Ð8ð!9Øð!9ð !9ð !9ð
Uððñ ô ð ð ð s   Â:C ÃC$Ã#C$)r   r�   rÊ   rA  r,   rÌ   r   r?   r_   rH   rÎ   rÏ   r¥   r‰  r­  r³  r�   r—   rÐ   rÑ   s   @rB   rp  rp  w  s  ø€ € € € € Ø7Ð7ð 	ðà	Ô	'ð€Nð
˜sð ¨cð °dð ð ð ð ð ð ð˜Tð ð ð ð ð'à�?Ô#ð'ð �S˜/Ð)Ô*ð'ð 
ˆoÔ	 Ñ	%ð	'ð 'ð 'ð 'ðRGà'ðGð �?Ô#ðGð �S˜/Ð)Ô*ð	Gð
 
ðGð Gð Gð GðR5à'ð5ð �?Ô#ð5ð �S˜/Ð)Ô*ð	5ð
 
ð5ð 5ð 5ð 5ð,5à'ð5ð �?Ô#ð5ð �S˜/Ð)Ô*ð	5ð
 
$ð5ð 5ð 5ð 5ðAà'ðAð ðAð �?Ô#ð	Að
 �S˜/Ð)Ô*ðAð 
ðAð Að Að Að Að Að Að ArC   rp  c                   óH   — e Zd ZU  ej        e¬¦  «        Zee         ed<   dS )ÚSavedTensorBox)Údefault_factoryÚtensorsN)	r   r�   rÊ   ÚdataclassesÚfieldrÎ   rÅ  r,   ra  r=   rC   rB   rÃ  rÃ  š  s7   € € € € € € à%6 [Ô%6ÀtÐ%LÑ%LÔ%L€GˆT�/Ô"ÐLÐLÑLÐLÐLrC   rÃ  c                   ó^  ‡ — e Zd ZdZdddhej        £Z	 	 	 	 	 	 ddededz  dededz  d	e	ed
f         dz  dedz  de
e         dz  deddfˆ fd„Ze	 	 dddde
e         dz  deeef         dz  de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dedefˆ fd„Zˆ xZS )rŸ  zZ
    Tracks an autograd.Function() context using mutation tracking in side_effects.py
    r¸  Ú	inferenceÚsaved_tensorsNFr`   rœ   Úneeds_input_grad.Únon_differentiableÚdirty_tensorsr9   r:   c                 ó†   •—  t          ¦   «         j        d||dœ|¤Ž || _        || _        || _        || _        || _        d S ©N)r`   rœ   r=   )r>   r?   rÉ  rÊ  rË  rÌ  rÍ  )
r@   r`   rœ   rÉ  rÊ  rË  rÌ  rÍ  r9   rA   s
            €rB   r?   z(AutogradFunctionContextVariable.__init__«  sV   ø€ ð 	�‰ŒÔÐF˜u°ÐFÐF¸vÐFÐFÐFØ"ˆŒØ*ˆÔØ 0ˆÔØ"4ˆÔØ*ˆÔÐÐrC   rR   r4   rz   c           
      óþ   — d }|r|st          d„ |D ¦   «         ¦  «        }| j        j                             d t          j        j        j        t          j	        t          dt          ¦   «         |¬¦  «        i ¦  «        }|S )Nc              3   óL   K  — | ]}|                      ¦   «         o|j        V — Œ d S rE   )r�  rŽ  ©r5  Úxs     rB   r6  z9AutogradFunctionContextVariable.create.<locals>.<genexpr>Æ  s1   è è € Ð$UÐ$UÈ1 Q§[¢[¡]¤]Ð%F°q´Ð$UÐ$UÐ$UÐ$UÐ$UÐ$UrC   T)rÉ  rÊ  rË  )rÍ   r¢   rŒ   Útrack_object_newr‰   r˜  ÚfunctionÚFunctionCtxÚ	functoolsÚpartialrŸ  rÃ  )rR   rz   r9   rË  Úouts        rB   rx   z&AutogradFunctionContextVariable.create½  s”   € ð  ÐØð 	V˜ð 	Vå$Ð$UÐ$UÐPTÐ$UÑ$UÔ$UÑUÔUÐØŒiÔ$×5Ò5ØÝŒNÔ#Ô/ÝÔÝ/ØÝ,Ñ.Ô.Ø!1ð	ñ ô ð ñ

ô 

ˆð ˆ
rC   c                 ób   — | j         €"t          dd| › �dg t          j        ¢¬¦  «         | j         S )Nzproxy not setz	as_proxy zMDynamo requires the autograd.Function context to be initialized with a proxy.rV   )r¸  r   r   r¤   rG   s    rB   Úas_proxyz(AutogradFunctionContextVariable.as_proxyÔ  sJ   € àŒ:ÐÝØ'Ø* DÐ*Ð*ð2à5Õ)Ô4Ð5ðñ ô ð ð ŒzÐrC   rS   c                 óP  •— |dk    r$t          ¦   «                              ||||¦  «        S |dk    r^|r"t          ||dt          |¦  «        › d�¦  «         t	          |i ¦  «        d         | _        t          j                             d ¦  «        S |dk    r€|r"t          ||dt          |¦  «        › d�¦  «         t          | dd ¦  «        €%t          dd	| › d
|› �dg t          j        ¢¬¦  «         || _        t          j                             d ¦  «        S |dk    r)t          dd	| › d
|› �d|› d�g t          j        ¢¬¦  «         | j        €t          dd	| › d
|› �ddg¬¦  «         | j        €t          d¦  «        ‚| j        s9|s| j        st%          |d¦  «         |j        j                             | |¦  «         t          | j        j        ¦  «        dk    rg | j        _        |D ]!}| j        j                             |¦  «         Œ"t          j                             d ¦  «        S )Nr  Úmark_non_differentiablez0 kwargsrO  r   Ú
mark_dirtyr¸  z2Unsupported autograd.Function context `mark_dirty`r}   r~   zKDynamo only supports tracing ctx.mark_dirty inside autograd.Function.apply.rV   Úsave_for_backwardz,Unsupported autograd.Function context methodr¹  z�` on `autograd.Function` context objects. Supported methods are `__setattr__`, `save_for_backward`, `mark_dirty` and `mark_non_differentiable`.z9Unsupported autograd.Function context `save_for_backward`zjDynamo requires the `saved_tensors` attribute to be initialized on the `autograd.Function` context object.zÆEnsure that the `saved_tensors` attribute is properly initialized before calling `save_for_backward`. `save_for_backward` only supported on a newly constructed `torch.autograd.function.FunctionCtx`.z:saved_tensors must be initialized before save_for_backwardz>save_for_backward() requires a source and no keyword arguments)r>   r—   r(   rf   r'   rÌ  r   r-   rx   rd   r   r   rú   rÍ  rÊ  r[   rÉ  r]   r   r¢   rŒ   Útrack_save_for_backwardrÅ  rƒ  )r@   rR   rS   rz   r9   r)  rA   s         €rB   r—   z+AutogradFunctionContextVariable.call_methodá  s¿  ø€ ð �=Ò Ð Ý‘7”7×&Ò& r¨4°°vÑ>Ô>Ð>ØÐ.Ò.Ð.Øð SÝ# B¨¨j½SÀ¹[¼[Ð:QÐ:QÐ:QÑRÔRÐRÝ&7¸¸bÑ&AÔ&AÀ!Ô&DˆDÔ#ÝÔ-×4Ò4°TÑ:Ô:Ð:Ø�\Ò!Ð!Øð SÝ# B¨¨j½SÀ¹[¼[Ð:QÐ:QÐ:QÑRÔRÐRÝ�t˜W dÑ+Ô+Ð3ÝØPØ8¨4Ð8Ð8°$Ð8Ð8ð!6à:Õ-Ô9Ð:ðñ ô ð ð "&ˆDÔÝÔ-×4Ò4°TÑ:Ô:Ð:àÐ&Ò&Ð&ÝØFØ4 tÐ4Ð4¨dÐ4Ð4ð>Øð>ð >ð >ð 7Õ)Ô5Ð6ðñ ô ð ð ÔÐ%ÝØSØ4 tÐ4Ð4¨dÐ4Ð4ðOðwðð
ñ 
ô 
ð 
ð ÔÐ%Ý ØLñô ð ð Œ~ð 	GØð ˜Tœ[ð Ý ØÐXñô ð ð ŒIÔ"×:Ò:¸4ÀÑFÔFÐFõ ˆtÔ!Ô)Ñ*Ô*¨QÒ.Ð.à)+ˆDÔÔ&Øð 	3ð 	3ˆCØÔÔ&×-Ò-¨cÑ2Ô2Ð2Ð2ÝÔ)×0Ò0°Ñ6Ô6Ð6rC   c                 ól  •‡ ‡‡— ‰dv rt          ˆˆ ˆfd„¦  «        S ‰dk    rL‰ j        €t          j                             d ¦  «        S t          j        t          ‰ j        ¦  «        ¦  «        S ‰dk    r2‰ j        �+t          j        t          ‰ j        j        ¦  «        ¦  «        S ‰dk    rg‰ j	        �$t          j                             ‰ j	        ¦  «        S ‰ j
        r5t          ‰ j
        d¦  «        }t          j        ‰‰ j        j	        |¦  «        S t          ¦   «                              ‰‰¦  «        S )N)rß  rÞ  rÝ  c                  óN   •— ‰                      ‰‰t          | ¦  «        |¦  «        S rE   )r—   rÎ   )rz   r9   rS   r@   rR   s     €€€rB   rM   z=AutogradFunctionContextVariable.var_getattr.<locals>.<lambda>+  s!   ø€ ¨×(8Ò(8¸¸TÅ4ÈÁ:Ä:ÈvÑ(VÔ(V€ rC   rÍ  rÊ  rË  )rˆ   rÍ  r   r-   rx   r   rÎ   rÊ  rÅ  rË  r]   r   r,   r�   r`   r>   ry   )r@   rR   rS   r]   rA   s   ``` €rB   ry   z+AutogradFunctionContextVariable.var_getattr&  s3  øøøø€ ð ÐQÐQÐQÝ!ØVÐVÐVÐVÐVÐVñô ð ð �?Ò"Ð"ØÔ!Ð)Ý Ô1×8Ò8¸Ñ>Ô>Ð>ÝÔ*­4°Ô0BÑ+CÔ+CÑDÔDÐDØ�?Ò"Ð" tÔ'9Ð'EÝÔ*­4°Ô0BÔ0JÑ+KÔ+KÑLÔLÐLØÐ%Ò%Ð%ØÔ$Ð0Ý Ô1×8Ò8¸Ô9NÑOÔOÐOØŒ{ð VÝ# D¤KÐ1CÑDÔD�å&Ô,¨R°´Ô1LÈfÑUÔUÐUå‰wŒw×"Ò" 2 tÑ,Ô,Ð,rC   )NFNNNN©NN)r   r�   rÊ   rA  r2   rÌ   r   r_   r  rÍ   rÎ   r,   r?   r˜   rÏ   r¥   rx   rÛ  r—   ry   rÐ   rÑ   s   @rB   rŸ  rŸ  Ÿ  s  ø€ € € € € ðð ð
 	ØØðð 
#Ô	1ð	€Nð #'ØØ$(Ø48Ø)-Ø6:ð+ð +àð+ð ˜4‘Kð+ð ð	+ð
 ˜T‘zð+ð    c 	Ô*¨TÑ1ð+ð   $™Jð+ð ˜OÔ,¨tÑ3ð+ð ð+ð 
ð+ð +ð +ð +ð +ð +ð$ ð .2Ø48ðð Ø'ðà�?Ô# dÑ*ðð �S˜/Ð)Ô*¨TÑ1ðð 
ð	ð ð ñ „\ðð,˜#ð ð ð ð ðC7à'ðC7ð ðC7ð �?Ô#ð	C7ð
 �S˜/Ð)Ô*ðC7ð 
ðC7ð C7ð C7ð C7ð C7ð C7ðJ-Ø-ð-Ø58ð-à	ð-ð -ð -ð -ð -ð -ð -ð -ð -ð -rC   rŸ  c            
       óª   ‡ — e Zd ZdZ	 ddej        j        deej        j                 dz  deddfˆ fd„Z	dd	d
e
dee         dee
ef         def
d„Zˆ xZS )ÚAutogradEngineVariablez;
    Represents a torch._C._ImperativeEngine instance.
    Nr`   rœ   r9   r:   c                 ó@   •—  t          ¦   «         j        d||dœ|¤Ž d S rÏ  re  )r@   r`   rœ   r9   rA   s       €rB   r?   zAutogradEngineVariable.__init__C  s/   ø€ ð 	�‰ŒÔÐF˜u°ÐFÐF¸vÐFÐFÐFÐFÐFrC   rR   r4   rS   rz   c                 ó²  — |dk    r³t           j        j        j        r‚|j        s|j        st          d¦  «        ‚t          j        |t           j        j	        j
        j        ¦  «        }|                     ||j        j                             ¦   «         g|¢R |¦  «        S t!          dd| › d|› �dg ¬¦  «         d S t!          dd| › d|› �d	|› d
�g ¬¦  «         d S )NÚqueue_callbackzXqueue_callback() is only supported when Compiled Autograd is enabled with fullgraph=Truez7Unsupported torch._C._ImperativeEngine.queue_callback()r}   r~   zYqueue_callback() is only supported when Compiled Autograd is enabled with fullgraph=True.rV   z-Unsupported torch._C._ImperativeEngine methodzgDynamo only supports the `queue_callback` method on a torch._C._ImperativeEngine instance, but found: `z`.)r‰   r¯  Úcompiled_autogradÚin_compiled_autograd_regionÚ	one_graphÚerror_on_graph_breakr[   r,   r�   r°  ÚFakeCompiledAutogradEnginerè  r�   r¢   rŒ   Úget_ca_final_callbacks_varr   )r@   rR   rS   rz   r9   r¶   s         rB   r—   z"AutogradEngineVariable.call_methodK  sF  € ð Ð#Ò#Ð#ÝŒ}Ô.ÔJð Øœð ¨Ô(?ð Ý(Ørñô ð õ (Ô-ØÝ”MÔ0ÔKÔZñô �ð ×*Ò*ØØ”YÔ+×FÒFÑHÔHÐPÈ4ÐPÐPØñô ð õ ØUØ8¨4Ð8Ð8°$Ð8Ð8ð!Hàðñ ô ð ð ð õ ØGØ4 tÐ4Ð4¨dÐ4Ð4ðRØIMðRð Rð Ràðñ ô ð ð ð rC   rE   )r   r�   rÊ   rA  r‰   r­   Ú_ImperativeEnginer_   r   r?   r¥   rÎ   r,   rÏ   r—   rÐ   rÑ   s   @rB   rå  rå  >  sê   ø€ € € € € ðð ð ?CðGð GàŒxÔ)ðGð ˜œÔ3Ô4°tÑ;ðGð ð	Gð
 
ðGð Gð Gð Gð Gð Gð&à'ð&ð ð&ð �?Ô#ð	&ð
 �S˜/Ð)Ô*ð&ð 
ð&ð &ð &ð &ð &ð &ð &ð &rC   rå  c                   ó|   ‡ — e Zd Zdedef         deddfˆ fd„Zdefd„Zdd	d
e	e         de
eef         defd„Zˆ xZS )rˆ   rX  .r9   r:   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S r<   )r>   r?   rX  )r@   rX  r9   rA   s      €rB   r?   zLambdaVariable.__init__v  s+   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒˆˆrC   c                 ó   — t           j        S rE   )r™   rš   rG   s    rB   rH   zLambdaVariable.python_typez  s   € ÝÔ!Ð!rC   rR   r4   rz   c                 ó   —  | j         |i |¤ŽS rE   )rX  rµ  s       rB   r�   zLambdaVariable.call_function}  s   € ð ˆtŒw˜Ð' Ð'Ð'Ð'rC   )r   r�   rÊ   r   r,   r   r?   r_   rH   rÎ   rÏ   r¥   r�   rÐ   rÑ   s   @rB   rˆ   rˆ   t  sÀ   ø€ € € € € ð˜8 C¨Ð$8Ô9ð ÀSð ÈTð ð ð ð ð ð ð"˜Tð "ð "ð "ð "ð(à'ð(ð �?Ô#ð(ð �S˜/Ð)Ô*ð	(ð
 
ð(ð (ð (ð (ð (ð (ð (ð (rC   rˆ   c                   ó`  ‡ — e Zd Zddhej        £Z	 ddedededz  deddf
ˆ fd„Zdefˆ fd„Z	defd	„Z
ed
ej        j        dedefd„¦   «         Zdefd„Zdefd„Zdedeeef         fd„Zdddedefd„Zdd„Zdddddeddfd„Zdddee         deeef         defd„Zdddedefˆ fd„Zˆ xZS ) ru   rS   rr   Nrå   r9   r:   c                 ó4  •—  t          ¦   «         j        di |¤Ž t          |t          ¦  «        st	          dt          |¦  «        › �¦  «        ‚t          |t          ¦  «        st	          dt          |¦  «        › �¦  «        ‚|| _        || _        || _	        d S )Nz#obj must be a VariableTracker, got zname must be a str, got r=   )
r>   r?   r�   r,   r[   r_   r¥   rå   rS   rr   )r@   rå   rS   rr   r9   rA   s        €rB   r?   zGetAttrVariable.__init__�  s›   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ý˜#�Ñ/Ô/ð 	TÝ Ð!RÅtÈCÁyÄyÐ!RÐ!RÑSÔSÐSÝ˜$¥Ñ$Ô$ð 	JÝ Ð!H½DÀ¹J¼JÐ!HÐ!HÑIÔIÐIØˆŒØˆŒ	ØˆŒˆˆrC   c                 ó`   •— | j         �| j         S t          ¦   «                              ¦   «         S rE   )rr   r>   rH   ©r@   rA   s    €rB   rH   zGetAttrVariable.python_type�  s)   ø€ ØŒ<Ð#Ø”<Ðå‘7”7×&Ò&Ñ(Ô(Ð(rC   c                 ó@   — | j         j        › d| j        › d| j        › d�S ©Nr&  r1  r'  )rA   r   rå   rS   rG   s    rB   r=  zGetAttrVariable.__repr__£  s*   € Ø”.Ô)ÐDÐD¨D¬HÐDÐD¸¼	ÐDÐDÐDÐDrC   Ú
base_proxyr¼   c                 ó"   — t          | |¦  «        S rE   )rd   )rú  r¼   s     rB   Úcreate_getattr_proxyz$GetAttrVariable.create_getattr_proxy¦  s   € å�z 4Ñ(Ô(Ð(rC   c                 óp   — t                                | j                             ¦   «         | j        ¦  «        S rE   )ru   rü  rå   rÛ  rS   rG   s    rB   rÛ  zGetAttrVariable.as_proxyª  s(   € Ý×3Ò3°D´H×4EÒ4EÑ4GÔ4GÈÌÑSÔSÐSrC   c                 ó¢   — | j                              ¦   «         }	 t          || j        ¦  «        S # t          $ r t          | › d�¦  «        d ‚w xY w)Nz is not a constant)rå   r\   rd   rS   r¬   r¡   )r@   Úconstants     rB   r\   z"GetAttrVariable.as_python_constant­  se   € Ø”8×.Ò.Ñ0Ô0ˆð	MÝ˜8 T¤YÑ/Ô/Ð/øÝð 	Mð 	Mð 	MÝ%¨Ð&AÐ&AÐ&AÑBÔBÈÐLð	Møøøs	   ›0 °ArR   c                 óÎ   — 	 |                       ¦   «         }n?# t          t          f$ r+ ddlm}  |dd| › �d| › d�g t
          j        ¢¬¦  «         Y nw xY wt          |¦  «        dfS )	Nr   )r   z!Non-constant GetAttrVariable hashz
hash_impl zCannot hash zh because Dynamo doesn't know how to represent the type of the getattr() result, which is not a constant.rV   F)r\   r*   r¡   r½   r   r   rú   Úhash)r@   rR   ró   r   s       rB   Ú	hash_implzGetAttrVariable.hash_impl´  s·   € ð	Ø×)Ò)Ñ+Ô+ˆCˆCøÝ3Õ5HÐIð 		ð 		ð 		Ø+Ð+Ð+Ð+Ð+Ð+àˆMØ;Ø+ TÐ+Ð+ðM¨4ð Mð Mð Mà6Õ)Ô5Ð6ðñ ô ð ð ð ð		øøøõ �C‰yŒy˜%ÐÐs   ‚ —9AÁAr4   c                 ó>  — t          | j        t          j        ¦  «        st          ‚|j                             | j        j        ¦  «        }| j        |j	        vrt          ‚t          j        || j        ¦  «        }||j	        vrt          ‚t          j        ||¦  «        S rE   )r�   rå   r   r�  r¡   r¢   Úget_submoduleÚ
module_keyrS   rg   r   r½  )r@   rR   rS   Ústep1Ústep2s        rB   Úconst_getattrzGetAttrVariable.const_getattrÅ  sˆ   € Ý˜$œ(¥IÔ$>Ñ?Ô?ð 	&Ý%Ð%Ø”	×'Ò'¨¬Ô(;Ñ<Ô<ˆØŒ9˜EœNÐ*Ð*Ý%Ð%ÝÔ& u¨d¬iÑ8Ô8ˆØ�u”~Ð%Ð%Ý%Ð%ÝÔ% e¨TÑ2Ô2Ð2rC   rI   r3   c                 ó€   —  || j         ¦  «         |                     |                     | j        ¦  «        ¦  «         d S rE   )rå   rO   Úcreate_load_attrsrS   rJ  s     rB   rQ   zGetAttrVariable.reconstructÐ  s>   € Øˆ�”ÑÔÐØ×Ò˜g×7Ò7¸¼	ÑBÔBÑCÔCÐCÐCÐCrC   rû   r,   rü   c                 óÈ  — ddl m} 	 | j                             || j        ¦  «        }n# t
          $ r d }Y nw xY w|�t          |t          ¦  «        r„| j                             ¦   «         rBt          | j         
                    ¦   «         | j        ¦  «        }t          j        ||¦  «        }n)t          dd| › d|› �d| › d�g t          j        ¢¬¦  «          |||||¦  «        S )	Nr)   )Úgeneric_richcomparez%Unresolved GetAttrVariable comparisonzrichcompare_impl r~   zCannot compare zA because the attribute could not be resolved to a concrete value.rV   )r  r  rå   ry   rS   r¡   r�   ru   Úis_python_constantrd   r\   r,   r�   r   r   rú   )r@   rR   rû   rü   r  r£  ró   s          rB   r  z GetAttrVariable.richcompare_implÔ  s$  € ð 	9Ð8Ð8Ð8Ð8Ð8ð	Ø”x×+Ò+¨B°´	Ñ:Ô:ˆHˆHøÝ"ð 	ð 	ð 	ØˆHˆHˆHð	øøøàÐ�z¨(µOÑDÔDÐØŒx×*Ò*Ñ,Ô,ð 
Ý˜dœh×9Ò9Ñ;Ô;¸T¼YÑGÔG�Ý*Ô0°°SÑ9Ô9��åØCØ;°Ð;Ð;°rÐ;Ð;ð!B°$ð !Bð !Bð !Bà:Õ-Ô9Ð:ðñ ô ð ð #Ð" 2 x°¸Ñ;Ô;Ð;s   ˆ ) ©8·8rz   c                 óF   — | j                              || j        ||¦  «        S rE   )rå   r—   rS   rµ  s       rB   r�   zGetAttrVariable.call_functionë  s"   € ð Œx×#Ò# B¨¬	°4¸Ñ@Ô@Ð@rC   Úkeyc                 óä   •— | j         dk    rCt          | j        d¦  «        r.| j                             |¦  «                             ||¦  «        S t          ¦   «                              ||¦  «        S )Nrg   Úget_dict_vt)rS   r’   rå   r  Úmp_subscript_implr>   )r@   rR   r  rA   s      €rB   r  z!GetAttrVariable.mp_subscript_impló  sc   ø€ ð
 Œ9˜
Ò"Ð"¥w¨t¬x¸Ñ'GÔ'GÐ"Ø”8×'Ò'¨Ñ+Ô+×=Ò=¸bÀ#ÑFÔFÐFÝ‰wŒw×(Ò(¨¨SÑ1Ô1Ð1rC   rE   rÉ   )r   r�   rÊ   r,   rÌ   r¥   r_   r   r?   rH   r=  r˜   r‰   ÚfxÚProxyrü  rÛ  r\   rÍ   Úintr  r  r  rQ   r  rÎ   rÏ   r�   r  rÐ   rÑ   s   @rB   ru   ru   †  s  ø€ € € € € àØðð 
Ô	'ð€Nð  $ð	ð àðð ðð ˜‘ð	ð
 ðð 
ðð ð ð ð ð ð )˜Tð )ð )ð )ð )ð )ð )ðE˜#ð Eð Eð Eð Eð ð)¨¬¬ð )¸sð )Àsð )ð )ð )ñ „\ð)ðT˜#ð Tð Tð Tð TðM Cð Mð Mð Mð Mð ˜Cð   E¨#¨t¨)Ô$4ð  ð  ð  ð  ð"	3Ð ;ð 	3À3ð 	3È3ð 	3ð 	3ð 	3ð 	3ðDð Dð Dð Dð<Ø-ð<Ø6Gð<ØMPð<à	ð<ð <ð <ð <ð.Aà'ðAð �?Ô#ðAð �S˜/Ð)Ô*ð	Að
 
ðAð Að Að Að2à'ð2ð ð2ð 
ð	2ð 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2rC   ru   c                   óô   ‡ — e Zd Zej        Zddhej        £Zdej        deddfˆ fd„Z	de
ej                 fd„Zdej        fd„Zdej        fd	„Zdefd
„Zdddeddfd„Zdddedefd„Zdddddeddfd„Zˆ xZS )ÚPythonModuleVariabler`   Úis_torchr9   r:   Nc                 ó¬   •—  t          ¦   «         j        di |¤Ž || _        | j        t          u p| j        j                             d¦  «        | _        d S )Nztorch.r=   )r>   r?   r`   r‰   r   Ú
startswithr  ©r@   r`   r9   rA   s      €rB   r?   zPythonModuleVariable.__init__  sQ   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒ
Øœ
¥eÐ+ÐW¨t¬zÔ/B×/MÒ/MÈhÑ/WÔ/WˆŒˆˆrC   c                 ó   — t           j        S rE   )r™   Ú
ModuleTyperG   s    rB   rH   z PythonModuleVariable.python_type  s   € ÝÔÐrC   c                 ó   — | j         S rE   ©r`   rG   s    rB   r\   z'PythonModuleVariable.as_python_constant  ó
   € ØŒzÐrC   c                 ó   — | j         S rE   r  rG   s    rB   Úget_real_python_backed_valuez1PythonModuleVariable.get_real_python_backed_value  r   rC   c                 ó   — d| j         › d�S )NzPythonModuleVariable(r'  r  rG   s    rB   r=  zPythonModuleVariable.__repr__  s   € Ø4 t¤zÐ4Ð4Ð4Ð4rC   rR   r4   rS   r-   c                 óV   — t          | j        |¦  «        }t          j        ||¦  «        S rE   )r’   r`   r,   r�   ©r@   rR   rS   r‡  s       rB   Úcall_obj_hasattrz%PythonModuleVariable.call_obj_hasattr  s(   € õ ˜œ TÑ*Ô*ˆÝÔ$ R¨Ñ0Ô0Ð0rC   c                 ó°  — |j         j                             | |¦  «        r |j         j                             | |¦  «        S d }| j        s|| j        j        vr<	 t          | j        |¦  «        }n7# t          $ r t          t          |¦  «         Y nw xY w| j        j        |         }| j
        ot          | j
        |¦  «        }t          j        |||¦  «        S rE   )r¢   rŒ   Úhas_pending_mutation_of_attrÚ	load_attrr  r`   rg   rd   r¬   r   r]   r   r,   r�   )r@   rR   rS   r¿   r]   s        rB   ry   z PythonModuleVariable.var_getattr  sâ   € ð Œ9Ô!×>Ò>¸tÀTÑJÔJð 	@Ø”9Ô)×3Ò3°D¸$Ñ?Ô?Ð?àˆ
ØŒ=ð 	3˜D¨¬
Ô(;Ð;Ð;ð=Ý$ T¤Z°Ñ6Ô6�
�
øÝ!ð =ð =ð =Ý(­¸Ñ<Ô<Ð<Ð<Ð<ð=øøøð œÔ,¨TÔ2ˆJà”Ð>¥¨D¬K¸Ñ!>Ô!>ˆÝÔ$ R¨°VÑ<Ô<Ð<s   ÁA/ Á/BÂBrû   r,   rü   c                 ó*   — ddl m}  || |||¦  «        S rþ   r   r  s        rB   r  z%PythonModuleVariable.richcompare_impl0  r  rC   )r   r�   rÊ   r™   r  rË   r,   rÌ   r   r?   r_   rH   r\   r"  r¥   r=  r&  ry   r  rÐ   rÑ   s   @rB   r  r  ý  sˆ  ø€ € € € € àÔ$€Mð 	Øðð 
Ô	'ð€NðX˜eÔ.ð X¸#ð XÀ$ð Xð Xð Xð Xð Xð Xð
 ˜T %Ô"2Ô3ð  ð  ð  ð  ð EÔ$4ð ð ð ð ð¨eÔ.>ð ð ð ð ð5˜#ð 5ð 5ð 5ð 5ð1Ø-ð1Ø58ð1à	ð1ð 1ð 1ð 1ð=Ø-ð=Ø58ð=à	ð=ð =ð =ð =ð$7Ø-ð7Ø6Gð7ØMPð7à	ð7ð 7ð 7ð 7ð 7ð 7ð 7ð 7rC   r  c            
       ó  ‡ — e Zd Zdededdfˆ fd„Zdddedefd	„Zddd
ddeddfd„Zdddede	e         de
eef         def
d„Z	 dddd
ededefd„Zdddedefd„Zdefd„Zdedeeef         fd„Zdefd„Zdˆ fd„Zd
edefd„Zˆ xZS )ÚTypingVariabler`   r9   r:   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S r<   ©r>   r?   r`   r  s      €rB   r?   zTypingVariable.__init__9  ó+   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒ
ˆ
ˆ
rC   rR   r4   r  c                 óÞ   — |                      ¦   «         s,t          dd|› d�d| j        › d�g t          j        ¢¬¦  «         | j        |                     ¦   «                  }t          |¦  «        S )Nznon-constant typing subscriptzTypingVariable[ú]z"Cannot subscript typing construct z with a non-constant key.rV   )r  r   r`   r   rú   r\   r,  )r@   rR   r  Ú
new_typings       rB   r  z TypingVariable.mp_subscript_impl=  s„   € ð ×%Ò%Ñ'Ô'ð 	ÝØ7Ø0¨#Ð0Ð0Ð0ØfÀÄÐfÐfÐfØ6Õ)Ô5Ð6ð	ñ ô ð ð ”Z × 6Ò 6Ñ 8Ô 8Ô9ˆ
Ý˜jÑ)Ô)Ð)rC   rû   r,   rü   c                 óò   — |dv r[t          |t          ¦  «        r-| j        |j        k    }|dk    r| }t          j        |¦  «        S t          j        t
          ¦  «        S t          j        t
          ¦  «        S )N)Ú__eq__Ú__ne__r5  )r&   r,  r`   r-   rx   ÚNotImplemented)r@   rR   rû   rü   r‡  s        rB   r  zTypingVariable.richcompare_implM  ss   € ð Ð%Ð%Ð%Ý�e�^Ñ,Ô,ð 7Øœ u¤{Ò2�Ø˜’>�>Ø!'˜Z�FÝ'Ô.¨vÑ6Ô6Ð6Ý#Ô*­>Ñ:Ô:Ð:ÝÔ&¥~Ñ6Ô6Ð6rC   rS   rz   c                 ó˜   — t          dd| j        › d|› d|› d|› �d|› d| j        › d�d	|› d
| j        › d�gt          j        ¢¬¦  «         d S )Nz,unsupported method call on `typing` variableztyping variable: z, method name: ú, args: ú
, kwargs: z.`torch.compile` does not support method call `z` on `typing` variable fú.zAvoid calling the z method on rV   )r   r`   r   rú   ©r@   rR   rS   rz   r9   s        rB   r—   zTypingVariable.call_methodY  s‘   € õ 	ØBØi¨¬
ÐiÐiÀ4ÐiÐiÐQUÐiÐiÐagÐiÐiØtÈÐtÐtÐgkÔgqÐtÐtÐtàC TÐCÐC°d´jÐCÐCÐCðå"Ô.ðð		
ñ 	
ô 	
ð 	
ð 	
ð 	
rC   FÚreversec                 óP  — |                      ¦   «         st          j        |t          ¦  «        S |                     ¦   «         }t          | j        ¦  «                             | j        |¦  «        }|t          u rt          j        |t          ¦  «        S t          j        ||¦  «        S rE   )r  r,   r�   r6  r\   r_   r`   Ú__or__)r@   rR   rû   r<  Ú	other_valr‡  s         rB   Ú
nb_or_implzTypingVariable.nb_or_implj  sŽ   € ð ×'Ò'Ñ)Ô)ð 	=Ý"Ô(¨­^Ñ<Ô<Ð<Ø×,Ò,Ñ.Ô.ˆ	å�d”jÑ!Ô!×(Ò(¨¬°YÑ?Ô?ˆØ•^Ð#Ð#Ý"Ô(¨­^Ñ<Ô<Ð<ÝÔ$ R¨Ñ0Ô0Ð0rC   c           
      óÊ  — ddl m}m} |t          v r7t	          j        | |t          t          | j        |¦  «        ¦  «        ¬¦  «        S |j	        j
                             | |¦  «        r |j	        j
                             | |¦  «        S t          | j        |¦  «        }| j        r*t          | j        |¦  «        }  |||¦  «        |¦  «        S |                     ||¦  «        S )Nr)   )ÚSourcelessBuilderÚVariableBuilderrq   )rº  rB  rC  r$   r   ru   r_   rd   r`   r¢   rŒ   r(  r)  r]   r   rx   )r@   rR   rS   rB  rC  r`   rÀ   s          rB   ry   zTypingVariable.var_getattr{  s÷   € ð 	@Ð?Ð?Ð?Ð?Ð?Ð?Ð?àÕ)Ð)Ð)ÝÔ,Ø�d¥D­°´¸TÑ)BÔ)BÑ$CÔ$Cðñ ô ð ð Œ9Ô!×>Ò>¸tÀTÑJÔJð 	@Ø”9Ô)×3Ò3°D¸$Ñ?Ô?Ð?å˜œ
 DÑ)Ô)ˆØŒ;ð 	7Ý$ T¤[°$Ñ7Ô7ˆKØ3�?�? 2 {Ñ3Ô3°EÑ:Ô:Ð:à$×+Ò+¨B°Ñ6Ô6Ð6rC   c                 ó   — | j         S rE   r  rG   s    rB   r\   z!TypingVariable.as_python_constant�  r   rC   c                 ó.   — t          | j        ¦  «        dfS ©NF©r  r`   r:  s     rB   r  zTypingVariable.hash_impl’  ó   € Ý�D”JÑÔ Ð&Ð&rC   c                 ó   — | j         S rE   r  rG   s    rB   r"  z+TypingVariable.get_real_python_backed_value•  r   rC   rI   r3   c                 óâ   •— t          | j        t          j        ¦  «        s!t	          ¦   «                              |¦  «        S |                     |                     | j        ¦  «        ¦  «         d S rE   )r�   r`   r™   ÚGenericAliasr>   rQ   Úappend_outputÚcreate_load_constrP   s     €rB   rQ   zTypingVariable.reconstruct˜  s^   ø€ Ý˜$œ*¥eÔ&8Ñ9Ô9ð 	0Ý‘7”7×&Ò& wÑ/Ô/Ð/ð0 	×Ò˜g×7Ò7¸¼
ÑCÔCÑDÔDÐDÐDÐDrC   c                 ó€   — t          |t          ¦  «        o)|                      ¦   «         |                     ¦   «         k    S rE   ©r�   r,   r\   ©r@   rû   s     rB   Úis_python_equalzTypingVariable.is_python_equal´  ó:   € å�u�oÑ.Ô.ð HØ×'Ò'Ñ)Ô)¨U×-EÒ-EÑ-GÔ-GÒGð	
rC   )FrÉ   )r   r�   rÊ   r   r?   r,   r  r¥   r  rÎ   rÏ   r—   r  r@  ry   r\   rÍ   r  r  r"  rQ   r‡   rQ  rÐ   rÑ   s   @rB   r,  r,  8  s   ø€ € € € € ð˜cð ¨Sð °Tð ð ð ð ð ð ð*à'ð*ð ð*ð 
ð	*ð *ð *ð *ð 
7Ø-ð
7Ø6Gð
7ØMPð
7à	ð
7ð 
7ð 
7ð 
7ð
à'ð
ð ð
ð �?Ô#ð	
ð
 �S˜/Ð)Ô*ð
ð 
ð
ð 
ð 
ð 
ð* ð	1ð 1à'ð1ð ð1ð ð	1ð
 
ð1ð 1ð 1ð 1ð"7Ø-ð7Ø58ð7à	ð7ð 7ð 7ð 7ð( Cð ð ð ð ð'˜Cð ' E¨#¨t¨)Ô$4ð 'ð 'ð 'ð 'ð¨cð ð ð ð ðEð Eð Eð Eð Eð Eð8
 Vð 
°ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
rC   r,  )Úmaxsizec                  óÖ   — ddl m}  i }|                      ¦   «         D ]K\  }}|j                             ¦   «         D ],\  }}t	          |¦  «        rt          ||d¦  «        x}r|||<   Œ-ŒL|S )zd
    This generates a mapping from numpy modules to their torch._numpy
    modules equivalents.
    r   )ÚNP_TO_TNP_MODULEN)ÚutilsrU  r¯   rg   Úcallablerd   )rU  Únp_fn_to_tnp_fnÚnp_modÚtnp_modrU  Útnp_fnÚnp_fns          rB   Úget_np_to_tnp_mapr]  »  sŸ   € ð )Ð(Ð(Ð(Ð(Ð(à€Oà+×1Ò1Ñ3Ô3ð 4ð 4‰ˆ�Ø&Ô/×5Ò5Ñ7Ô7ð 	4ð 	4‰OˆG�VÝ˜ÑÔð 4õ $ F¨G°TÑ:Ô:Ð:�5ð 4Ø-3�O EÑ*øð	4ð ÐrC   c                  óZ   — t          ¦   «         } d„ |                      ¦   «         D ¦   «         S )z
    This is just the reverse mapping of get_np_to_tnp_map() - mapping from
    torch._numpy modules to numpy equivalents.
    c                 ó   — i | ]\  }}||“Œ	S r=   r=   ©r5  ÚkÚvs      rB   ú
<dictcomp>z%get_tnp_to_np_map.<locals>.<dictcomp>×  s   € Ð'Ð'Ð'‘T�Q˜ˆAˆqÐ'Ð'Ð'rC   )r]  r¯   )Úms    rB   Úget_tnp_to_np_mapre  Ð  s+   € õ 	ÑÔ€AØ'Ð'˜QŸWšW™YœYÐ'Ñ'Ô'Ð'rC   c            
       ó8  ‡ — e Zd ZdZej        fZdededdfˆ fd„Zdefd„Z	e
dej        defd	„¦   «         Ze
dej        defd
„¦   «         Zdddee         deeef         defd„Zdddedee         deeef         def
d„Zdefd„Zdefˆ fd„Zdedefd„Zˆ xZS )ÚNumpyVariablezz
    Wrapper around `numpy.*`. Currently, is able to trace a small subset of numpy functions as well as numpy dtypes.
    r`   r9   r:   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S r<   r.  r  s      €rB   r?   zNumpyVariable.__init__á  r/  rC   c                 ó   — | j         S rE   r  rG   s    rB   r"  z*NumpyVariable.get_real_python_backed_valueå  r   rC   rX  c                 ó  — |j                              d¦  «        }t          |¦  «        dk     rt          d|› �¦  «        ‚|d d…         ddgk    r-t          dd                     |d d…         ¦  «        › �¦  «        ‚|| j        v S ©Nr:  r   z0Expected module path with at least 2 parts, got r‰   Ú_numpyz"Expected torch._numpy module, got )r�   Úsplitrf   r[   r7  Úconstant_fold_functions©rã   rX  Úmods      rB   Úcan_constant_fold_throughz'NumpyVariable.can_constant_fold_throughè  sž   € àŒm×!Ò! #Ñ&Ô&ˆÝˆs‰8Œ8�aŠ<ˆ<Ý ØHÀ3ÐHÐHñô ð ð ˆr�ˆrŒ7�w Ð)Ò)Ð)Ý ØH°S·X²X¸cÀ"À1À"¼gÑ5FÔ5FÐHÐHñô ð ð �SÔ0Ð0Ð0rC   c                 ó.  — |j                              d¦  «        }t          |¦  «        dk     rt          d|› �¦  «        ‚|d d…         ddgk    r-t          dd                     |d d…         ¦  «        › �¦  «        ‚t
                               |¦  «        S rk  )r�   rm  rf   r[   r7  Únp_constant_collections_maprh   ro  s      rB   Ú get_constant_collection_for_funcz.NumpyVariable.get_constant_collection_for_funcõ  s¤   € àŒm×!Ò! #Ñ&Ô&ˆÝˆs‰8Œ8�aŠ<ˆ<Ý ØHÀ3ÐHÐHñô ð ð ˆr�ˆrŒ7�w Ð)Ò)Ð)Ý ØH°S·X²X¸cÀ"À1À"¼gÑ5FÔ5FÐHÐHñô ð õ +×.Ò.¨rÑ2Ô2Ð2rC   rR   r4   rz   c                 ó  — t           j        s+t          dd| j        › d|› d|› �d| j        › d�dg¬¦  «         d	d
lm} ddlm} t          ¦   «          	                    | j        ¦  «        }|€:t          dd| j        › d|› d|› d|› d�	d| j        › d�g t          j        ¢¬¦  «         |€t          d| j        › �¦  «        ‚|                      |¦  «        x}	 �ˆ	  | | j        d„ |D ¦   «         i d„ |                     ¦   «         D ¦   «         ¤Ž¦  «        S # t          $ r> t          dd| j        › d|› d|› d|› d�	d| j        › d�g t          j        ¢¬¦  «         Y d S w xY w|j        dk    rEt           j        r9t          dd| j        › d|› d|› d|› d�	d| j        › d�dd| j        › d�g¬¦  «         |                     |j        ||¦  «        \  }}|                      |¦  «        rct-          ||¦  «        rSt/          j        | |                      ¦   «         d„ |D ¦   «         i d „ |                     ¦   «         D ¦   «         ¤Ž¦  «        S  |j        j        d! ||¦  «        gt9          ||¦  «        ¢R Ž }|                     ||¦  «        S )"Nz?attempted to trace numpy function with config.trace_numpy=Falseúnumpy function: r8  r9  z"Attempted to trace numpy function z; while `torch._dynamo.config.trace_numpy` was set to False.zHSet `torch._dynamo.config.trace_numpy` to True to trace numpy functions.rV   r   )Únumpy_to_tensor_wrapperr)   )ÚNumpyNdarrayVariablez8attempted to trace numpy function unsupported by PyTorchz  (corresponding torch function: r'  z Can't find numpy numpy function z in torch._numpy.z+Could not find torch._numpy equivalent for c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r=   ©r\   rÒ  s     rB   ú
<listcomp>z/NumpyVariable.call_function.<locals>.<listcomp>,  ó$   € Ð?Ð?Ð?°Q˜!×.Ò.Ñ0Ô0Ð?Ð?Ð?rC   c                 ó>   — i | ]\  }}||                      ¦   «         “ŒS r=   rz  r`  s      rB   rc  z/NumpyVariable.call_function.<locals>.<dictcomp>-  ó*   € ÐPÐPÐP¹¸¸A˜1˜a×2Ò2Ñ4Ô4ÐPÐPÐPrC   zTnumpy function that produces a const collection type encountered non-const argumentsznumpy function zs that produces a const collection type (e.g. np.dtype, np.iinfo/np.finfo) received arguments that are not constant.ztorch._numpy.randomzXattempted to trace torch._numpy.random function with config.use_numpy_random_stream=TruezAttempted to trace zD when `torch._dynamo.config.use_numpy_random_stream` is set to True.z<Set `torch._dynamo.config.use_numpy_random_stream` to False.zAvoid calling r:  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r=   rz  rÒ  s     rB   r{  z/NumpyVariable.call_function.<locals>.<listcomp>T  r|  rC   c                 ó>   — i | ]\  }}||                      ¦   «         “ŒS r=   rz  r`  s      rB   rc  z/NumpyVariable.call_function.<locals>.<dictcomp>U  r~  rC   r�   )r   Útrace_numpyr   r`   rV  rw  Útensorrx  r]  rh   r   rú   r[   rt  r¯   r*   Ú
USER_ERRORr�   Úuse_numpy_random_streamÚ
patch_argsr   rq  r#   r,   r�   r\   r¢   r¼  r'   rx   )	r@   rR   rz   r9   rw  rx  rÁ   Úcollection_variable_typr¸  s	            rB   r�   zNumpyVariable.call_function  s)  € õ Ô!ð 		ÝØYØW¨4¬:ÐWÐW¸tÐWÐWÈvÐWÐWðMÀÄð Mð Mð Mð _ððñ ô ð ð 	4Ð3Ð3Ð3Ð3Ð3Ø0Ð0Ð0Ð0Ð0Ð0å Ñ"Ô"×&Ò& t¤zÑ2Ô2ˆØˆ<ÝØRØ~¨4¬:Ð~Ð~¸tÐ~Ð~ÈvÐ~Ð~Ðw{Ð~Ð~Ð~Ø\¸t¼zÐ\Ð\Ð\ðÝ&Ô2ðð	ñ ô ð ð ˆ<Ý ØJ¸d¼jÐJÐJñô ð ð (,×'LÒ'LÈTÑ'RÔ'RÐRÐ#ØððØ.Ð.Ø�D”JØ?Ð?¸$Ð?Ñ?Ô?ðàPÐPÀÇÂÁÄÐPÑPÔPðð ñô ð øõ 7ð 
ð 
ð 
ÝØrð C¨t¬zð  Cð  CÀ4ð  Cð  CÐSYð  Cð  CÐ{ð  Cð  Cð  Cð!@°$´*ð !@ð !@ð !@ðÝ*Ô5ðð	ñ 	ô 	ð 	ð 	ð 	ð 	ð
øøøð ”Ð#8Ò8Ð8ÝÔ2ð 9õ Øvð C¨t¬zð  Cð  CÀ4ð  Cð  CÐSYð  Cð  CÐ{ð  Cð  Cð  Cð!&°d´jð !&ð !&ð !&ð WØ6¨¬Ð6Ð6Ð6ðð	ñ 	ô 	ð 	ð 0×:Ò:¸4¼=È$ÐPVÑWÔW‰LˆD�&à×-Ò-¨dÑ3Ô3ð 
Ý-¨d°FÑ;Ô;ð
õ 'Ô,ØØ-�D×+Ò+Ñ-Ô-Ø?Ð?¸$Ð?Ñ?Ô?ðàPÐPÀÇÂÁÄÐPÑPÔPðð ñô ð ð +�B”IÔ*ØØ'Ð'¨Ñ-Ô-ðõ # 4¨Ñ0Ô0ðð ð ˆEð
 (×.Ò.¨r°5Ñ9Ô9Ð9s   Ã;D ÄAEÅErS   c           	      ó`   — t          dd| j        › d|› d|› �dg t          j        ¢¬¦  «         d S )Nz/attempted to trace numpy.* function as a methodrv  r8  r9  z6Tracing numpy.* functions as methods is not supported.rV   )r   r`   r   r‘   r;  s        rB   r—   zNumpyVariable.call_methoda  sX   € õ 	ØEØS t¤zÐSÐS¸4ÐSÐSÈ6ÐSÐSØPðÝ"Ô,ðð		
ñ 	
ô 	
ð 	
ð 	
ð 	
rC   c                 ó   — | j         S rE   r  rG   s    rB   r\   z NumpyVariable.as_python_constantq  r   rC   c                 óô   •— t           j        rLt          | j        t          j        ¦  «        r| j        S t          | j        t          ¦  «        r| j        j        S t          ¦   «          	                    ¦   «         S rE   )
r   r�  r�   r`   ÚenumÚEnumMetar_   r   r>   rÛ  r÷  s    €rB   rÛ  zNumpyVariable.as_proxyt  sc   ø€ ÝÔð 		+å˜$œ*¥d¤mÑ4Ô4ð "à”zÐ!Ý˜$œ*¥dÑ+Ô+ð +ð ”zÔ*Ð*å‰wŒw×ÒÑ!Ô!Ð!rC   rû   c                 ó€   — t          |t          ¦  «        o)|                      ¦   «         |                     ¦   «         k    S rE   rO  rP  s     rB   rQ  zNumpyVariable.is_python_equal‚  rR  rC   )r   r�   rÊ   rA  ÚtnpÚ
issubdtypern  r   r?   r"  r›   r™   rš   r  rq  rt  rÎ   r,   rÏ   r¥   r�   r—   r   r\   rÛ  r‡   rQ  rÐ   rÑ   s   @rB   rg  rg  Ú  sî  ø€ € € € € ðð ð  #œ~Ð/Ðð˜cð ¨Sð °Tð ð ð ð ð ð ð¨cð ð ð ð ð ð
1¨5Ô+=ð 
1À$ð 
1ð 
1ð 
1ñ „[ð
1ð ð
3°%Ô2Dð 
3Èð 
3ð 
3ð 
3ñ „[ð
3ð]:à'ð]:ð �?Ô#ð]:ð �S˜/Ð)Ô*ð	]:ð
 
ð]:ð ]:ð ]:ð ]:ð~
à'ð
ð ð
ð �?Ô#ð	
ð
 �S˜/Ð)Ô*ð
ð 
ð
ð 
ð 
ð 
ð Ð$7ð ð ð ð ð"˜#ð "ð "ð "ð "ð "ð "ð
 Vð 
°ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
rC   rg  c                   óL   ‡ — e Zd Zdeddfˆ fd„Zdefd„Zd
d„Zdddefd	„Zˆ xZ	S )ÚNullVariabler9   r:   Nc                 ó:   •—  t          ¦   «         j        di |¤Ž d S r<   re  rf  s     €rB   r?   zNullVariable.__init__‹  rg  rC   c                 ó   — dS )Nr�  r=   rG   s    rB   r=  zNullVariable.__repr__Ž  s   € Øˆ~rC   rI   r3   c                 ó¨   — t           j        dk     rt          dddg t          j        ¢¬¦  «         |                     t          d¦  «        ¦  «         d S )N)r†   é   z0cannot reconstruct NullVariable in Python < 3.11rU   zdAttempted to generate PUSH_NULL instruction in Python < 3.11; where this instruction does not exist.rV   Ú	PUSH_NULL)ÚsysÚversion_infor   r   r¤   rL  r   rJ  s     rB   rQ   zNullVariable.reconstruct‘  sg   € ÝÔ˜gÒ%Ð%ÝØJØð9ðÝ&Ô1ððñ ô ð ð 	×ÒÕ0°Ñ=Ô=Ñ>Ô>Ð>Ð>Ð>rC   c                 ó   — dS )NÚNoner=   rJ  s     rB   Úreconstruct_pycodezNullVariable.reconstruct_pycodež  s   € ØˆvrC   rÉ   )
r   r�   rÊ   r   r?   r¥   r=  rQ   rš  rÐ   rÑ   s   @rB   r�  r�  Š  sœ   ø€ € € € € ð# ð #¨ð #ð #ð #ð #ð #ð #ð˜#ð ð ð ð ð?ð ?ð ?ð ?ð¨+ð ¸#ð ð ð ð ð ð ð ð rC   r�  c                   ó   — e Zd ZdZdS )r§   z"Marker used to implement delattr()Nr@  r=   rC   rB   r§   r§   ¢  s   € € € € € Ø,Ð,Ð,Ð,rC   r§   c            
       óø   ‡ — e Zd ZdZdhej        £Zdefd„Zede	de
e         dee	ef         defd„¦   «         Zde	de
e         dee	ef         dedd	f
ˆ fd
„Zde	fd„Zededefd„¦   «         Zde	fd„Zdd„Zˆ xZS )ÚStringFormatVariablez[
    Represents a call to str.format(), we delay calling format until after the graph.
    Úformat_stringr:   c                 ó   — t           S rE   )r¥   rG   s    rB   rH   z StringFormatVariable.python_type­  s   € Ýˆ
rC   Úsym_argsÚ
sym_kwargsc           	      ól  — t          d„ t          j        ||                     ¦   «         ¦  «        D ¦   «         ¦  «        rPt          j                              |j        d„ |D ¦   «         i d„ |                     ¦   «         D ¦   «         ¤Ž¦  «        S  | |t          |¦  «        t          |¦  «        ¦  «        S )Nc              3   ó>   K  — | ]}|                      ¦   «         V — Œd S rE   )r  rÒ  s     rB   r6  z.StringFormatVariable.create.<locals>.<genexpr>·  sB   è è € ð 
ð 
àð × Ò Ñ"Ô"ð
ð 
ð 
ð 
ð 
ð 
rC   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r=   rz  )r5  rb  s     rB   r{  z/StringFormatVariable.create.<locals>.<listcomp>½  s$   € Ð?Ð?Ð?°�a×*Ò*Ñ,Ô,Ð?Ð?Ð?rC   c                 ó>   — i | ]\  }}||                      ¦   «         “ŒS r=   rz  r`  s      rB   rc  z/StringFormatVariable.create.<locals>.<dictcomp>¾  s*   € ÐPÐPÐP±T°Q¸�q˜!×.Ò.Ñ0Ô0ÐPÐPÐPrC   )ÚallÚ	itertoolsÚchainÚvaluesr   r-   rx   Úformatr¯   rÎ   rÏ   )rã   rž  r   r¡  s       rB   rx   zStringFormatVariable.create°  sÐ   € õ ð 
ð 
å”_ X¨z×/@Ò/@Ñ/BÔ/BÑCÔCð
ñ 
ô 
ñ 
ô 
ð 		õ Ô-×4Ò4Ø$�Ô$Ø?Ð?°hÐ?Ñ?Ô?ðàPÐP¸Z×=MÒ=MÑ=OÔ=OÐPÑPÔPðð ñô ð ð ˆs�=¥$ x¡.¤.µ$°zÑ2BÔ2BÑCÔCÐCrC   r9   Nc                 óÌ   •—  t          ¦   «         j        di |¤Ž t          |t          ¦  «        st	          dt          |¦  «        › �¦  «        ‚|| _        || _        || _        d S )Nz!format_string must be a str, got r=   )	r>   r?   r�   r¥   r[   r_   rž  r   r¡  )r@   rž  r   r¡  r9   rA   s        €rB   r?   zStringFormatVariable.__init__Ã  su   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ý˜-­Ñ-Ô-ð 	Ý ØIµD¸Ñ4GÔ4GÐIÐIñô ð ð +ˆÔØ ˆŒØ$ˆŒˆˆrC   c                 óP   — | j         j        › d| j        ›d| j        ›d| j        ›d�S rù  )rA   r   rž  r   r¡  rG   s    rB   r=  zStringFormatVariable.__repr__Ó  s7   € Ø”.Ô)ÐkÐk¨DÔ,>ÐkÐkÀDÄMÐkÐkÐW[ÔWfÐkÐkÐkÐkrC   r)  c                 ót   — 	 |                       ¦   «         S # t          $ r |                      ¦   «         cY S w xY wrE   )r\   r,  r-  r.  s    rB   r/  z&StringFormatVariable._debug_format_argÖ  sJ   € ð	$Ø×)Ò)Ñ+Ô+Ð+øÝð 	$ð 	$ð 	$Ø—>’>Ñ#Ô#Ð#Ð#Ð#ð	$øøøs   ‚ –7¶7c                 óð   ‡ — 	  ‰ j         j        ˆ fd„‰ j        D ¦   «         i ˆ fd„‰ j                             ¦   «         D ¦   «         ¤Ž}n# t
          $ r t          ‰ ¦  «        cY S w xY wt          |¦  «        S )Nc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r=   r3  r4  s     €rB   r{  z3StringFormatVariable.debug_repr.<locals>.<listcomp>à  s'   ø€ ÐGÐGÐG°#�$×(Ò(¨Ñ-Ô-ÐGÐGÐGrC   c                 óB   •— i | ]\  }}|‰                      |¦  «        “ŒS r=   r3  )r5  r  r`   r@   s      €rB   rc  z3StringFormatVariable.debug_repr.<locals>.<dictcomp>á  s=   ø€ ð ð ð á"˜˜Uð ˜×/Ò/°Ñ6Ô6ðð ð rC   )rž  rª  r   r¡  r¯   r,  r+  )r@   Úrendereds   ` rB   r-  zStringFormatVariable.debug_reprÝ  s®   ø€ ð		Ø0�tÔ)Ô0ØGÐGÐGÐG¸¼ÐGÑGÔGððð ð ð à&*¤o×&;Ò&;Ñ&=Ô&=ðñ ô ðð ˆHˆHøõ ð 	ð 	ð 	Ý˜‘:”:ÐÐÐð	øøøå�H‰~Œ~Ðs   ƒAA
 Á
A&Á%A&rI   r3   c                 ód  ‡ ‡— ‰                      ˆˆ fd„d¬¦  «          ‰t          j        t          ‰ j        ¦  «        ¦  «        ¦  «         d„ ‰ j                             ¦   «         D ¦   «         } ‰t          j        |¦  «        ¦  «         ‰                     t          dd¦  «        ¦  «         d S )Nc                  óˆ   •— ‰                       ‰                      ‰j        ¦  «        ‰                      d¦  «        g¦  «        S )Nrª  )rO   rM  rž  Úcreate_load_attrr  s   €€rB   rM   z2StringFormatVariable.reconstruct.<locals>.<lambda>ì  sA   ø€ �G×)Ò)à×-Ò-¨dÔ.@ÑAÔAØ×,Ò,¨XÑ6Ô6ðñô € rC   T)Úcall_function_exc                 óT   — i | ]%\  }}t           j                             |¦  «        |“Œ&S r=   ©r   r-   rx   r`  s      rB   rc  z4StringFormatVariable.reconstruct.<locals>.<dictcomp>õ  s<   € ð 
ð 
ð 
Ù8<¸¸1�IÔ&×-Ò-¨aÑ0Ô0°!ð
ð 
ð 
rC   F)
rN   r   r   rÎ   r   r¡  r¯   ÚConstDictVariablerO   r   )r@   rI   r9   s   `` rB   rQ   z StringFormatVariable.reconstructê  sÔ   øø€ Ø×Òðð ð ð ð ð "ð 	ñ 	
ô 	
ð 	
ð 	ˆ•	Ô'­¨T¬]Ñ(;Ô(;Ñ<Ô<Ñ=Ô=Ð=ð
ð 
Ø@DÄ×@UÒ@UÑ@WÔ@Wð
ñ 
ô 
ˆð 	ˆ•	Ô+¨FÑ3Ô3Ñ4Ô4Ð4Ø×ÒÕ5°d¸EÑBÔBÑCÔCÐCÐCÐCrC   rÉ   )r   r�   rÊ   rA  r,   rÌ   r_   rH   r›   r¥   rÎ   rÏ   rx   r   r?   r=  r˜   r‡   r/  r-  rQ   rÐ   rÑ   s   @rB   r�  r�  ¦  s•  ø€ € € € € ðð ð &ÐG¨Ô(FÐG€Nð˜Tð ð ð ð ð ðDàðDð �Ô'ðDð ˜˜oÐ-Ô.ð	Dð
 
ðDð Dð Dñ „[ðDð$%àð%ð �Ô'ð%ð ˜˜oÐ-Ô.ð	%ð
 ð%ð 
ð%ð %ð %ð %ð %ð %ð l˜#ð lð lð lð lð ð$˜ð $°6ð $ð $ð $ñ „\ð$ð˜Cð ð ð ð ðDð Dð Dð Dð Dð Dð Dð DrC   r�  c                   óT   ‡ — e Zd ZeZdededdfˆ fd„Zdefd„Zdee         fd„Z	ˆ xZ
S )ÚObjectVariabler`   r9   r:   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S r<   r.  r  s      €rB   r?   zObjectVariable.__init__  r/  rC   c                 ó   — | j         S rE   r  rG   s    rB   r"  z+ObjectVariable.get_real_python_backed_value  r   rC   c                 ó   — t           S rE   )r‡   rG   s    rB   rH   zObjectVariable.python_type  s   € ÝˆrC   )r   r�   rÊ   r‡   rË   r   r?   r"  r_   rH   rÐ   rÑ   s   @rB   rº  rº  ü  s‘   ø€ € € € € à€Mð˜fð °ð ¸ð ð ð ð ð ð ð¨fð ð ð ð ð˜T &œ\ð ð ð ð ð ð ð ð rC   rº  c            	       ó  ‡ — e Zd ZdZdededdfˆ fd„Zdefd„Zedede	e
j        e
j        z           fd	„¦   «         Zd
ddee         deeef         defd„Zdd„Zededee         deeef         defd„¦   «         Zˆ xZS )ÚDebuggingVariablez†
    Represents a call to a debugging function like print(), or something
    registered to config.reorderable_logging_functions.
    r`   r9   r:   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S r<   r.  r  s      €rB   r?   zDebuggingVariable.__init__  r/  rC   c                 ó*   — t          | j        ¦  «        S rE   ©r_   r`   rG   s    rB   rH   zDebuggingVariable.python_type  ó   € Ý�D”JÑÔÐrC   rå   c                 óœ   — t          | ¦  «        o=t          | t          j        t          j        f¦  «        o| t
          j        j        j        v S rE   )	rW  r�   r™   rš   r   r‰   r¯  r   Úreorderable_logging_functionsrè   s    rB   Úis_reorderable_logging_functionz1DebuggingVariable.is_reorderable_logging_function  sF   € õ
 �S‰MŒMð JÝ˜3¥Ô!3µUÔ5NÐ OÑPÔPðJà•u”}Ô+ÔIÐIð	
rC   rR   r4   rz   c           	      ó@  — |j         rt          j        d ¦  «        S |                      | j        ||¦  «        s+t          dd| j        › d|› d|› �dd| j        › d�g¬¦  «         |j                             | t          |¦  «        f¦  «         t          j        d ¦  «        S )	NzJattempted to reorder a debugging function that can't actually be reorderedzfn: r8  r9  zl`torch.compile` can only reorder functions where the arguments are Tensors, constants, or string formatters.z#Avoid calling the logging function z" with args that are not supported.rV   )	Úexportr-   rx   Úcan_reorder_logsr`   r   Údebug_localsrƒ  rÎ   rµ  s       rB   r�   zDebuggingVariable.call_function#  sÄ   € ð Œ9ð 	1å#Ô*¨4Ñ0Ô0Ð0à×$Ò$ T¤Z°°vÑ>Ô>ð 		ÝØdØK˜tœzÐKÐK°4ÐKÐKÀ6ÐKÐKð@ð i¸$¼*ÐhÐhÐhððñ ô ð ð 	Œ×Ò ¥d¨4¡j¤jÐ1Ñ2Ô2Ð2ÝÔ& tÑ,Ô,Ð,rC   rI   r3   c                 ób   — | j         €t          d¦  «        ‚| j                              |¦  «        S )Nz7DebugLocalVariable requires a source for reconstruction)r]   r[   rQ   rJ  s     rB   rQ   zDebuggingVariable.reconstruct;  s7   € ØŒ;ÐÝ ØIñô ð ð Œ{×&Ò& wÑ/Ô/Ð/rC   rX  c                 óž   — t           j        t           j        t          f}t	          j        ||g¦  «        }|D ]}t          ||¦  «        s dS ŒdS )zm
        Run some additional checks for what sort of function calls can we
        actually reorder.
        FT)r   ÚTensorVariabler-   r�  ÚpytreeÚtree_leavesr�   )rX  rz   r9   Úallowed_input_typesÚ	flat_argsr)  s         rB   rÉ  z"DebuggingVariable.can_reorder_logsB  sf   € õ Ô$ÝÔ&Ý ð
Ðõ Ô&¨¨f ~Ñ6Ô6ˆ	Øð 	ð 	ˆCÝ˜cÐ#6Ñ7Ô7ð Ø�u�uðð ˆtrC   rÉ   )r   r�   rÊ   rA  r   r?   r_   rH   r˜   r	   r™   rš   r   rÆ  rÎ   r,   rÏ   r¥   r�   rQ   r   r  rÉ  rÐ   rÑ   s   @rB   r¿  r¿    s]  ø€ € € € € ðð ð
˜cð ¨Sð °Tð ð ð ð ð ð ð ˜Tð  ð  ð  ð  ð ð
Øð
à	�5Ô%¨Ô(AÑAÔ	Bð
ð 
ð 
ñ „\ð
ð-à'ð-ð �?Ô#ð-ð �S˜/Ð)Ô*ð	-ð
 
ð-ð -ð -ð -ð00ð 0ð 0ð 0ð ð˜Sð ¨°¬ð ¸tÀCÈÀH¼~ð ÐRVð ð ð ñ „\ðð ð ð ð rC   r¿  c                   ó|   ‡ — e Zd ZdZdededdfˆ fd„Zdefd„Zdefd„Zd	d
de	e
         deee
f         de
fd„Zˆ xZS )ÚIgnoredFunctionVariablezL
    Represents a call to an arbitrary function that should be ignored.
    r`   r9   r:   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S r<   r.  r  s      €rB   r?   z IgnoredFunctionVariable.__init__\  r/  rC   c                 ó*   — t          | j        ¦  «        S rE   rÂ  rG   s    rB   rH   z#IgnoredFunctionVariable.python_type`  rÃ  rC   c                 ó   — | j         S rE   r  rG   s    rB   r"  z4IgnoredFunctionVariable.get_real_python_backed_valuec  r   rC   rR   r4   rz   c                 ó@   — t           j                             d ¦  «        S rE   r·  rµ  s       rB   r�   z%IgnoredFunctionVariable.call_functionf  s   € õ Ô)×0Ò0°Ñ6Ô6Ð6rC   )r   r�   rÊ   rA  r   r?   r_   rH   r"  rÎ   r,   rÏ   r¥   r�   rÐ   rÑ   s   @rB   rÓ  rÓ  W  sÛ   ø€ € € € € ðð ð˜cð ¨Sð °Tð ð ð ð ð ð ð ˜Tð  ð  ð  ð  ð¨cð ð ð ð ð7à'ð7ð �?Ô#ð7ð �S˜/Ð)Ô*ð	7ð
 
ð7ð 7ð 7ð 7ð 7ð 7ð 7ð 7rC   rÓ  c            
       ó”   ‡ — e Zd ZdZdej        deddfˆ fd„Zdefd„Z	dej        fd„Z
d	d
dedee         deeef         def
d„Zˆ xZS )ÚLoggingLoggerVariablez:
    Represents a call to any logging.Logger methods.
    r`   r9   r:   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S r<   r.  r  s      €rB   r?   zLoggingLoggerVariable.__init__t  r/  rC   c                 ó*   — t          | j        ¦  «        S rE   rÂ  rG   s    rB   rH   z!LoggingLoggerVariable.python_typex  rÃ  rC   c                 ó   — | j         S rE   r  rG   s    rB   r"  z2LoggingLoggerVariable.get_real_python_backed_value{  r   rC   rR   r4   rS   rz   c                 ód  — |j         rt          j                             d ¦  «        S t	          | j        |d ¦  «        }t	          |dd ¦  «        }t          j        j        j	        }||v s||v rt          j                             d ¦  «        S t          dd| j        › d|› d|› d|› �ddg¬	¦  «         d S )
Nr„   z8logging.Logger method not supported for non-export caseszmethod: r:  r8  r9  z>logging.Logger methods are not supported for non-export cases.zJAdd the logging method to `torch._dynamo.config.ignore_logging_functions`.rV   )rÈ  r   r-   rx   rd   r`   r‰   r¯  r   Úignore_logging_functionsr   )r@   rR   rS   rz   r9   ÚmethodrÕ  Ú
ignore_sets           rB   r—   z!LoggingLoggerVariable.call_method~  sØ   € ð Œ9ð 	;åÔ-×4Ò4°TÑ:Ô:Ð:å˜œ T¨4Ñ0Ô0ˆÝ˜6 :¨tÑ4Ô4ˆõ ”]Ô)ÔBˆ
à�ZÐÐ 8¨zÐ#9Ð#9ÝÔ-×4Ò4°TÑ:Ô:Ð:åØNØR˜tœzÐRÐR¨DÐRÐR¸$ÐRÐRÈ&ÐRÐRØXà\ðð		
ñ 	
ô 	
ð 	
ð 	
ð 	
rC   )r   r�   rÊ   rA  ÚloggingÚLoggerr   r?   r_   rH   r"  r¥   rÎ   r,   rÏ   r—   rÐ   rÑ   s   @rB   rÙ  rÙ  o  sé   ø€ € € € € ðð ð˜gœnð ¸ð Àð ð ð ð ð ð ð ˜Tð  ð  ð  ð  ð¨g¬nð ð ð ð ð
à'ð
ð ð
ð �?Ô#ð	
ð
 �S˜/Ð)Ô*ð
ð 
ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
rC   rÙ  c            
       ó>  ‡ — e Zd ZdZ	 ddlmZmZm	Z
 n%# e$ r  eddi ¦  «        Z eddi ¦  «        ZY nw xY wdededd	fˆ fd
„Zedefd„¦   «         Zdefd„Zdddeeef         fd„Zdddddeddfd„Zdddedee         deeef         def
d„Zdddedefd„Zˆ xZS )ÚConstantLikeVariablez8self.value is a compile-time constant, but not a literalr   )ÚdtypeÚfloatingÚgenericÚinvalid_typer=   r`   r9   r:   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S r<   r.  r  s      €rB   r?   zConstantLikeVariable.__init__«  r/  rC   c                 óp   — t          | j        ¦  «        }|j        dk    r|j        S |j        › d|j        › �S )z4Dynamically compute the prefix from the value's typerF   r:  )r_   r`   r�   rÊ   )r@   Úts     rB   Ú_error_prefixz"ConstantLikeVariable._error_prefix¯  sB   € õ �”ÑÔˆð Œ<˜:Ò%Ð%Ø”>Ð!à”,Ð1Ð1 ¤Ð1Ð1Ð1rC   c                 ó   — | j         S rE   r  rG   s    rB   r\   z'ConstantLikeVariable.as_python_constantº  r   rC   rR   r4   c                 ó.   — t          | j        ¦  «        dfS rF  rG  r:  s     rB   r  zConstantLikeVariable.hash_impl½  rH  rC   rû   r,   rü   c                 ó*   — ddl m}  || |||¦  «        S )Nr)   )Ú python_constant_richcompare_impl)r  rð  )r@   rR   rû   rü   rð  s        rB   r  z%ConstantLikeVariable.richcompare_implÀ  s.   € ð 	FÐEÐEÐEÐEÐEà/Ð/°°b¸%ÀÑDÔDÐDrC   rS   rz   c                 óZ  — g i }}	 d„ |D ¦   «         }d„ |                      ¦   «         D ¦   «         }nA# t          $ r4 t          d| j        › d|› d|› d|› d�d| j        › d|› d	�d
g¬¦  «         Y nw xY w t	          | j        |¦  «        |i |¤Ž}t          j                             |¦  «        rt          j
        ||¦  «        S t          |t          j        ¦  «        rt          |¦  «        S t          d| j        › d|› d|› d|› d|› �	d| j        › d|› d|› d�g t          j        ¢¬¦  «         d S )Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r=   rz  rÒ  s     rB   r{  z4ConstantLikeVariable.call_method.<locals>.<listcomp>Ò  s$   € Ð:Ð:Ð:°�Q×)Ò)Ñ+Ô+Ð:Ð:Ð:rC   c                 ó>   — i | ]\  }}||                      ¦   «         “ŒS r=   rz  r`  s      rB   rc  z4ConstantLikeVariable.call_method.<locals>.<dictcomp>Ó  s*   € ÐLÐLÐL±T°Q¸�q˜!×.Ò.Ñ0Ô0ÐLÐLÐLrC   z0constant-like method call with non-constant argsr:  z(*z, **r'  zAttempted to call z with non-constant args.zFEnsure that the args to the method call are constant (int, str, etc.).rV   z6constant-like method call with unsupported return typez) returned z, got unsupported return value )r¯   r¡   r   rì  rd   r`   r   r-   rt   r,   r�   r�   ÚreÚMatchrä  r   rú   )r@   rR   rS   rz   r9   ÚcargsÚckwargsr‡  s           rB   r—   z ConstantLikeVariable.call_methodÇ  s¼  € ð ˜Rˆwˆð	à:Ð:°TÐ:Ñ:Ô:ˆEØLÐL¸V¿\º\¹^¼^ÐLÑLÔLˆGˆGøÝ"ð 	ð 	ð 	ÝØJØÔ-ÐKÐK°ÐKÐK¸ÐKÐKÀ&ÐKÐKÐKØd°Ô1CÐdÐdÀdÐdÐdÐdà\ðð	ñ ô ð ð ð ð	øøøð +•˜œ TÑ*Ô*¨EÐ=°WÐ=Ð=ˆåÔ%×0Ò0°Ñ8Ô8ð 	5Ý"Ô(¨¨VÑ4Ô4Ð4Ý�f�bœhÑ'Ô'ð 	0Ý'¨Ñ/Ô/Ð/åØLØÔ)ÐYÐY¨DÐYÐY°DÐYÐY¸fÐYÐYÐQWÐYÐYØp¨TÔ-?ÐpÐpÀ$ÐpÐpÐgmÐpÐpÐpðÝ"Ô.ðð		
ñ 	
ô 	
ð 	
ð 	
ð 	
s   †*1 ±;A/Á.A/c                 óÔ  — t          | j        |¦  «        }t          || j        ¦  «        rt	          |¦  «        }t          || j        ¦  «        rt          |¦  «        S t          |t          ¦  «        r$t          || j	        ¦  «        rt          |¦  «        S t          j                             |¦  «        rt          j        ||¦  «        S t!          | |t          |¦  «        ¬¦  «        S )Nrq   )rd   r`   r�   Únp_floatingÚfloatÚnp_dtypeÚNumpyDTypeVariabler_   r^   Ú
np_genericrg  r   r-   rt   r,   r�   ru   r%  s       rB   ry   z ConstantLikeVariable.var_getattrî  sÑ   € õ ˜œ TÑ*Ô*ˆÝ�f˜dÔ.Ñ/Ô/ð 	#Ý˜6‘]”]ˆFÝ�f˜dœmÑ,Ô,ð 	.Ý% fÑ-Ô-Ð-Ý�f�dÑ#Ô#ð 	)­
°6¸4¼?Ñ(KÔ(Kð 	)å  Ñ(Ô(Ð(ÝÔ%×0Ò0°Ñ8Ô8ð 	5Ý"Ô(¨¨VÑ4Ô4Ð4Ý˜t Tµ4¸±<´<Ð@Ñ@Ô@Ð@rC   )r   r�   rÊ   rA  Únumpyrå  rû  ræ  rù  rç  rý  ÚImportErrorr_   r   r?   Úpropertyr¥   rì  r\   rÍ   r  r  r  r  rÎ   r,   rÏ   r—   ry   rÐ   rÑ   s   @rB   rä  rä  œ  s  ø€ € € € € ØBÐBð
0ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
øð
 ð 0ð 0ð 0à�d˜>¨2¨rÑ2Ô2ˆà�4˜¨¨BÑ/Ô/ˆˆˆð	0øøøð˜cð ¨Sð °Tð ð ð ð ð ð ð ð2˜sð 2ð 2ð 2ñ „Xð2ð Cð ð ð ð ð'Ð7ð '¸EÀ#ÀtÀ)Ô<Lð 'ð 'ð 'ð 'ðEØ-ðEØ6GðEØMPðEà	ðEð Eð Eð Eð%
à'ð%
ð ð%
ð �?Ô#ð	%
ð
 �S˜/Ð)Ô*ð%
ð 
ð%
ð %
ð %
ð %
ðNAØ-ðAØ58ðAà	ðAð Að Að Að Að Að Að As   ‰
 ”6µ6rä  c                   ó   — e Zd Zdefd„ZdS )rü  r:   c                 ó$   — | j         j        j        S )a0  Similar to how numpy dtype descriptors (e.g. np.float32 ) are handled by NumpyVariable:

        np.dtype() objects are serialized as strings, torch._numpy wrappers will normalize to the torch dtype.
        This also handles unsupported things nicely (i.e. structured arrays and object arrays).
        )r`   r_   r   rG   s    rB   rÛ  zNumpyDTypeVariable.as_proxyÿ  s   € ð ŒzŒÔ'Ð'rC   N)r   r�   rÊ   r¥   rÛ  r=   rC   rB   rü  rü  þ  s/   € € € € € ð(˜#ð (ð (ð (ð (ð (ð (rC   rü  c                   ól   ‡ — e Zd ZdZdeddfˆ fd„Zdefd„Zddd	ee	         de
ee	f         dd
fd„Zˆ xZS )ÚRandomClassVariablezrandom.Randomr9   r:   Nc                 ó:   •—  t          ¦   «         j        di |¤Ž d S r<   re  rf  s     €rB   r?   zRandomClassVariable.__init__	  rg  rC   c                 ó   — t           S rE   rs  rG   s    rB   rH   zRandomClassVariable.python_type	  rt  rC   rR   r4   rz   ÚRandomVariablec                 óD  — t          |¦  «        dk    s|r%t          dd|› d|› �dg t          j        ¢¬¦  «         t          |¦  «        dk    rt          j                             d ¦  «        n|d         }t          |t          j         	                    ¦   «         ¬¦  «        S )	Nr)   z'random.Random() with improper argumentszargs: r9  z=random.Random() with > 1 arg or with kwargs is not supported.rV   r   )ÚseedrŽ   )
rf   r   r   rƒ  r   r-   rx   r  ÚbaseÚValueMutationNew)r@   rR   rz   r9   r	  s        rB   r�   z!RandomClassVariable.call_function	  s±   € õ ˆt‰9Œ9�qŠ=ˆ=˜Fˆ=ÝØAØ9 Ð9Ð9°Ð9Ð9Ø[ðÝ&Ô1ðð	ñ ô ð õ ;>¸d¹)¼)Àqº.¸.�yÔ)×0Ò0°Ñ6Ô6Ð6ÈdÐSTÌgˆÝØ¥Y¤^×%DÒ%DÑ%FÔ%Fð
ñ 
ô 
ð 	
rC   )r   r�   rÊ   rA  r   r?   r_   rH   rÎ   r,   rÏ   r¥   r�   rÐ   rÑ   s   @rB   r  r  	  sµ   ø€ € € € € ØÐð# ð #¨ð #ð #ð #ð #ð #ð #ð˜Tð ð ð ð ð
à'ð
ð �?Ô#ð
ð �S˜/Ð)Ô*ð	
ð
 
ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
rC   r  c            
       óî  ‡ — e Zd ZdZej        Zdhej        £Zh d£Z		 	 ddej        dz  dedz  de
ddfˆ fd	„Zdeej                 fd
„Zdej        fd„Zededefd„¦   «         Zedeeeedf         edz  f         ddfd„¦   «         Zedeeeedf         edz  f         defd„¦   «         Zededeeeedf         edz  f         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  zúrandom.Random()

    Implemented by wrapping a VariableTracker around a random.Random object.
    The supported methods for the random.Random object cannot be overridden.
    Assumes that random objects behave the same given a set seed or state.
    Úrandom>   r  ÚrandintÚuniformÚ	randrangeNÚrandr	  r9   r:   c                 ót  •—  t          ¦   «         j        di |¤Ž |�j|                      |¦  «        st          d¦  «        ‚t	          j        ¦   «         | _        | j                             |                     ¦   «         ¦  «         d S |�|                     ¦   «         nd }t	          j        |¦  «        | _        d S )Nz8Unsupported random.Random object with overridden methodsr=   )	r>   r?   Úis_supported_random_objr[   r  r   ÚsetstateÚgetstater\   )r@   r  r	  r9   rA   s       €rB   r?   zRandomVariable.__init__C	  s¶   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØÐØ×/Ò/°Ñ5Ô5ð Ý$ØNñô ð õ !œ-™/œ/ˆDŒKØŒK× Ò  §¢¡¤Ñ1Ô1Ð1Ð1Ð1à04Ð0@�4×*Ò*Ñ,Ô,Ð,ÀdˆDÝ œ-¨Ñ-Ô-ˆDŒKˆKˆKrC   c                 ó   — t           j        S rE   )r  r   rG   s    rB   rH   zRandomVariable.python_typeU	  s
   € ÝŒ}ÐrC   c                 ó   — | j         S rE   )r  rG   s    rB   r\   z!RandomVariable.as_python_constantX	  s
   € ØŒ{ÐrC   ró   c                 ó¸  — t          | ¦  «        t          j        urdS t          j        t
          j        d¦  «        D ]œ}t          | |¦  «        s dS t          | |¦  «        }t          j
        |¦  «        r5|t          t          j        |¦  «                             | ¦  «        k    r dS Œnt          |dd ¦  «        t          t          j        |¦  «        ur dS Œ�dS )NF)r	  r  r  r„   T)r_   r  r   r§  r¨  r  Ú_supported_fn_namesr’   rd   r   Ú	isbuiltinr¾  )ró   rS   Úmeths      rB   r  z&RandomVariable.is_supported_random_obj[	  så   € å�‰9Œ9�FœMÐ)Ð)Ø�5Ý”OÝÔ.Ð0Pñ
ô 
ð 	!ð 	!ˆDõ ˜3 Ñ%Ô%ð Ø�u�uÝ˜3 Ñ%Ô%ˆDÝÔ  Ñ&Ô&ð !à�7¥6¤=°$Ñ7Ô7×?Ò?ÀÑDÔDÒDÐDØ ˜5˜5ð Eõ ˜4 ¨TÑ2Ô2½'Å&Ä-ÐQUÑ:VÔ:VÐVÐVØ ˜5˜5ð WàˆtrC   Ústate.c                 óf  — t          | ¦  «        t          urt          dt          | ¦  «        › �¦  «        ‚t          | d         ¦  «        t          ur%t          dt          | d         ¦  «        › �¦  «        ‚t          | d         ¦  «        t          ur%t          dt          | d         ¦  «        › �¦  «        ‚t	          d„ | d         D ¦   «         ¦  «        st          d¦  «        ‚| d         �At          | d         ¦  «        t
          ur't          d	t          | d         ¦  «        › �¦  «        ‚d S d S )
Nzstate must be a tuple, got r   zstate[0] must be an int, got r)   zstate[1] must be a tuple, got c              3   óB   K  — | ]}t          |¦  «        t          u V — Œd S rE   )r_   r  rÒ  s     rB   r6  z-RandomVariable.check_state.<locals>.<genexpr>v	  s,   è è € Ð4Ð4 a•4˜‘7”7�c�>Ð4Ð4Ð4Ð4Ð4Ð4rC   z$all elements of state[1] must be intr   z$state[2] must be None or float, got )r_   rÍ   r[   r  r¦  rú  ©r  s    rB   Úcheck_statezRandomVariable.check_staten	  s"  € å�‰;Œ;�eÐ#Ð#Ý Ð!L½tÀE¹{¼{Ð!LÐ!LÑMÔMÐMÝ��a”‰>Œ>¥Ð$Ð$Ý Ð!QÅÀeÈAÄhÁÄÐ!QÐ!QÑRÔRÐRÝ��a”‰>Œ>¥Ð&Ð&Ý Ð!RÅ$ÀuÈQÄxÁ.Ä.Ð!RÐ!RÑSÔSÐSÝÐ4Ð4¨5°¬8Ð4Ñ4Ô4Ñ4Ô4ð 	IÝ Ð!GÑHÔHÐHØ�Œ8Ð¥D¨¨q¬¡N¤N½%Ð$?Ð$?Ý ØGµt¸EÀ!¼H±~´~ÐGÐGñô ð ð  ÐÐ$?Ð$?rC   c                 ó4  — t                                | ¦  «         t          j        t          j                             | d         ¦  «        t          j        d„ | d         D ¦   «         ¦  «        t          j                             | d         ¦  «        g¦  «        S )Nr   c                 óL   — g | ]!}t           j                             |¦  «        ‘Œ"S r=   r·  rÒ  s     rB   r{  z-RandomVariable.wrap_state.<locals>.<listcomp>„	  s)   € ÐLÐLÐL¸a•YÔ/×6Ò6°qÑ9Ô9ÐLÐLÐLrC   r)   r   )r  r   r   r   r-   rx   r  s    rB   Ú
wrap_statezRandomVariable.wrap_state}	  s‡   € å×"Ò" 5Ñ)Ô)Ð)ÝÔ&åÔ*×1Ò1°%¸´(Ñ;Ô;ÝÔ'ØLÐLÀ5ÈÄ8ÐLÑLÔLñô õ Ô*×1Ò1°%¸´(Ñ;Ô;ðñ
ô 
ð 	
rC   c                 ób   — |                       ¦   «         }t                               |¦  «         |S rE   )r\   r  r   )r  Ú	state_objs     rB   Úunwrap_statezRandomVariable.unwrap_stateŠ	  s/   € ð ×,Ò,Ñ.Ô.ˆ	Ý×"Ò" 9Ñ-Ô-Ð-ØÐrC   rR   r4   rS   rz   c                 óú  •‡‡— ‰dk    rv|j         j                             | ¦  «          | j        j        d„ |D ¦   «         i d„ |                     ¦   «         D ¦   «         ¤Ž t          j                             d ¦  «        S ‰dk    r,|  	                    | j         
                    ¦   «         ¦  «        S ‰dk    rq|j         j                             | ¦  «         | j                             |                      |d         ¦  «        ¦  «         t          j                             d ¦  «        S ‰| j        v r§|j         j                             | ¦  «         | j         
                    ¦   «         Šdt          dt          d	t          fˆˆfd
„} t          | j        ‰¦  «        d„ |D ¦   «         i d„ |                     ¦   «         D ¦   «         ¤Ž t!          ||||¦  «        S t#          ¦   «                              |‰||¦  «        S )Nr	  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r=   rz  rÒ  s     rB   r{  z.RandomVariable.call_method.<locals>.<listcomp>œ	  ó$   € Ð7Ð7Ð7¨Q�!×&Ò&Ñ(Ô(Ð7Ð7Ð7rC   c                 ó>   — i | ]\  }}||                      ¦   «         “ŒS r=   rz  )r5  r  ró   s      rB   rc  z.RandomVariable.call_method.<locals>.<dictcomp>�	  s*   € ÐPÐPÐP±X°S¸#�3˜×.Ò.Ñ0Ô0ÐPÐPÐPrC   r  r  r   rz   r9   r:   c                  ó€   •— t          j        ¦   «         }|                     ‰¦  «          t          |‰¦  «        | i |¤ŽS rE   )r  r   r  rd   )rz   r9   ÚrrS   r  s      €€rB   Úcall_random_methz4RandomVariable.call_method.<locals>.call_random_methª	  s?   ø€ Ý”M‘O”O�Ø—
’
˜5Ñ!Ô!Ð!Ø'•w˜q $Ñ'Ô'¨Ð8°Ð8Ð8Ð8rC   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r=   rz  rÒ  s     rB   r{  z.RandomVariable.call_method.<locals>.<listcomp>²	  r)  rC   c                 ó>   — i | ]\  }}||                      ¦   «         “ŒS r=   rz  r`  s      rB   rc  z.RandomVariable.call_method.<locals>.<dictcomp>³	  s*   € ÐHÐHÐH±°°A�1�a×*Ò*Ñ,Ô,ÐHÐHÐHrC   )r¢   rŒ   Úmutationr  r	  r¯   r   r-   rx   r#  r  r  r&  r  r   rd   r0   r>   r—   )r@   rR   rS   rz   r9   r-  r  rA   s     `   @€rB   r—   zRandomVariable.call_method’	  s  øøø€ ð �6Š>ˆ>ØŒIÔ"×+Ò+¨DÑ1Ô1Ð1ØˆDŒKÔØ7Ð7°$Ð7Ñ7Ô7ðàPÐPÀÇÂÁÄÐPÑPÔPðð ð õ Ô-×4Ò4°TÑ:Ô:Ð:Ø�ZÒÐØ—?’? 4¤;×#7Ò#7Ñ#9Ô#9Ñ:Ô:Ð:Ø�ZÒÐØŒIÔ"×+Ò+¨DÑ1Ô1Ð1ØŒK× Ò  ×!2Ò!2°4¸´7Ñ!;Ô!;Ñ<Ô<Ð<ÝÔ-×4Ò4°TÑ:Ô:Ð:Ø�TÔ-Ð-Ð-ØŒIÔ"×+Ò+¨DÑ1Ô1Ð1Ø”K×(Ò(Ñ*Ô*ˆEð9­ð 9µsð 9½sð 9ð 9ð 9ð 9ð 9ð 9ð 9ð '�G�D”K Ñ&Ô&Ø7Ð7°$Ð7Ñ7Ô7ðàHÐH¸¿º¹¼ÐHÑHÔHðð ð õ
 " "Ð&6¸¸fÑEÔEÐEÝ‰wŒw×"Ò" 2 t¨T°6Ñ:Ô:Ð:rC   rI   r3   c                 ót  ‡— ‰                      ˆfd„¦  «         ‰                     dd¦  «         ‰                     ¦   «          ‰                     d¦  «          ‰|                      | j                             ¦   «         ¦  «        ¦  «         ‰                     dd¦  «         ‰                     ¦   «          d S )Nc                  óˆ   •— ‰                       ‰                      t          ¦  «        ‰                      d¦  «        g¦  «        S )Nr   )rO   Úcreate_load_python_moduler  r´  ©rI   s   €rB   rM   z,RandomVariable.reconstruct.<locals>.<lambda>»	  s>   ø€ �G×)Ò)à×5Ò5µfÑ=Ô=Ø×,Ò,¨XÑ6Ô6ðñô € rC   r   Fr  r)   T)rN   r�   r  r)  r#  r  r  Úpop_toprJ  s    `rB   rQ   zRandomVariable.reconstruct¹	  sÃ   ø€ Ø×Òðð ð ð ñ	
ô 	
ð 	
ð 	×Ò˜a Ñ'Ô'Ð'ð 	�ŠÑÔÐØ×Ò˜*Ñ%Ô%Ð%Øˆ�—’ ¤× 4Ò 4Ñ 6Ô 6Ñ7Ô7Ñ8Ô8Ð8Ø×Ò˜a Ñ&Ô&Ð&Ø�ŠÑÔÐÐÐrC   rã  rÉ   )r   r�   rÊ   rA  r  r   rË   r,   rÌ   r  r   r?   r_   rH   r\   r˜   r  r  rÍ   r  rú  r   r   r#  r&  r¥   rÎ   rÏ   r—   rQ   rÐ   rÑ   s   @rB   r  r  -	  sk  ø€ € € € € ðð ð ”M€Mð 	ðà	Ô	'ð€Nð
ð ð Ðð &*Ø'+ð.ð .àŒm˜dÑ"ð.ð  Ñ$ð.ð ð	.ð
 
ð.ð .ð .ð .ð .ð .ð$˜T &¤-Ô0ð ð ð ð ð F¤Mð ð ð ð ð ð Vð °ð ð ð ñ „\ðð$ ð˜5  e¨C°¨H¤o°u¸t±|Ð!CÔDð Èð ð ð ñ „\ðð ð

˜%  U¨3°¨8¤_°e¸d±lÐ BÔCð 

Èð 

ð 

ð 

ñ „\ð

ð ðØðà	ˆs�E˜#˜s˜(”O U¨T¡\Ð1Ô	2ðð ð ñ „\ðð%;à'ð%;ð ð%;ð �?Ô#ð	%;ð
 �S˜/Ð)Ô*ð%;ð 
ð%;ð %;ð %;ð %;ð %;ð %;ðNð ð ð ð ð ð ð rC   r  c                   ó  ‡ — e Zd Zdefd„Zedddej        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ddee         deeef         defd„Zdd„Zdedeeef         fd„Zdddddeddfd„Zdedefd„Zˆ xZS )ÚWeakRefVariabler:   c                 ó   — t           j        S rE   )ÚweakrefÚrefrG   s    rB   rH   zWeakRefVariable.python_typeÍ	  s
   € ÝŒ{ÐrC   rR   r4   Úweakref_valuer]   NÚoptionsc                 ó
  — |€t          d¦  «        ‚|j        }|ot          |d¦  «        }t          j        | ||¦  «        } |¦   «         }|ot          |¦  «        }t          j        | ||¦  «        }||d<   t          ||fi |¤ŽS )Nz'WeakRefVariable.build requires a sourceÚ__callback__r]   )r[   r>  r   r,   r�   r"   r7  )	rR   r;  r]   r<  ÚcallbackÚcallback_sourceÚcallback_vtÚreferentÚreferent_vts	            rB   r�   zWeakRefVariable.buildÐ	  sœ   € ð ˆ>Ý Ð!JÑKÔKÐKØ Ô-ˆØ ÐG¥Z°¸Ñ%GÔ%GˆÝ%Ô+¨B°¸/ÑJÔJˆØ �=‘?”?ˆØÐ5Õ-¨fÑ5Ô5ˆÝ%Ô+¨B°¸&ÑAÔAˆØ"ˆ�ÑÝ˜{¨KÐCÐC¸7ÐCÐCÐCrC   rC  rA  c                 óV   •—  t          ¦   «         j        di |¤Ž || _        || _        d S r<   )r>   r?   rC  rA  )r@   rC  rA  r<  rA   s       €rB   r?   zWeakRefVariable.__init__ã	  s8   ø€ ð 	�‰ŒÔÐ#Ð#˜7Ð#Ð#Ð#Ø&ˆÔØ&ˆÔÐÐrC   rz   r9   c                 ó   — | j         S rE   )rC  rµ  s       rB   r�   zWeakRefVariable.call_functionê	  s   € ð ÔÐrC   rI   r3   c                 ó¾   ‡— ‰                      ˆfd„¦  «          ‰| j        ¦  «          ‰| j        ¦  «         ‰                     t	          dd¦  «        ¦  «         d S )Nc                  ó0   •— ‰                       dd¦  «        S )Nr9  r:  )r  r4  s   €rB   rM   z-WeakRefVariable.reconstruct.<locals>.<lambda>ó	  s   ø€  g×&>Ò&>¸yÈ%Ñ&PÔ&P€ rC   r   F)rN   rC  rA  rO   r   rJ  s    `rB   rQ   zWeakRefVariable.reconstructò	  sl   ø€ Ø×ÒÐPÐPÐPÐPÑQÔQÐQØˆ�Ô Ñ!Ô!Ð!Øˆ�Ô Ñ!Ô!Ð!Ø×ÒÕ2°1°eÑ<Ô<Ñ=Ô=Ð=Ð=Ð=rC   c                 ó0   — ddl m}  ||| j        ¦  «        S )Nr)   )Úgeneric_hash_impl)r  rI  rC  )r@   rR   rI  s      rB   r  zWeakRefVariable.hash_implø	  s,   € ð 	7Ð6Ð6Ð6Ð6Ð6à Ð   TÔ%5Ñ6Ô6Ð6rC   rû   r,   rü   c                 ó*   — ddl m}  || |||¦  «        S rþ   r   r  s        rB   r  z WeakRefVariable.richcompare_implÿ	  r  rC   c                 ón   — t          |t          ¦  «        sdS | j                             |j        ¦  «        S rF  )r�   r7  rC  rQ  rP  s     rB   rQ  zWeakRefVariable.is_python_equal
  s3   € Ý˜%¥Ñ1Ô1ð 	Ø�5ØÔ×/Ò/°Ô0AÑBÔBÐBrC   rÉ   )r   r�   rÊ   r_   rH   r˜   r9  ÚReferenceTyper   r   r�   r,   r?   rÎ   rÏ   r¥   r�   rQ   rÍ   r  r  r  r  r‡   rQ  rÐ   rÑ   s   @rB   r7  r7  Ì	  sÃ  ø€ € € € € ð˜Tð ð ð ð ð ðDØ'ðDàÔ,¨SÔ1ðDð ˜‘ðDð ð	Dð
 
ðDð Dð Dñ „\ðDð"'Ø*ð'Ø9Hð'ØUXð'à	ð'ð 'ð 'ð 'ð 'ð 'ð à'ð ð �?Ô#ð ð �S˜/Ð)Ô*ð	 ð
 
ð ð  ð  ð  ð>ð >ð >ð >ð7˜Cð 7 E¨#¨t¨)Ô$4ð 7ð 7ð 7ð 7ð7Ø-ð7Ø6Gð7ØMPð7à	ð7ð 7ð 7ð 7ðC Vð C°ð Cð Cð Cð Cð Cð Cð Cð CrC   r7  )‚rA  rF   rÆ  rŠ  r×  r   r§  rá  r  rô  r–  r×   r™   r9  Úcollections.abcr   r   r   r   Útypingr   r   r	   r
   Útorch._Cr‰   Útorch._numpyrl  r�  Útorch.utils._pytreerV  Ú_pytreerÎ  Útorch._dynamo.variables.baser   Útorch._dynamo.variables.listsr   Útorch._guardsr   rU   r   r   r   r   Úbytecode_transformationr   r   r   Úcreate_parameter_opr   r½   r   r   r   Úguardsr   r   Úmutation_guardr   r]   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r
  r*   r+   r,   rÿ  r-   Ú	functionsr.   r/   Úuser_definedr0   r1   r2   Útorch._dynamo.codegenr3   Útorch._dynamo.symbolic_convertr4   r6   rÓ   rß   r	  r?  rC  rH  r[  rc  rm  rp  Ú	dataclassrÃ  rŸ  rå  rˆ   ru   r  r,  Ú	lru_cacherÏ   rš   r]  re  rg  r�  r§   r�  rº  r¿  rÓ  rÙ  rä  rü  ÚfinfoÚiinforå  rs  r  r  r7  r=   rC   rB   ú<module>rb     sÇ	  ððð ð" €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø €€€Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7à €€€Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø  Ð  Ð  Ð  Ð  Ð  à @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @ðð ð ð ð ð ð ð ð ð ð
 GÐ FÐ FÐ FÐ FÐ FØ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð WÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ &Ð &Ð &Ð &Ð &Ð &Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ Xð ð IØ/Ð/Ð/Ð/Ð/Ð/ØHÐHÐHÐHÐHÐHðY
ð Y
ð Y
ð Y
ð Y
�Oñ Y
ô Y
ð Y
ðx
-ð -ð -ð -ð -˜?ñ -ô -ð -ð,h;ð h;ð h;ð h;ð h;˜ñ h;ô h;ð h;ðV{<ð {<ð {<ð {<ð {<˜ñ {<ô {<ð {<ð|ð ð ð ð �oñ ô ð ð
ð 
ð 
ð 
ð 
˜oñ 
ô 
ð 
ð2B7ð B7ð B7ð B7ð B7�ñ B7ô B7ð B7ðJð ð ð ð �?ñ ô ð ð4#ð #ð #ð #ð #˜ñ #ô #ð #ð
%¨cð %°h¸sÀC¸xÔ6Hð %ð %ð %ð %ð`ð `ð `ð `ð `˜ñ `ô `ð `ðF	 ÔðMð Mð Mð Mð Mñ Mô Mñ ÔðMð\-ð \-ð \-ð \-ð \-Ð&?ñ \-ô \-ð \-ð~3ð 3ð 3ð 3ð 3Ð6ñ 3ô 3ð 3ðl(ð (ð (ð (ð (�_ñ (ô (ð (ð$t2ð t2ð t2ð t2ð t2�oñ t2ô t2ð t2ðn87ð 87ð 87ð 87ð 87˜?ñ 87ô 87ð 87ðv@
ð @
ð @
ð @
ð @
�_ñ @
ô @
ð @
ðF €Ô˜QÐÑÔð˜4 Ô 9¸5Ô;MÐ MÔNð ð ð ñ  Ôðð( €Ô˜QÐÑÔð(˜4 Ô 2°EÔ4MÐ MÔNð (ð (ð (ñ  Ôð(ðl
ð l
ð l
ð l
ð l
�Oñ l
ô l
ð l
ð`ð ð ð ð �?ñ ô ð ð0-ð -ð -ð -ð -�oñ -ô -ð -ðSDð SDð SDð SDð SD˜?ñ SDô SDð SDðlð ð ð ð �_ñ ô ð ð Hð Hð Hð Hð H˜ñ Hô Hð HðV7ð 7ð 7ð 7ð 7˜oñ 7ô 7ð 7ð0*
ð *
ð *
ð *
ð *
˜Oñ *
ô *
ð *
ðZ_Að _Að _Að _Að _A˜?ñ _Aô _Að _AðD(ð (ð (ð (ð (Ð-ñ (ô (ð (ð „IÐ#Ø„IÐ#Ø„IÐ!ðÐ ð
ð 
ð 
ð 
ð 
˜/ñ 
ô 
ð 
ð<\ð \ð \ð \ð \�_ñ \ô \ð \ð~=Cð =Cð =Cð =Cð =C�oñ =Cô =Cð =Cð =Cð =CrC   