Ë
    P/æj•°  ã                   óÐ  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl m	Z	 d dl
mZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d d	lm Z m!Z! d d
l"m#Z# er
d dl$Z$d dl%m&Z& d dl'Z'd dl(m)c m*Z+ d dl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z; d dl<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZD ddlEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZP g d¢ZQee'j¤                  j¦                  geeB   f   ZTejª                   G d„ d«      «       ZVejª                   G d„ d«      «       ZWd„ ZXdeeY   de+j´                  deeY   d e+j´                  d!e[f
d"„Z\d#„ Z]e'j¼                  j¾                  jÀ                  e'j¼                  j¾                  jÂ                  e'j¼                  j¾                  jÄ                  e'j¼                  j¾                  jÆ                  e'j¼                  j¾                  jÈ                  e'j¼                  j¾                  jÊ                  e'j¼                  j¾                  jÌ                  e'j¼                  j¾                  jÎ                  e'j¼                  j¾                  jÐ                  e'j¼                  j¾                  jÒ                  e'j¼                  j¾                  jÔ                  e'j¼                  j¾                  jÖ                  gZle	d7d$„«       Zme	d%„ «       Znd&ee'jÞ                  jà                  ef   d'ee'jÞ                  jâ                     d(eer   fd)„Zsd*e'j¤                  j¦                  d+eId!ee'j¤                  j¦                  eIf   fd,„Ztd*e'j¤                  j¦                  fd-„Zud&ee'jÞ                  jà                  ef   d'ee'jÞ                  jâ                     d(eer   fd.„Zv G d/„ d0«      Zwd1„ Zx	 d8d*e'j¤                  j¦                  d2d3d!d4fd5„Zyd6„ Zzy)9é    N)Ú
namedtuple)Úcontextmanager)ÚAnyÚCallableÚDictÚfinalÚIteratorÚListÚOptionalÚTupleÚTypeÚTYPE_CHECKINGÚUnion)Úautograd_not_implemented)ÚFakeScriptObject)Ú#first_call_function_nn_module_stack)Ú_PyTreeCodeGenÚ_PyTreeInfo)Úimmutable_dictÚimmutable_list)Úinsert_deferred_runtime_asserts)ÚValueRanges)Ú_collect_and_set_constant_attrsÚ_collect_param_buffer_metadataÚ_detect_fake_mode_from_gmÚ_name_hoo_subgraph_placeholdersÚ/_overwrite_signature_for_non_persistent_buffersÚ)_populate_param_buffer_metadata_to_new_gmÚ_rename_without_collisions)ÚVerifier©Údetect_fake_mode©Úunset_fake_temporarily)ÚFunctionalTensor)Úis_equivalentÚreorder_kwargs)Úcompatibility)Ú
PassResult)ÚPassManageré   )ÚArgumentSpecÚConstantArgumentÚCustomObjArgumentÚExportGraphSignatureÚ	InputKindÚ	InputSpecÚ
OutputKindÚ
OutputSpecÚSymIntArgumentÚTensorArgumentÚTokenArgument)ÚExportedProgramÚModuleCallEntryÚModuleCallSignaturec                   óp   — e Zd ZU ee   ed<   ee   ed<   ej                  ed<   ej                  ed<   d„ Zy)r9   ÚinputsÚoutputsÚin_specÚout_specc                 óô   — | j                   D ]-  }|j                  |j                  k(  sŒ|j                  |_        Œ/ | j                  D ]-  }|j                  |j                  k(  sŒ|j                  |_        Œ/ y ©N)r;   Únamer<   )ÚselfÚoriginal_nodeÚnew_nodeÚiÚos        ú`/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/export/exported_program.pyÚreplace_all_uses_withz)ModuleCallSignature.replace_all_uses_with_   sd   € Ø—‘ò 	'ˆAØ�v‰v˜×+Ñ+Ó+Ø!Ÿ™�•ð	'ð —‘ò 	'ˆAØ�v‰v˜×+Ñ+Ó+Ø!Ÿ™�•ñ	'ó    N)	Ú__name__Ú
__module__Ú__qualname__r
   r,   Ú__annotations__ÚpytreeÚTreeSpecrH   © rI   rG   r9   r9   X   s1   … à�ÑÓØ�,ÑÓØ�_‰_ÓØ�o‰oÓó'rI   r9   c                   ó,   — e Zd ZU eed<   dZee   ed<   y)r8   ÚfqnNÚ	signature)rJ   rK   rL   ÚstrrM   rS   r   r9   rP   rI   rG   r8   r8   h   s   … à	ƒHØ/3€IˆxÐ+Ñ,Ô3rI   r8   c                 óB   ‡ — t        j                  ‰ «      ˆ fd„«       }|S )Nc                  óT   •— t        «       5   ‰| i |¤Žcd d d «       S # 1 sw Y   y xY wr@   r#   )ÚargsÚkwargsÚfns     €rG   Úwrapperz/_disable_prexisiting_fake_mode.<locals>.wrappero   s+   ø€ ä#Ó%ñ 	'Ù�tÐ&˜vÑ&÷	'÷ 	'ò 	'ús   Œž')Ú	functoolsÚwraps)rY   rZ   s   ` rG   Ú_disable_prexisiting_fake_moder]   n   s%   ø€ Ü‡_�_�RÓó'ó ð'ð €NrI   Ú
spec1_typeÚspec1_contextÚ
spec2_typeÚspec2_contextÚreturnc                 óú   — | �|€| |u xr ||k(  S t        | t        t        f«      rt        |t        t        f«      r||k(  S t        | t        t        f«      rt        |t        t        f«      r||k(  S | |u xr ||k(  S )zeTreat containers and their immutable variants as the same type. Otherwise
    compare as normal.
    )Ú
issubclassÚdictr   Úlistr   )r^   r_   r`   ra   s       rG   Ú_fx_collection_equivalence_fnrg   w   s“   € ð Ð˜ZÐ/Ø˜ZÐ'ÒJ¨M¸]Ñ,JÐJä�*œt¤^Ð4Ô5¼*Ø”Tœ>Ð*ô;ð  Ñ-Ð-ä�*œt¤^Ð4Ô5¼*Ø”Tœ>Ð*ô;ð  Ñ-Ð-à˜Ð#ÒF¨¸Ñ(FÐFrI   c                  ó&  — |d   }|d= t         j                  j                  |j                  «       t         j                  j                  j
                  «      sJ ‚ |j                  t         j                  j                  j
                  g| ¢­i |¤ŽS )NÚkernel)ÚtorchÚ_CÚ%_dispatch_has_kernel_for_dispatch_keyrA   ÚDispatchKeyÚCompositeImplicitAutogradÚ_op_dk)rW   rX   ri   s      rG   Ú_register_cia_to_metarp   �   sƒ   € Ø�HÑ€FØˆxÐä�8‰8×9Ñ9Ø�‰‹”u—x‘x×+Ñ+×EÑEôð ð ð ˆ6�=‰=Ü�‰×Ñ×6Ñ6ðØ9=òØAGñð rI   c              #   ót  K  — i }t        «       }i }| D �]ª  }d„ }|r ||«       |j                  j                  «       ||<   |j                  |«       t        D ]3  }||j                  vsŒ |j                  |«      t        |d¬«      «       Œ5 t        j                  j                  j                  |j                  v r/|j                  t        j                  j                  j                  = |r<d„ }	 |j                  t        j                  j                  j                  «      |	«       t        j                  j                  j                  |j                  vrR |j                  t        j                  j                  j                  «      t        j                  t        |¬«      «       ||v s�Œ ||   ||<   ||= �Œ­ 	 d –— |D ]T  }
|
j                  j                  «        |
j                  j!                  ||
   «       |
j"                  j                  «        ŒV |j%                  «       D ]
  \  }
}|||
<   Œ y # |D ]T  }
|
j                  j                  «        |
j                  j!                  ||
   «       |
j"                  j                  «        ŒV |j%                  «       D ]
  \  }
}|||
<   Œ w xY w­w)Nc                 óÔ  — | t         j                  v rt        d| › d�«      ‚| t         j                  v rt        | › d�«      ‚t	        | j
                  j                  D �cg c]  }|j                  €Œ|‘Œ c}«      }|dk7  xs | j
                  j                  }|rt        | › d�«      ‚t        j                  j                  | j                  «       «      st        | › d�«      ‚yc c}w )NzWe can't detect z7 as a functional op statically, so we can't preserve itz‰ is a metadata query function, it will be preserved implicitly in our tracing system. Please file an issue on github if you see otherwiser   z6 is a mutating/aliasing op, we can't preserve it as isz0 is a TorchScript op, we can't preserve it as isT)r%   Úmaybe_aliasing_or_mutating_opsÚRuntimeErrorÚmetadata_fnsÚlenÚ_schemaÚ	argumentsÚ
alias_infoÚ
is_mutablerj   rk   Ú_dispatch_has_kernelrA   )Úop_overloadrE   ry   Úis_mutating_or_aliasings       rG   Úassert_valid_to_preservezE_override_composite_implicit_decomp.<locals>.assert_valid_to_preserveË   s  € ØÔ.×MÑMÑMÜ"Ø& { mÐ3jÐkóð ð Ô.×;Ñ;Ñ;Ü"Ø"�mð $Jð Jóð ô Ø'×/Ñ/×9Ñ9ÖV�q¸Q¿\¹\Ñ=U’ÒVóˆJð '1°A¡oÒ&W¸×9LÑ9L×9WÑ9WÐ#á&Ü"Ø"�mÐ#YÐZóð ô —8‘8×0Ñ0°×1AÑ1AÓ1CÔDÜ"Ø"�mÐ#SÐTóð ð ùò Ws   ÁC%Á1C%T)Údeferred_errorc                  ó   — t         S r@   )ÚNotImplemented)rW   rX   s     rG   Ú_z._override_composite_implicit_decomp.<locals>._û   s   € Ü%Ð%rI   )ri   )ÚsetÚ
py_kernelsÚcopyÚaddÚ(_AUTOGRAD_ALIAS_BACKEND_KEYS_TO_OVERRIDEÚpy_implr   rj   rk   rm   rn   ÚMetar[   Úpartialrp   ÚclearÚupdateÚ_dispatch_cacheÚitems)Úops_to_preserveÚdecomp_tableÚsafeÚsaved_tablesÚpatched_opsÚremoved_decompsr|   r~   Úoverride_dispatch_keyr‚   ÚopÚdecomps               rG   Ú#_override_composite_implicit_decompr˜   °   sr  è ø€ ð" €LÜ“%€KØ€OØ&ó D*ˆò	ñ< á$ [Ô1à$/×$:Ñ$:×$?Ñ$?Ó$Aˆ�[Ñ!Ø�‰˜Ô$ä%Mò 	Ð!Ø$¨K×,BÑ,BÒBà:�×#Ñ#Ð$9Ó:Ü,¨[ÈÔNõð	ô �8‰8×Ñ×9Ñ9¸[×=SÑ=SÑSØ×&Ñ&¤u§x¡x×';Ñ';×'UÑ'UÐVáò&ð PˆK×Ñ¤§¡× 4Ñ 4× NÑ NÓOÐPQÔRô �8‰8×Ñ×$Ñ$¨K×,BÑ,BÑBØ:ˆK×Ñ¤§¡× 4Ñ 4× 9Ñ 9Ó:Ü×!Ñ!Ô"7ÀÔLôð ˜,Ó&Ø+7¸Ñ+DˆO˜KÑ(Ø˜[Ò)ðID*ðL	&Ûàò 	'ˆBØ�M‰M×ÑÔ!Ø�M‰M× Ñ  ¨bÑ!1Ô2Ø×Ñ×$Ñ$Õ&ð	'ð
 *×/Ñ/Ó1ò 	&‰JˆB�Ø%ˆL˜Òñ	&øð ò 	'ˆBØ�M‰M×ÑÔ!Ø�M‰M× Ñ  ¨bÑ!1Ô2Ø×Ñ×$Ñ$Õ&ð	'ð
 *×/Ñ/Ó1ò 	&‰JˆB�Ø%ˆL˜Òñ	&üs-   ‚A'J8Á*EJ8Æ3J8ÇH= ÇA7J8È=A8J5Ê5J8c               #   ó  K  — t        t        j                  j                  j                  j
                  t        j                  j                  j                  j                  fi d¬«      5  d –— d d d «       y # 1 sw Y   y xY w­w)NF)r‘   )r˜   rj   ÚopsÚatenÚtoÚdtype_layoutÚdtyperP   rI   rG   Ú!_override_decomp_aten_to_variantsrŸ     s_   è ø€ ô
 
-Ü	�‰�‰×	Ñ	×	'Ñ	'¬¯©¯©×):Ñ):×)@Ñ)@ÐAØ
Øô
ñ ó
 	÷÷ ñ üs   ‚A)BÁ+A9Á0	BÁ9BÁ>Br�   Ú_preserve_opsÚjoint_loss_indexc                ó2  — ddl m} ddlm} ddlm}m}m}m}	m	}
m
} ddlm} | j                  j                  dk(  �r@| j                  «       }g }|j                   j"                  D ]0  }|j$                  dk(  sŒ|j'                  |j(                  d   «       Œ2 t+        j,                  ||j.                  «      }t1        |«      }|€ | |«       d	¬
«      }|j2                  }|j                   j4                  j6                  j8                  }|j:                  t<        t>        fvrt+        j@                  t>        d |g«      }tC        tE        ||j.                  |«      «      |j                   _        |jG                  «        tI        | jJ                  | jL                  |«      } |||«      }tO        |«      } |«       5  |5  tQ        «       5  tS        ||«      5   ||g |d   ¢|d   jU                  «       ¢­i |||d¬«      }d d d «       d d d «       d d d «       d d d «       jV                  }|jX                  }t[        |||«       t]        | jJ                  |«      } |	|«        ||«        |
||«       t_        ||«      S | j`                  j                   j"                  D �cg c]  }|j$                  dk(  sŒ|‘Œ }}|D �cg c]  }|j(                  d   ‘Œ }}| j`                  jc                  «       D ��cg c]  \  }}|‘Œ	 }}}|D ]  }te        | j`                  |«       Œ tg        |«      }|€ti        jj                  «       n|} |«       5  |5  tS        ||«      5   || j`                  |||�d	nd|�|nd ¬«      \  }}d d d «       d d d «       d d d «       d„ }j                   j"                  D �cg c]  }|j$                  dk(  sŒ|‘Œ } }t=        |j                   j"                  «      d   jl                  d   }!to        | «      to        |«      k(  sJ ‚tq        || «      D ]  \  }"}#|"jr                  x|#_9        |#_:        Œ | D �$ci c]  }$|$jr                  |$jr                  “Œ }%}$|j                   j"                  D ]8  }|j$                  dk(  rŒtw        |%|jr                  |jr                  «      |_9        Œ: ty        |«       ddl=m>}&m?}' ddl@mA}( t„        j†                  jˆ                  jŠ                  s[d})t�        |«      }*|*�L |'|t�        j�                  |&|)¬«      «      5  t“        ||*dt•        |j                   «      › �d	¬«       d d d «       |jG                  «        t—         |(|«      «      D ]7  \  }+}t™        |!|+   t„        jš                  jœ                  «      sŒ.||!|+   _9        Œ9 t—        | jJ                  jž                  «      D �+�,ci c]C  \  }+},t™        |,j                   t¢        «      s$|,j                   jr                  | |+   jr                  “ŒE }-}+},t—        | jJ                  jž                  «      D �+�,cg c]E  \  }+},t¥        |,j¦                   ||,j                   | |+   «      |,jt                  |,j¨                  «      ‘ŒG }.}+},t—        | jJ                  jª                  «      D �+�,cg c]T  \  }+},t­        |,j¦                   ||,j                   |!|+   «      |-j¯                  |,jt                  |,jt                  «      «      ‘ŒV }/}+},|��™j°                  €J ‚|j°                  j²                  }0to        |j´                  «      to        | jJ                  jž                  «      k(  sJ ‚t—        | jJ                  jž                  «      D �+�,ci c]/  \  }+},t™        |,j                   t¶        «      r|j´                  |+   |,“Œ1 }1}+},t—        |!to        |/«      d  «      D ]Ë  \  }+}|0|jr                     }2|1|2   },|,j¦                  t¸        jº                  k(  rt¼        j¾                  }3|,jt                  }4nH|,j¦                  t¸        jÀ                  k(  rt¼        jÂ                  }3|2}4ntÅ        d|,j¦                  › �«      ‚|/j'                  t­        |3t·        |jr                  ¬«      |4«      «       ŒÍ to        | «      to        |«      k(  sJ ‚tÇ        |.|/¬«      }tq        || «      D ]ª  \  }5}6t™        |5j(                  d   t„        jÈ                  «      s|5j(                  d   |6j(                  d<   |6jt                  |jÊ                  v s|6jt                  |jÌ                  v sŒz|5j(                  jÏ                  «       D ]  \  }7}8|8|6j(                  |7<   Œ Œ¬ ||fS # 1 sw Y   �Œ„xY w# 1 sw Y   �Œ‰xY w# 1 sw Y   �ŒŽxY w# 1 sw Y   �Œ“xY wc c}w c c}w c c}}w # 1 sw Y   �ŒIxY w# 1 sw Y   �ŒNxY w# 1 sw Y   �ŒSxY wc c}w c c}$w # 1 sw Y   �Œ³xY wc c},}+w c c},}+w c c},}+w c c},}+w )Nr   )Úaot_export_module)ÚFakeTensorMode)Ú_export_to_aten_irÚ_fakify_params_buffersÚ_ignore_backend_decompsÚ_verify_nn_module_stackÚ_verify_placeholder_namesÚ_verify_stack_trace)ÚShapeEnvÚTRAININGÚplaceholderÚvalT)Ú	shape_envÚexportr+   F)r�   Ú_check_autograd_state)ÚdecompositionsÚtrace_jointÚoutput_loss_indexc                 óì   — t        | t        «      r| S t        | t        «      rt        |j                  ¬«      S t        | t        «      rt	        |j                  ¬«      S t        dt        | «      › �«      ‚)N©rA   zType of old_arg not supported: )Ú
isinstancer-   r5   rA   r4   rt   Útype)Úold_argÚnew_phs     rG   Ú
update_argzF_decompose_and_get_gm_with_new_signature_constants.<locals>.update_arg¦  s[   € Ü�gÔ/Ô0ØˆNÜ˜¤Ô0Ü! v§{¡{Ô3Ð3Ü˜¤Ô0Ü! v§{¡{Ô3Ð3ÜÐ<¼TÀ'»]¸OÐLÓMÐMrI   éÿÿÿÿ)Ú_node_metadata_hookÚ_set_node_metadata_hook)Ú_graph_output_nameszUFile "torch/fx/passes/runtime_assert.py", line 24, in insert_deferred_runtime_asserts)Ústack_tracezexported program: )r°   zUnknown input kind: r¶   ©Úinput_specsÚoutput_specs)hÚtorch._functorch.aot_autogradr£   Útorch._subclasses.fake_tensorr¤   Útorch.export._tracer¥   r¦   r§   r¨   r©   rª   Ú%torch.fx.experimental.symbolic_shapesr«   ÚverifierÚdialectÚmoduleÚgraphÚnodesr–   ÚappendÚmetarN   Útree_unflattenÚ_in_specr   Ú	_out_specÚ_codegenÚpytree_infoÚ	orig_argsr¸   rf   ÚtuplerO   r   r   Ú	recompiler   Úgraph_signatureÚ	constantsr   rŸ   r˜   ÚvaluesÚgmÚsigr   r   Ú!_remove_unneccessary_copy_op_passÚgraph_moduleÚnamed_buffersÚdelattrr"   Ú
contextlibÚnullcontextrW   rv   ÚziprA   Útargetr   r   Ú(torch._export.passes._node_metadata_hookr½   r¾   Ú4torch._functorch._aot_autograd.input_output_analysisr¿   rj   Ú_dynamoÚconfigÚdo_not_emit_runtime_assertsÚ_get_shape_envr[   rŠ   r   r   Ú	enumerater·   ÚfxÚNoderÂ   Úargr-   r1   ÚkindÚ
persistentrÃ   r3   ÚgetÚbackward_signatureÚgradients_to_user_inputsÚuser_inputsr5   r0   Ú	PARAMETERr2   ÚGRADIENT_TO_PARAMETERÚ
USER_INPUTÚGRADIENT_TO_USER_INPUTÚAssertionErrorr/   ÚTensorÚinputs_to_parametersÚinputs_to_buffersrŽ   )9Úepr�   r    r¡   r£   r¤   r¥   r¦   r§   r¨   r©   rª   r«   ÚmodÚ	fake_argsÚnodeÚfake_args_unwrappedÚ	fake_moder>   Úorig_arg_namesÚconstant_attrsÚfake_params_buffersÚparams_buffers_to_node_metaÚaten_export_artifactrÚ   Únew_graph_signatureÚold_placeholdersrA   r‚   Úbuffers_to_remover×   r»   Únew_placeholdersÚnew_outputsÚold_phrº   ÚphÚname_mapr½   r¾   r¿   rÀ   r¯   rE   ÚspecÚold_new_placeholder_maprÂ   rÃ   Ú	gradientsÚspecsÚsourcerî   rã   Úold_noderD   ÚkÚvs9                                                            rG   Ú2_decompose_and_get_gm_with_new_signature_constantsr  #  sU	  € õ @Ý<÷÷ õ ?ð 
‡{�{×Ñ˜jÓ(Ø�i‰i‹kˆàˆ	Ø—I‘I—O‘Oò 	3ˆDØ�w‰w˜-Ó'Ø× Ñ  §¡¨5Ñ!1Õ2ð	3ô %×3Ñ3°I¸s¿|¹|ÓLÐÜ-¨cÓ2ˆ	ØÐÙ&±³ÀDÔIˆIð —=‘=ˆàŸ™×+Ñ+×7Ñ7×AÑAˆð �=‰=¤¤u Ñ-Ü—‘¤u¨d°X°JÓ?ˆHä+ÜØØ—‘Øóó
ˆ�	‰	Ôð 	�‰Œô
 9Ø×Ñ §¡¨có
ˆñ
 5°YÀÓDÐä&DÀSÓ&IÐ#á$Ó&ñ 	Øñ	ä,Ó.ñ	ä0SØØó1
ñ	ñ $6ØðØ(¨Ñ+ðà(¨Ñ+×2Ñ2Ó4ñð Ø#ØØ)Ø&+ô$Ð ÷	÷ 	÷ 	÷ 	ð( "×$Ñ$ˆØ2×6Ñ6Ðä1Ø'¨Ð-@ô	
ô
 NØ×ÑÐ 3ó
Ðñ 	  Ô#Ù˜BÔÙ! "Ð&9Ô:ä0°Ð5HÓIÐIð Ÿ™×.Ñ.×4Ñ4öØ¸¿¹À=Ó8PŠðÐð ð /?Ö? d�—‘˜5Ó!Ð?€IÐ?à-/¯_©_×-JÑ-JÓ-L×M¡' $¨šÐMÐÑMØ!ò 'ˆÜ�—‘ Õ&ð'ô ! Ó+€IØ,5Ð,=”
×&Ñ&Ô(À9€IÙ	 Ó	"ñ 
 Iñ 
Ô/RØØó0ñ 
ñ 0Ø�O‰OØØ'Ø 0Ð <™À%àÐ+ñ /àô
ÑˆˆO÷	
÷ 
÷ 
ò Nð *,¯©¯©ÖT ¸4¿7¹7ÀmÓ;SšÐTÐÐTÜ�r—x‘x—~‘~Ó& rÑ*×/Ñ/°Ñ2€Kô ÐÓ ¤CÐ(8Ó$9Ò9Ð9Ð9ÜÐ.Ð0@ÓAò 2‰ˆ�Ø&,§k¡kÐ1ˆŒ�f•mð2ð ,<Ö< R�—‘˜Ÿ™Ñ Ð<€HÐ<Ø—‘—‘ò OˆØ�7‰7�mÒ#ØÜ.¨x¸¿¹ÀDÇIÁIÓNˆ�	ðOô $ BÔ'÷õ Yä�=‰=×Ñ×;Ò;ð1ð 	ô # 2Ó&ˆ	ØÐ Ù(Ø”I×%Ñ%Ð&9À{ÔSóñ ô 0ØØØ(Ô)LÈRÏXÉXÓ)VÐ(WÐXØõ	÷ð ‡L�L„NÜÑ0°Ó4Ó5ò '‰ˆˆ4Ü�k !‘n¤e§h¡h§m¡mÕ4Ø"&ˆK˜‰NÕð'ô ! ×!3Ñ!3×!?Ñ!?Ó@÷áˆAˆtÜ˜$Ÿ(™(Ô$4Ô5ð 	�‰�‰Ð'¨Ñ*×/Ñ/Ñ/ðÐñ ô ! ×!3Ñ!3×!?Ñ!?Ó@÷ñ ˆAˆtô 	Ø�I‰IÙ�t—x‘xÐ!1°!Ñ!4Ó5Ø�K‰KØ�O‰Oõ		
ð€Kñ ô ! ×!3Ñ!3×!@Ñ!@ÓA÷ñ ˆAˆtô 	Ø�I‰IÙ�t—x‘x ¨Q¡Ó0Ø#×'Ñ'¨¯©°T·[±[ÓAõ	
ð€Lñ ð Ñ#Ø×1Ñ1Ð=Ð=Ð=Ø#×6Ñ6×OÑOˆ	Ü�?×.Ñ.Ó/´3°r×7IÑ7I×7UÑ7UÓ3VÒVÐVÐVô % R×%7Ñ%7×%CÑ%CÓD÷
á��4Ü˜$Ÿ(™(¤NÔ3ð ×'Ñ'¨Ñ*¨DÑ0ð
ˆñ 
ô
 ! ¬S°Ó->Ð-@Ð!AÓBò 	‰GˆAˆtØ˜tŸy™yÑ)ˆFØ˜‘=ˆDØ�y‰yœI×/Ñ/Ò/Ü!×7Ñ7�ØŸ™‘Ø—‘œi×2Ñ2Ò2Ü!×8Ñ8�Ø‘ä$Ð';¸D¿I¹I¸;Ð%GÓHÐHØ×ÑÜØÜ"¨¯	©	Ô2Øóõð	ô& ÐÓ ¤CÐ(8Ó$9Ò9Ð9Ð9ä.Ø¨lôÐô "Ð"2Ð4DÓEò 	%Ñˆ�(Ü˜(Ÿ-™-¨Ñ.´·±Ô=Ø#+§=¡=°Ñ#7ˆH�M‰M˜%Ñ ð �O‰OÐ2×GÑGÑGØ�‰Ð"5×"GÑ"GÒGà Ÿ™×+Ñ+Ó-ò %‘��1Ø#$�—‘˜aÒ ñ%ð	%ð Ð"Ð"Ð"÷K	ñ 	ú÷ 	ñ 	ú÷ 	ñ 	ú÷ 	ñ 	üòLùò @ùãM÷
ñ 
ú÷ 
ñ 
ú÷ 
ñ 
üò2 Uùò =÷0ñ üó$ùóùóùó
sá   Æ9f&Æ<fÇfÇ)e?	Ç=fÈfÈf&Êf3Ê4f3Ê>f8Ë3f=Í	gÍgÍ#gÍ<gÎgÎ/g*Ïg*Ñg/Ô&g4×AhØ5A
hÚ$AhÞ 4hå?f	æfæfæfæf#	æf&æ&f0çgçgçg	çgçg'ç4g>rÚ   r  c                 óÈ  — | j                  |j                  «       «      5  | j                  j                  D ]ÿ  }|j                  dk(  sŒt        j                  |j                  «      \  }}|D ]Å  }t        |t        j                  j                  «      sŒ(|j                  |j                  v sŒA|j                  dk(  sŒQ|j                  t        j                  j                   j"                  j$                  k(  sŒ�|j'                  |j                  d   «       | j                  j)                  |«       ŒÇ �Œ | j+                  «        ddd«       | |fS # 1 sw Y   | |fS xY w)zQ
    Removes redundant copy_ node that was introduced due to mutated buffer.
    ÚoutputÚcall_functionr+   N)Ú_set_replace_hookÚget_replace_hookrË   rÌ   r–   rN   Útree_flattenrW   r·   rj   rë   rì   rA   Úbuffers_to_mutaterã   rš   r›   r…   ÚdefaultrH   Ú
erase_noderÖ   )rÚ   r  rÿ   rW   r‚   Úouts         rG   rÜ   rÜ   ,  s  € ð 
×	Ñ	Ð1×BÑBÓDÓ	Eñ Ø—H‘H—N‘Nò 	5ˆDØ�w‰w˜(Ó"Ü ×-Ñ-¨d¯i©iÓ8‘��aØò 
5�Cä" 3¬¯©¯©Õ6ØŸH™HÐ(;×(MÑ(MÒMð  ŸF™F oÓ5Ø #§
¡
¬e¯i©i¯n©n×.AÑ.A×.IÑ.IÓ Ià×5Ñ5°c·h±h¸q±kÔBØŸH™H×/Ñ/°Õ4ò
5ð	5ð 	�‰Œ÷ð  Ð"Ð"Ð"÷!ð  Ð"Ð"Ð"ús+    )EÁ
AEÂEÂ/EÂ?;EÃ;AEÅE!c           	      óÂ  — | j                  |j                  «       «      5  | j                  «       D �]  }t        |t        j
                  j                  «      sŒ)i }i }t        |j                  j                  «      D ]È  }|j                  dk(  r¨|j                  t        j                  k(  r‹|j                  \  }}||   › d|› �}	|	|v rc|j                  ||	   «       |D ].  }
|
j                   €Œ|
j                   j                  |||	   «       Œ0 |j                  j#                  |«       Œ¯|||	<   |	||<   Œº|j$                  ||<   ŒÊ �Œ 	 d d d «       y # 1 sw Y   y xY w)Nr  ú.)r  r  Úmodulesr·   rj   rë   ÚGraphModulerf   rË   rÌ   r–   rã   ÚoperatorÚgetitemrW   rH   rS   r   rA   )rÚ   r×   Úmodule_call_graphrÊ   Únode_idÚgetitemsrÿ   r  ÚidxÚnew_idÚentrys              rG   Ú _common_getitem_elimination_passr.  E  sG  € ð 
×	Ñ	˜o×>Ñ>Ó@Ó	Añ .Ø—j‘j“ló 	.ˆFÜ˜f¤e§h¡h×&:Ñ&:Ô;Øà02ˆGØ13ˆHÜ˜VŸ\™\×/Ñ/Ó0ò .�Ø—7‘7˜oÒ-°$·+±+Ä×AQÑAQÒ2QØ"&§)¡)‘K�F˜CØ '¨¡Ð0°°#°Ð7�FØ Ñ)Ø×2Ñ2°8¸FÑ3CÔDØ%6ò "˜EØ$Ÿ™Ñ:Ø %§¡× EÑ EØ$(¨(°6Ñ*:õ!"ð"ð
 Ÿ™×/Ñ/°Õ5à+/˜ Ñ(Ø(.˜ šà$(§I¡I�G˜D’Mò!.ñ	.÷.÷ .ñ .ús    CEÃ/AEÅEc          
      ód  — t        | |||¬«      \  }}|j                  j                  | j                  j                  «       t	        || j
                  «      }t        ||j                  || j                  |t        j                  | j                  «      | j                  | j                  ¬«      }|S )N©r�   r    r¡   )ÚrootrË   r×   Ú
state_dictÚrange_constraintsr(  Úexample_inputsrØ   )r  rÎ   rŒ   rÝ   Ú_get_updated_range_constraintsr3  r7   rË   r2  r…   Údeepcopyr(  r4  rØ   )rü   r�   r    r¡   rÚ   r  Únew_range_constraintsÚexported_programs           rG   Ú_decompose_exported_programr9  b  s¢   € ô QØ
Ø!Ø#Ø)ô	Ñ€BÐð ‡G�G‡N�N�2—?‘?×'Ñ'Ô(ä:Ø
Ø
×ÑóÐô
 'ØØ�h‰hØ+Ø—=‘=Ø/ÜŸ-™-¨×(<Ñ(<Ó=Ø×(Ñ(Ø—,‘,ô	Ðð ÐrI   c                   ó6  — e Zd ZdZ	 	 d7ddœdeej                  j                  ee	e
f   f   dej                  j                  dedee	eej                  ej                  j                  f   f   dd	d
ee   deeee
df   ee	e
f   f      deee	eej                  eej*                  j,                  f   f      deeee         fd„Ze ed¬«      d„ «       «       Ze ed¬«      d„ «       «       Ze ed¬«      d„ «       «       Ze ed¬«      d„ «       «       Z ed¬«      de ej                  j                     fd„«       Z! ed¬«      de ee	ej                  j                  f      fd„«       Z" ed¬«      de ej                     fd„«       Z# ed¬«      de ee	ej                  f      fd„«       Z$e ed¬«      d„ «       «       Z%e ed¬«      d„ «       «       Z&e ed¬«      d„ «       «       Z'e ed¬«      d„ «       «       Z(e ed¬«      de
fd„«       «       Z)e ed¬«      de	fd „«       «       Z*e ed¬«      d!„ «       «       Z+e ed¬«      d"„ «       «       Z,e ed¬«      d#„ «       «       Z-d$„ Z.d%e
d&e
de
fd'„Z/d%e
d&e
de
fd(„Z0d)„ Z1de	fd*„Z2dej                  j                  fd+„Z3d,„ Z4e5	 	 d8d-eeejl                  jn                  e8f      d.eejl                  jr                  df   dd fd/„«       Z:d0e;dd fd1„Z<d2„ Z= ed¬«      d3„ «       Z>e?d4„ «       Z@ddd5œ	 d9d6„ZAy):r7   aÄ  
    Package of a program from :func:`export`. It contains
    an :class:`torch.fx.Graph` that represents Tensor computation, a state_dict containing
    tensor values of all lifted parameters and buffers, and various metadata.

    You can call an ExportedProgram like the original callable traced by
    :func:`export` with the same calling convention.

    To perform transformations on the graph, use ``.module`` property to access
    an :class:`torch.fx.GraphModule`. You can then use
    `FX transformation <https://pytorch.org/docs/stable/fx.html#writing-transformations>`_
    to rewrite the graph. Afterwards, you can simply use :func:`export`
    again to construct a correct ExportedProgram.
    N)Ú	verifiersr1  rË   r×   r2  r3  úDict[sympy.Symbol, Any]r(  r4  .rØ   r;  c	                ó$  — t         j                  j                  j                  «       |_        t        ||«      | _        t        |t         j                  j                  «      r/| j                  j                  j                  |j                  «       t        | j                  ||«       || _        || _        || _        |€J ‚|| _        || _        |xs i | _        |	xs t$        g}	t'        d„ |	D «       «      sJ ‚|	| _        | j+                  «        y )Nc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr@   )rd   r    )Ú.0r  s     rG   ú	<genexpr>z+ExportedProgram.__init__.<locals>.<genexpr>¹  s   è ø€ Ò>¨q”:˜a¤×*Ñ>ùs   ‚)rj   rë   rË   ÚCodeGenrÒ   Ú_create_graph_module_for_exportÚ_graph_moduler·   r%  rÎ   rŒ   r.  Ú_graph_signatureÚ_state_dictÚ_range_constraintsÚ_module_call_graphÚ_example_inputsÚ
_constantsr    ÚallÚ
_verifiersÚvalidate)
rB   r1  rË   r×   r2  r3  r(  r4  rØ   r;  s
             rG   Ú__init__zExportedProgram.__init__—  så   € ô  Ÿ™Ÿ™×/Ñ/Ó1ˆŒÜ<¸TÀ5ÓIˆÔÜ�dœEŸH™H×0Ñ0Ô1Ø×Ñ×#Ñ#×*Ñ*¨4¯9©9Ô5ä(Ø×Ñ Ð1Bô	
ð 7FˆÔØ+5ˆÔØCTˆÔØ Ð,Ð,Ð,Ø9JˆÔØ-ˆÔà#š/ rˆŒàÒ+¤( ˆ	ÜÑ>°IÔ>Ô>Ð>Ð>Ø#ˆŒà�‰�rI   F)Úis_backward_compatiblec                 ó   — | j                   S r@   )rC  ©rB   s    rG   rÝ   zExportedProgram.graph_module¾  s   € ð ×!Ñ!Ð!rI   c                 ó.   — | j                   j                  S r@   )rÝ   rË   rP  s    rG   rË   zExportedProgram.graphÃ  s   € ð × Ñ ×&Ñ&Ð&rI   c                 ó   — | j                   S r@   )rD  rP  s    rG   r×   zExportedProgram.graph_signatureÈ  s   € ð ×$Ñ$Ð$rI   c                 ó   — | j                   S r@   )rE  rP  s    rG   r2  zExportedProgram.state_dictÍ  s   € ð ×ÑÐrI   rb   c              #   óD   K  — | j                  «       D ]	  \  }}|–— Œ y­w)zH
        Returns an iterator over original module's parameters.
        N)Únamed_parameters)rB   r‚   Úparams      rG   Ú
parameterszExportedProgram.parametersÒ  s)   è ø€ ð
 ×-Ñ-Ó/ò 	‰HˆAˆuØ‹Kñ	ùó   ‚ c              #   óh   K  — | j                   j                  D ]  }|| j                  |   f–— Œ y­w)z—
        Returns an iterator over original module parameters, yielding
        both the name of the parameter as well as the parameter itself.
        N)r×   rW  r2  )rB   Ú
param_names     rG   rU  z ExportedProgram.named_parametersÚ  s7   è ø€ ð ×.Ñ.×9Ñ9ò 	:ˆJØ˜dŸo™o¨jÑ9Ð9Ó9ñ	:ùs   ‚02c              #   óD   K  — | j                  «       D ]	  \  }}|–— Œ y­w)zC
        Returns an iterator over original module buffers.
        N)rÞ   )rB   r‚   Úbufs      rG   ÚbufferszExportedProgram.buffersã  s)   è ø€ ð
 ×(Ñ(Ó*ò 	‰FˆAˆsØ‹Iñ	ùrX  c              #   óÖ   K  — t        | j                  j                  «      }| j                  j                  D ]-  }||v r|| j                  |   f–— Œ|| j
                  |   f–— Œ/ y­w)zŽ
        Returns an iterator over original module buffers, yielding
        both the name of the buffer as well as the buffer itself.
        N)rƒ   r×   Únon_persistent_buffersr]  rØ   r2  )rB   r_  Úbuffer_names      rG   rÞ   zExportedProgram.named_buffersë  sm   è ø€ ô "% T×%9Ñ%9×%PÑ%PÓ!QÐØ×/Ñ/×7Ñ7ò 	@ˆKØÐ4Ñ4Ø! 4§>¡>°+Ñ#>Ð>Ó>à! 4§?¡?°;Ñ#?Ð?Ó?ñ		@ùs   ‚A'A)c                 ó   — | j                   S r@   )rF  rP  s    rG   r3  z!ExportedProgram.range_constraintsø  ó   € ð ×&Ñ&Ð&rI   c                 ó   — | j                   S r@   )rG  rP  s    rG   r(  z!ExportedProgram.module_call_graphý  rb  rI   c                 ó   — | j                   S r@   )rH  rP  s    rG   r4  zExportedProgram.example_inputs  s   € ð ×#Ñ#Ð#rI   c                 ó6  — t        dddg«      }t        | j                  «      dk(  r
 |d d ¬«      S | j                  d   j                  dk(  sJ ‚ || j                  d   j                  j
                  | j                  d   j                  j                  ¬«      S )NÚCallSpecr=   r>   r   )r=   r>   Ú )r   rv   r(  rR   rS   r=   r>   )rB   rf  s     rG   Ú	call_speczExportedProgram.call_spec  s•   € ô ˜j¨9°jÐ*AÓBˆäˆt×%Ñ%Ó&¨!Ò+Ù D°4Ô8Ð8Ø×%Ñ% aÑ(×,Ñ,°Ò2Ð2Ð2ÙØ×*Ñ*¨1Ñ-×7Ñ7×?Ñ?Ø×+Ñ+¨AÑ.×8Ñ8×AÑAô
ð 	
rI   c                 ó    — | j                   d   S ©Nr   ©rK  rP  s    rG   rÈ   zExportedProgram.verifier  s   € ð �‰˜qÑ!Ð!rI   c                 óP   — | j                   €J ‚| j                   d   j                  S rj  )rK  rÉ   rP  s    rG   rÉ   zExportedProgram.dialect  s)   € ð �‰Ð*Ð*Ð*Ø�‰˜qÑ!×)Ñ)Ð)rI   c                 ó   — | j                   S r@   rk  rP  s    rG   r;  zExportedProgram.verifiers  ó   € ð �‰ÐrI   c                 ó   — | j                   S r@   ©rI  rP  s    rG   Útensor_constantsz ExportedProgram.tensor_constants$  rn  rI   c                 ó   — | j                   S r@   rp  rP  s    rG   rØ   zExportedProgram.constants)  rn  rI   c                 óÌ   — | j                   j                  }|�t        ||«      }t        j                  ||f«      \  }}| j                  |«       t        d„ |D «       «      }||fS )a®  Flatten args, kwargs using pytree, then, check specs.

        Args:
            args: List[Any] original args passed to __call__
            kwargs: Dict[str, Any] original kwargs passed to __call

        Returns:
            A tuple of (flat_args, received_spec)
            flat_args is flattend args / kwargs
            received_spec is the pytree spec produced while flattening the
            tuple (args, kwargs)
        c              3   ó&   K  — | ]	  }|d    –— Œ y­w)r+   NrP   )r?  Úxs     rG   r@  z<ExportedProgram._get_flat_args_with_check.<locals>.<genexpr>B  s   è ø€ Ò< 1˜!˜A�$Ñ<ùs   ‚)rh  r=   r'   rN   Útree_flatten_with_pathÚ_check_input_constraintsrÕ   )rB   rW   rX   r=   Úflat_args_with_pathÚreceived_specÚ	flat_argss          rG   Ú_get_flat_args_with_checkz)ExportedProgram._get_flat_args_with_check.  so   € ð —.‘.×(Ñ(ˆØÐÜ# F¨GÓ4ˆFÜ-3×-JÑ-JØ�6ˆNó.
Ñ*Ð˜]ð 	×%Ñ%Ð&9Ô:ÜÑ<Ð(;Ô<Ó<ˆ	Ø˜-Ð'Ð'rI   rW   rX   c                 óü  — | j                   j                  }| j                  ||«      \  }}|�"t        ||t        «      st        d|› d|› �«      ‚g }| j                  j                  D �]  }|j                  t        j                  k(  rŒ"|j                  t        j                  t        j                  fv r`|j                  du r)|j                  | j                  |j                      «       Œ…|j                  | j"                  |j                      «       Œ®|j                  t        j$                  t        j&                  fv sŒÛ|j                  | j                  |j                      «       �Œ t)        |«      }||z   S )a,  Transform args, kwargs of __call__ to args for graph_module.

        self.graph_module takes stuff from state dict as inputs.
        The invariant is for ep: ExportedProgram is
        ep(args, kwargs) ==
          ep.postprocess(ep.graph_module(ep.graph_module_flat_inputs(args, kwargs)))
        z>Trying to flatten user inputs with exported input tree spec: 
z-
but actually got inputs with tree spec of: 
F)rh  r=   r{  r&   rg   Ú
ValueErrorr×   rÂ   rî   r0   rö   rô   ÚBUFFERrï   rÍ   rØ   rã   r2  ÚCONSTANT_TENSORÚ
CUSTOM_OBJrÕ   )rB   rW   rX   r=   rz  ry  Úadditional_inputsÚinput_s           rG   Ú_graph_module_flat_inputsz)ExportedProgram._graph_module_flat_inputsE  sf  € ð —.‘.×(Ñ(ˆØ#'×#AÑ#AÀ$ÈÓ#OÑ ˆ	�=ØÐ¤}Ø˜7Ô$Aô(
ô ØQØ�)ð @à �/ð#óð ð ÐØ×*Ñ*×6Ñ6ó 	HˆFØ�{‰{œi×2Ñ2Ò2ØØ—‘Ü×#Ñ#Ü× Ñ ð!ñ ð ×$Ñ$¨Ñ-ð &×,Ñ,¨T¯^©^¸F¿M¹MÑ-JÕKà%×,Ñ,¨T¯_©_¸V¿]¹]Ñ-KÕLØ—‘Ü×)Ñ)Ü×$Ñ$ð!ò ð "×(Ñ(¨¯©¸¿¹Ñ)FÖGð#	Hô$ "Ð"3Ó4Ðð ! 9Ñ,Ð,rI   c                 ó   — t        d«      ‚)Nz\Unable to call ExportedProgram directly. You should use `exported_program.module()` instead.)rt   )rB   rW   rX   s      rG   Ú__call__zExportedProgram.__call__s  s   € ÜðBó
ð 	
rI   c           	      ó:  ‡— ddl mc m} | j                  ||«      \  }}| j                  j
                  ��ß| j                  j                  }| j                  j                  }t        |«      t        |«      z   }	|d|	 }
| j                  j                  }|�'t        t        |j                  «       «      «      }|d| }||	d }	 t        j                  || j                  j
                  «      }	 | j                  j&                  D �cg c]!  }|j(                  t*        j,                  k(  r|‘Œ# }}t/        |
«      D ]×  \  }}| j                  j0                  |   Š‰j(                  t2        j4                  k(  r(‰j6                  €J ‚|| j8                  ‰j6                  <   Œd‰j(                  t2        j:                  k(  r@‰j6                  €J ‚t        ˆfd„t/        |«      D «       «      }||   j=                  |«       ŒÁt?        d‰j(                  › �«      ‚ |S |S # t         $ rD t        j"                  |«      \  }}|j%                  d| j                  j
                  › d|› �«      ‚w xY wc c}w # | j                  j&                  D �cg c]!  }|j(                  t*        j,                  k(  r|‘Œ# nc c}w }}t/        |
«      D ]×  \  }}| j                  j0                  |   Š‰j(                  t2        j4                  k(  r(‰j6                  €J ‚|| j8                  ‰j6                  <   Œd‰j(                  t2        j:                  k(  r@‰j6                  €J ‚t        ˆfd„t/        |«      D «       «      }||   j=                  |«       ŒÁt?        d‰j(                  › �«      ‚ w xY w)z±Process potential mutations to the input.

        Because self.graph_module is functional, so mutations has to be written
        back after execution of graph_module.
        r   Nz@Trying to flatten user outputs with exported output tree spec: 
z.
but actually got outputs with tree spec of: 
c              3   ón   •K  — | ],  \  }}|j                   j                  ‰j                  k(  r|–— Œ. y ­wr@   )rí   rA   rã   )r?  rE   r  Úoutput_specs      €rG   r@  zDExportedProgram._postprocess_graph_module_outputs.<locals>.<genexpr>¦  s3   øè ø€ ò %á '  4Ø#Ÿx™xŸ}™}°×0BÑ0BÒBô ñ%ùs   ƒ25zUnexpected kind: ) Útorch._export.errorÚ_exportÚerrorr{  rh  r>   r×   r  Úuser_inputs_to_mutaterv   Úassertion_dep_tokenÚnextÚiterÚkeysrN   rÏ   Ú	Exceptionr  ÚInternalErrorrÂ   rî   r0   rö   rê   rÃ   r2   ÚBUFFER_MUTATIONrã   r2  ÚUSER_INPUT_MUTATIONÚcopy_rø   )rB   ÚresrÔ   Úorig_kwargsr‹  rz  r‚   Úbuffer_mutationÚuser_input_mutationÚnum_mutatedÚmutated_valuesr�  Úassertion_dep_token_indexry  r  ró   rE   ÚvalueÚindexrˆ  s                      @rG   Ú!_postprocess_graph_module_outputsz1ExportedProgram._postprocess_graph_module_outputsy  s‰  ø€ ÷ 	,Ð+à×5Ñ5°iÀÓM‰ˆ	�1Ø�>‰>×"Ñ"Ñ.Ø"×2Ñ2×DÑDˆOØ"&×"6Ñ"6×"LÑ"LÐÜ˜oÓ.´Ð5HÓ1IÑIˆKØ   +Ð.ˆNð #'×"6Ñ"6×"JÑ"JÐØ"Ð.Ü,0´Ð6I×6NÑ6NÓ6PÓ1QÓ,RÐ)ØÐ4Ð4Ð5�à�k�lÐ#ˆCðUÜ×+Ñ+¨C°·±×1HÑ1HÓI‘ð !%× 4Ñ 4× @Ñ @öàØ—y‘y¤I×$8Ñ$8Ò8ò ð�ð ô
 !*¨.Ó 9ò U‘H�A�uØ"&×"6Ñ"6×"CÑ"CÀAÑ"F�KØ"×'Ñ'¬:×+EÑ+EÒEØ*×1Ñ1Ð=Ð=Ð=Ø>C˜Ÿ™¨×(:Ñ(:Ò;Ø$×)Ñ)¬Z×-KÑ-KÒKØ*×1Ñ1Ð=Ð=Ð=Ü $ó %ä+4°[Ó+Aô%ó !˜ð
 " %Ñ(×.Ñ.¨uÕ5ä,Ð/@À×AQÑAQÐ@RÐ-SÓTÐTðUð ˆ
ˆsˆ
øô; ò Ü#)×#6Ñ#6°sÓ#;Ñ ��=Ø×)Ñ)ØWØ—~‘~×.Ñ.Ð/ð 0Eà$�oð'óð ðüòøà $× 4Ñ 4× @Ñ @öàØ—y‘y¤I×$8Ñ$8Ò8ò ñùò �ð ô
 !*¨.Ó 9ò U‘H�A�uØ"&×"6Ñ"6×"CÑ"CÀAÑ"F�KØ"×'Ñ'¬:×+EÑ+EÒEØ*×1Ñ1Ð=Ð=Ð=Ø>C˜Ÿ™¨×(:Ñ(:Ò;Ø$×)Ñ)¬Z×-KÑ-KÒKØ*×1Ñ1Ð=Ð=Ð=Ü $ó %ä+4°[Ó+Aô%ó !˜ð
 " %Ñ(×.Ñ.¨uÕ5ä,Ð/@À×AQÑAQÐ@RÐ-SÓTÐTñUús,   Ã*H Ä&I(ÈAI%É%I- É-NÊ&J-Ê,C.Nc                 ó    — | j                   j                  dd¬«      j                  dd«      }d|› d| j                  › d| j                  › d�}|S )NF)Úprint_outputÚcoloredú
z
    zExportedProgram:
    z
Graph signature: z
Range constraints: )rÝ   Úprint_readableÚreplacer×   r3  )rB   rÝ   Ústrings      rG   Ú__str__zExportedProgram.__str__°  sp   € Ø×(Ñ(×7Ñ7Ø¨ð 8ó 
ç
‰'�$˜Ó
!ð 	ðØ�.ð ! Ø $× 4Ñ 4Ð5ð 6"Ø"&×"8Ñ"8Ð!9¸ð=ð 	ð ˆrI   c                 óº   — ddl m}  || «      }ddt        fd„}ddt        fd„}t        j                  ||«      |_        t        j                  ||«      |_        |S )z_
        Returns a self contained GraphModule with all the parameters/buffers inlined.
        r+   )Ú&_unlift_exported_program_lifted_statesÚmodec                 ó   — t        d«      ‚)Nz%Calling train() is not supported yet.©ÚNotImplementedError©rB   rª  s     rG   Ú_trainz&ExportedProgram.module.<locals>._trainÄ  s   € Ü%Ð&MÓNÐNrI   c                 ó   — t        d«      ‚)Nz$Calling eval() is not supported yet.r¬  r®  s     rG   Ú_evalz%ExportedProgram.module.<locals>._evalÇ  s   € Ü%Ð&LÓMÐMrI   ©T)Ú_unliftr©  ÚboolÚtypesÚ
MethodTypeÚtrainÚeval)rB   r©  rÊ   r¯  r±  s        rG   rÊ   zExportedProgram.module¼  s]   € õ 	Dá7¸Ó=ˆñ	Oœtó 	Oñ	Nœdó 	Nô ×'Ñ'¨°Ó7ˆŒÜ×&Ñ& u¨fÓ5ˆŒØˆrI   c                 óœ   — t        d„ t        | j                  j                  «      D «       t	        | j                  j                  «      «      S )Nc              3   ó`   K  — | ]&  \  }}|j                   t        j                  k(  r|–— Œ( y ­wr@   )rî   r0   rö   )r?  rE   Úss      rG   r@  z=ExportedProgram._num_lifted_params_buffers.<locals>.<genexpr>Ð  s.   è ø€ ò á�A�qØ—6‘6œY×1Ñ1Ò1ô ñùs   ‚,.)rŽ  rê   rD  rÂ   rv   rP  s    rG   Ú_num_lifted_params_buffersz*ExportedProgram._num_lifted_params_buffersÎ  sC   € Üñä% d×&;Ñ&;×&GÑ&GÓHôô
 �×%Ñ%×1Ñ1Ó2ó
ð 	
rI   r�   r    c                 ó>   — ddl m} |€ |«       }t        | ||d¬«      S )aU  
        Run a set of decompositions on the exported program and returns a new
        exported program. By default we will run the Core ATen decompositions to
        get operators in the
        `Core ATen Operator Set <https://pytorch.org/docs/stable/torch.compiler_ir.html>`_.

        For now, we do not decompose joint graphs.
        r   )Úcore_aten_decompositionsNr0  )Útorch._decompr¾  r9  )rB   r�   r    r¾  s       rG   Úrun_decompositionsz"ExportedProgram.run_decompositionsØ  s.   € õ 	;àÐÙ3Ó5ˆLä*ØØ%Ø'Ø!ô	
ð 	
rI   Úpassesc                 óT  — t        t        |«      «      }ddlm}  |«       5   || j                  «      }d d d «       �|j                  n| j                  }|€J ‚|| j                  u r|j
                  s| S dt        dt        j                  j                  dt        fd„}t        ||j                   || j                  |«      | j                  t        || j                  «      t!        j"                  | j$                  «      | j&                  | j(                  | j*                  ¬«	      }|j                  j,                  j/                  | j                  j,                  «       |j                  j,                  j/                  |j                  j,                  «       |S # 1 sw Y   �ŒjxY w)Nr   )r§   Úold_signatureÚnew_gmrb   c           	      ó  — g }t        |j                  j                  «      D ]Ð  \  }}|j                  dk7  r n¼|t	        | j
                  «      k  sJ d«       ‚| j
                  |   }t        |j                  t        t        f«      r|j                  n$ t        |j                  «      |j                  «      }|j                  t        |j                  ||j                  |j                   «      «       ŒÒ t#        |j                  j                  «      d   }|j                  dk(  sJ ‚g }t        |j$                  d   «      D ]´  \  }}|t	        | j&                  «      k  sJ d«       ‚| j&                  |   }	t        |	j                  t        t        f«      r|	j                  n$ t        |	j                  «      |j                  «      }|j                  t)        |	j                  ||	j                  «      «       Œ¶ t+        ||¬«      }
|
S )zO
            Update the graph signature's user_input/user_outputs.
            r­   z-Number of inputs changed after transformationr¼   r  r   z.Number of outputs changed after transformationrÁ   )rê   rË   rÌ   r–   rv   rÂ   r·   rí   r-   r.   r¸   rA   rÍ   r1   rî   rã   rï   rf   rW   rÃ   r3   r/   )rÃ  rÄ  Únew_input_specsrE   rÿ   Úold_input_specrí   Úoutput_nodeÚnew_output_specsÚold_output_specÚnew_signatures              rG   Ú_get_updated_graph_signaturezKExportedProgram._transform_do_not_use.<locals>._get_updated_graph_signature  s  € ð !ˆOÜ$ V§\¡\×%7Ñ%7Ó8ò ‘��4Ø—7‘7˜mÒ+Ùàœ3Ø!×-Ñ-óò ð CàBóCð ð "/×!:Ñ!:¸1Ñ!=�ô "Ø&×*Ñ*Ô-=Ô?PÐ,Qôð #×&Ò&ð 2œ˜n×0Ñ0Ó1°$·)±)Ó<ð ð  ×&Ñ&ÜØ&×+Ñ+ØØ&×-Ñ-Ø&×1Ñ1ó	õðô0 ˜vŸ|™|×1Ñ1Ó2°2Ñ6ˆKØ—>‘> XÒ-Ð-Ð-à!ÐÜ$ [×%5Ñ%5°aÑ%8Ó9ò ‘��4Øœ3Ø!×.Ñ.óò ð DàCóDð ð #0×"<Ñ"<¸QÑ"?�ô "Ø'×+Ñ+Ô.>Ô@QÐ-Rôð $×'Ò'ð 3œ˜o×1Ñ1Ó2°4·9±9Ó=ð ð !×'Ñ'Ü˜×3Ñ3°S¸/×:PÑ:PÓQõðô  1Ø+Ð:JôˆMð !Ð rI   ©	r1  rË   r×   r2  r3  r(  r4  rØ   r;  )r*   rf   rÆ   r§   rÝ   Úmodifiedr/   rj   rë   r%  r7   rË   r×   r2  r5  r3  r…   r6  rG  r4  rØ   r;  rÎ   rŒ   )rB   rÁ  Úpmr§   r–  Útransformed_gmrÌ  Útransformed_eps           rG   Ú_transform_do_not_usez%ExportedProgram._transform_do_not_useò  so  € Üœ˜f›Ó&ˆõ 	@á$Ó&ñ 	(Ù�T×&Ñ&Ó'ˆC÷	(à-0¨_˜×)Ò)À$×BSÑBSˆØÐ)Ð)Ð)à˜T×.Ñ.Ñ.°s·|²|ØˆKð7	!Ü/ð7	!ä—H‘H×(Ñ(ð7	!ô "ó7	!ôr )ØØ ×&Ñ&Ù8Ø×$Ñ$ nóð —‘Ü<ØØ×&Ñ&óô #Ÿm™m¨D×,CÑ,CÓDØ×.Ñ.Ø—n‘nØ—n‘nô
ˆð  	×#Ñ#×(Ñ(×/Ñ/°×0AÑ0A×0FÑ0FÔGØ×#Ñ#×(Ñ(×/Ñ/°×0@Ñ0@×0EÑ0EÔFØÐ÷i	(ñ 	(ús   ¢FÆF'c                 óR  — ddl m} | j                  j                  D �cg c]  }|j                  dk(  sŒ|‘Œ }}t        || j                  j                  «      D ��cg c]$  \  }}|j                  t        j                  k(  r|‘Œ& }}} |||| j                  «       y c c}w c c}}w )Nr   )Ú"_check_input_constraints_for_graphr­   )Útorch._export.utilsrÔ  rË   rÌ   r–   râ   r×   rÂ   rî   r0   rö   r3  )rB   rx  rÔ  ÚpÚplaceholdersr»  Úinput_placeholderss          rG   rw  z(ExportedProgram._check_input_constraintsN  s™   € ÝJà#'§:¡:×#3Ñ#3ÖM˜a°q·t±t¸}Ó7LšÐMˆÐMô ˜L¨$×*>Ñ*>×*JÑ*JÓK÷
á��1Ø�v‰vœ×-Ñ-Ò-ò ð
Ðñ 
ñ
 	+ØÐ 3°T×5KÑ5Kõ	
ùò Nùó
s   ŸB´BÁ)B#c                 ó$   — | j                  «        y r@   )Ú	_validaterP  s    rG   rL  zExportedProgram.validate[  s   € à�‰ÕrI   c                 ó�   — t        | j                  «      dkD  sJ d«       ‚| j                  D ]  } |«       j                  | «       Œ y )Nr   z0ExportedProgram must have at least one verifier.)rv   r;  Úcheck)rB   r  s     rG   rÚ  zExportedProgram._validate`  sE   € ô �—‘Ó !Ò#ð	>à=ó	>Ø#à—‘ò 	ˆAÙ‹C�I‰I�d�Oñ	rI   )r2  r;  c                ó  — t        ||j                  ||�|n| j                  t        j                  | j
                  «      t        j                  | j                  «      | j                  | j                  |�|¬«	      S | j                  ¬«	      S )NrÍ  )
r7   rË   r2  r…   r6  r3  rG  r4  rØ   r;  )rB   rÝ   r×   r2  r;  s        rG   Ú_updatezExportedProgram._updatei  s~   € ô ØØ×$Ñ$Ø+Ø%/Ð%;‘zÀÇÁÜ"Ÿm™m¨D×,BÑ,BÓCÜ"Ÿm™m¨D×,CÑ,CÓDØ×.Ñ.Ø—n‘nØ#,Ð#8�iô

ð 
	
ð ?C¿n¹nô

ð 
	
rI   )NN)NrP   )rb   r7   )BrJ   rK   rL   Ú__doc__r   rj   ÚnnÚModuler   rT   r   rë   ÚGraphr/   rù   Ú	Parameterr
   r8   r   r   r   rk   ÚScriptObjectr   r    rM  Úpropertyr(   rÝ   rË   r×   r2  r	   rW  rU  r]  rÞ   r3  r(  r4  rh  rÈ   rÉ   r;  rq  rØ   r{  rƒ  r…  rŸ  r§  rÊ   r¼  r]   Ú_opsÚOperatorBaser   Ú
OpOverloadrÀ  ÚPassTyperÒ  rw  rL  r   rÚ  rÞ  rP   rI   rG   r7   r7   ‡  sË  „ ñð. LPð ð%ð 59ò%à�E—H‘H—O‘O T¨#¨s¨(¡^Ð3Ñ4ð%ð �x‰x�~‰~ð%ð .ð	%ð
 ˜˜e E§L¡L°%·(±(×2DÑ2DÐ$DÑEÐEÑFð%ð 5ð%ð   Ñ0ð%ð !  u¨S°#¨X¡¸¸SÀ#¸X¹Ð'FÑ!GÑHð%ð Ø��e˜EŸL™LÐ*:¸E¿H¹H×<QÑ<QÐQÑRÐRÑSñ
ð%ð ˜D  h¡Ñ0Ñ1ó%ðN Ù¨%Ô0ñ"ó 1ó ð"ð Ù¨%Ô0ñ'ó 1ó ð'ð Ù¨%Ô0ñ%ó 1ó ð%ð Ù¨%Ô0ñ ó 1ó ð ñ ¨%Ô0ð˜H U§X¡X×%7Ñ%7Ñ8ò ó 1ðñ ¨%Ô0ð: (¨5°°e·h±h×6HÑ6HÐ1HÑ+IÑ"Jò :ó 1ð:ñ ¨%Ô0ð˜ %§,¡,Ñ/ò ó 1ðñ ¨%Ô0ð
@˜x¨¨c°5·<±<Ð.?Ñ(@ÑAò 
@ó 1ð
@ð Ù¨%Ô0ñ'ó 1ó ð'ð Ù¨%Ô0ñ'ó 1ó ð'ð Ù¨%Ô0ñ$ó 1ó ð$ð Ù¨%Ô0ñ	
ó 1ó ð	
ð Ù¨%Ô0ð"˜#ò "ó 1ó ð"ð Ù¨%Ô0ð*˜ò *ó 1ó ð*ð Ù¨%Ô0ñó 1ó ðð Ù¨%Ô0ñó 1ó ðð Ù¨%Ô0ñó 1ó ðò(ð.,-¨cð ,-¸3ð ,-À3ó ,-ð\
˜cð 
¨Sð 
°Só 
ò5ðn
˜ó 
ð˜Ÿ™Ÿ™ó ò$
ð $ð KOØ;=ñ
à˜t E§J¡J×$;Ñ$;¸XÐ$EÑFÑGð
ð ˜UŸZ™Z×2Ñ2°CÐ7Ñ8ð
ð 
ò	
ó $ð
ð2Z¨Xð ZÐ:Kó Zòx
ñ ¨%Ô0ñó 1ðð ñó ðð <@È4ñ
à	ô
rI   r7   c                 óP  — | j                   j                  D �cg c]-  }|j                  j                  dd «      �|j                  d   ‘Œ/ }}ddlm}  ||«      }|�|j                  S |D ]4  }t        |t        j                  «      sŒ|j                  j                  c S  y c c}w )Nr®   r   r!   )rË   rÌ   rÎ   rð   Útorch._guardsr"   r¯   r·   rj   ÚSymIntrÿ   )rÚ   rÿ   Úvalsr"   r  r  s         rG   ré   ré   y  sš   € ð —H‘H—N‘NöàØ�9‰9�=‰=˜ Ó%Ð1ð 	�	‰	�%Óð€Dð õ
 /á  Ó&€IØÐØ×"Ñ"Ð"Øò $ˆÜ�aœŸ™Õ&Ø—6‘6×#Ñ#Ò#ñ$ùòs   ™2B#Úold_range_constraintsz!Optional[Dict[sympy.Symbol, Any]]r<  c                 ó<  — |€J ‚t        | «      }|€i S t        j                  |«      }|j                  «       D ��ci c]  \  }}||j                  vsŒ||“Œ }}}|j                  j                  «       D ]  \  }}||j                  vsŒ||vsŒ|||<   Œ  |S c c}}w r@   )ré   r…   rŽ   ÚreplacementsÚvar_to_range)rÚ   rî  r¯   r3  r  r  s         rG   r5  r5  ‰  sÀ   € ð !Ð,Ð,Ð,ä˜rÓ"€IØÐØˆ	äŸ	™	Ð"7Ó8Ðà*×0Ñ0Ó2÷Ù��A°a¸y×?UÑ?UÒ6Uˆˆ1‰ðÐñ ð ×&Ñ&×,Ñ,Ó.ò %‰ˆˆ1Ø�I×*Ñ*Ò*¨qÐ8IÒ/IØ#$Ð˜aÒ ð%ð Ðùós   ¼BÁBc                 ó  — 	 t         j                  j                  | |«      }|S # t        $ r\ t	        j
                  d«       t         j                  j                  | t         j                  j                  «       «      }||_        Y |S w xY w)NzóUnable to execute the generated python source code from the graph. The graph module will no longer be directly callable, but you can still run the ExportedProgram, and if needed, you can run the graph module eagerly using torch.fx.Interpreter.)rj   rë   r%  ÚSyntaxErrorÚwarningsÚwarnrâ  Ú_graph)r1  rË   rÚ   s      rG   rB  rB     sx   € ðÜ�X‰X×!Ñ! $¨Ó.ˆð  €Iøô ò ô 	�‰ðGô	
ô �X‰X×!Ñ! $¬¯©¯©Ó(8Ó9ˆØˆ�	à€Iðús   ‚ $ ¤A!B	ÂB	r²  r@   ){rà   r…   Údataclassesr[   r&  rµ  rô  Úcollectionsr   r   Útypingr   r   r   r   r	   r
   r   r   r   r   r   Útorch._higher_order_ops.utilsr   Ú"torch._library.fake_class_registryr   Útorch.fx._utilsr   Útorch.fx.graphr   r   Útorch.fx.immutable_collectionsr   r   Útorch.fx.passes.runtime_assertr   ÚsympyÚtorch.utils._sympy.value_rangesr   rj   Útorch.utils._pytreeÚutilsÚ_pytreerN   rÕ  r   r   r   r   r   r   r   Útorch._export.verifierr    rë  r"   rÅ   r$   Ú#torch._subclasses.functional_tensorr%   Útorch.export._tree_utilsr&   r'   Útorch.fx._compatibilityr(   Útorch.fx.passes.infra.pass_baser)   Ú"torch.fx.passes.infra.pass_managerr*   r×   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   Ú__all__rë   r%  ré  Ú	dataclassr9   r8   r]   r¸   ÚContextr´  rg   rp   rk   rm   ÚAutogradCPUÚAutogradCUDAÚAutogradMetaÚAutogradXLAÚAutogradLazyÚAutogradIPUÚAutogradXPUÚAutogradMPSÚAutogradHPUÚAutogradPrivateUse1ÚAutogradPrivateUse2ÚAutogradPrivateUse3r‡   r˜   rŸ   ræ  rç  rè  Úintr  rÜ   r.  r9  r7   ré   r5  rB  rP   rI   rG   ú<module>r     s¦  ðó Û Û Û Û Û Û Ý "Ý %÷÷ ÷ ñ õ CÝ ?Ý ?ß 6ß IÝ Jñ ó
 å;ã ß $Ð $÷÷ ñ õ ,Ý *Ý @Ý @ß BÝ 1Ý 6Ý :÷÷ ÷ ñ ò€ð �U—X‘X×)Ñ)Ð*¨H°ZÑ,@Ð@ÑA€ð ×Ñ÷'ð 'ó ð'ð ×Ñ÷4ð 4ó ð4ò
ðGØ˜‘ðGà—>‘>ðGð ˜‘ðGð —>‘>ð	Gð
 
óGò2
ð" 
‡H�H×Ñ×$Ñ$Ø	‡H�H×Ñ×%Ñ%Ø	‡H�H×Ñ×%Ñ%Ø	‡H�H×Ñ×$Ñ$Ø	‡H�H×Ñ×%Ñ%Ø	‡H�H×Ñ×$Ñ$Ø	‡H�H×Ñ×$Ñ$Ø	‡H�H×Ñ×$Ñ$Ø	‡H�H×Ñ×$Ñ$Ø	‡H�H×Ñ×,Ñ,Ø	‡H�H×Ñ×,Ñ,Ø	‡H�H×Ñ×,Ñ,ð,Ð (ð  òb&ó ðb&ðJ ñ	ó ð	ðF#ð �u—z‘z×.Ñ.°Ð8Ñ9ðF#ð ˜Ÿ™×.Ñ.Ñ/ð	F#ð
 ˜s‘móF#ðR#Ø�‰×Ñð#Ø3Gð#à
ˆ5�8‰8×ÑÐ!5Ð5Ñ6ó#ð2.Ø�‰×Ñó.ð:"ð �u—z‘z×.Ñ.°Ð8Ñ9ð"ð ˜Ÿ™×.Ñ.Ñ/ð	"ð
 ˜s‘mó"÷Jo
ñ o
òd$ð$ BFñØ�‰×Ñðà>ðð óó.rI   