
    קgS                        d dl Z d dlmZmZ d dlmZmZmZmZm	Z	m
Z
mZmZ d dlmZ er
d dlZd dlmZ g dZe j         G d d                      Ze j         G d	 d
                      Ze j         G d d                      Ze j         G d d                      Ze j         G d d                      Zeeeeeef         Z G d de          Ze j         G d d                      Z G d de          Ze j         G d d                      Ze j         G d d                      Ze j         G d d                      Zd Z defdZ!d d!d"d#d$e
e"         ddfd%Z#dS )&    N)autoEnum)
CollectionDictListMappingOptionalSetTYPE_CHECKINGUnionFakeScriptObject)GraphSignature)
ConstantArgumentCustomObjArgumentExportBackwardSignatureExportGraphSignature	InputKind	InputSpec
OutputKind
OutputSpecSymIntArgumentTensorArgumentc                       e Zd ZU eed<   dS )r   nameN__name__
__module____qualname__str__annotations__     X/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/export/graph_signature.pyr   r               
IIIIIr#   r   c                       e Zd ZU eed<   dS )TokenArgumentr   Nr   r"   r#   r$   r'   r'       r%   r#   r'   c                       e Zd ZU eed<   dS )r   r   Nr   r"   r#   r$   r   r   %   r%   r#   r   c                   >    e Zd ZU eed<   eed<   dZee         ed<   dS )r   r   	class_fqnNfake_val)r   r   r   r    r!   r+   r	   r   r"   r#   r$   r   r   *   s:         
IIINNN+/Hh'(/////r#   r   c                   :    e Zd ZU eed<   eeeeedf         ed<   dS )r   r   Nvalue)	r   r   r   r    r!   r   intfloatboolr"   r#   r$   r   r   1   s7         
IIIeT3,------r#   r   c                       e Zd Z e            Z e            Z e            Z e            Z e            Z e            Z	dS )r   N)
r   r   r   r   
USER_INPUT	PARAMETERBUFFERCONSTANT_TENSOR
CUSTOM_OBJTOKENr"   r#   r$   r   r   @   sP        JITVVFdffOJDFFEEEr#   r   c                   Z    e Zd ZU eed<   eed<   ee         ed<   dZee	         ed<   d Z
dS )r   kindargtargetN
persistentc                     | j         t          j        k    r| j        
J d            t	          | j        t          t          t          t          t          f          sJ dt          | j                               d S )Nz,Failed to specify persistent flag on BUFFER.zgot )r9   r   r4   r<   
isinstancer:   r   r   r   r   r'   typeselfs    r$   __post_init__zInputSpec.__post_init__P   s    9	(((++= ,++H !	
 	
 		# 		# #$tx..""		# 		# 		# 		# 		#r#   )r   r   r   r   r!   ArgumentSpecr	   r    r<   r0   rB   r"   r#   r$   r   r   I   s^         
OOO	SM!%J%%%# # # # #r#   r   c                       e Zd Z e            Z e            Z e            Z e            Z e            Z e            Z	 e            Z
dS )r   N)r   r   r   r   USER_OUTPUTLOSS_OUTPUTBUFFER_MUTATIONGRADIENT_TO_PARAMETERGRADIENT_TO_USER_INPUTUSER_INPUT_MUTATIONr7   r"   r#   r$   r   r   a   s^        $&&K$&&KdffO DFF!TVV$&&DFFEEEr#   r   c                   @    e Zd ZU eed<   eed<   ee         ed<   d ZdS )r   r9   r:   r;   c                     t          | j        t          t          t          t
          t          f          sJ | j                    d S N)r>   r:   r   r   r   r'   r   r@   s    r$   rB   zOutputSpec.__post_init__q   sR    H !	
 	
 		 		 8		 		 		 		 		r#   N)	r   r   r   r   r!   rC   r	   r    rB   r"   r#   r$   r   r   k   sM         
	SM
 
 
 
 
r#   r   c                   N    e Zd ZU eeef         ed<   eeef         ed<   eed<   dS )r   gradients_to_parametersgradients_to_user_inputsloss_outputN)r   r   r   r   r    r!   r"   r#   r$   r   r   ~   sF         !#s(^+++"38n,,,r#   r   c            	       Z   e Zd ZU dZee         ed<   ee         ed<   ede	e
         fd            Zede	e
         fd            Zede	e
         fd            Zede	e
         fd            Zede	e
         fd	            Zede	eeeed
e
f                  fd            Zede	eeeed
e
f                  fd            Zedee
e
f         fd            Zedee
e
f         fd            Zedee
e
f         fd            Zedee
e
f         fd            Zedee
e
f         fd            Zedee
e
f         fd            Zedee         fd            Zedeeee
f                  fd            Z ede	e
         fd            Z!ede	e
         fd            Z"ddZ#de
de
fdZ$d Z%d
S )r   a  
    :class:`ExportGraphSignature` models the input/output signature of Export Graph,
    which is a fx.Graph with stronger invariants gurantees.

    Export Graph is functional and does not access "states" like parameters
    or buffers within the graph via ``getattr`` nodes. Instead, :func:`export`
    gurantees that parameters, buffers, and constant tensors are lifted out of
    the graph as inputs.  Similarly, any mutations to buffers are not included
    in the graph either, instead the updated values of mutated buffers are
    modeled as additional outputs of Export Graph.

    The ordering of all inputs and outputs are::

        Inputs = [*parameters_buffers_constant_tensors, *flattened_user_inputs]
        Outputs = [*mutated_inputs, *flattened_user_outputs]

    e.g. If following module is exported::

        class CustomModule(nn.Module):
            def __init__(self) -> None:
                super(CustomModule, self).__init__()

                # Define a parameter
                self.my_parameter = nn.Parameter(torch.tensor(2.0))

                # Define two buffers
                self.register_buffer('my_buffer1', torch.tensor(3.0))
                self.register_buffer('my_buffer2', torch.tensor(4.0))

            def forward(self, x1, x2):
                # Use the parameter, buffers, and both inputs in the forward method
                output = (x1 + self.my_parameter) * self.my_buffer1 + x2 * self.my_buffer2

                # Mutate one of the buffers (e.g., increment it by 1)
                self.my_buffer2.add_(1.0) # In-place addition

                return output

    Resulting Graph would be::

        graph():
            %arg0_1 := placeholder[target=arg0_1]
            %arg1_1 := placeholder[target=arg1_1]
            %arg2_1 := placeholder[target=arg2_1]
            %arg3_1 := placeholder[target=arg3_1]
            %arg4_1 := placeholder[target=arg4_1]
            %add_tensor := call_function[target=torch.ops.aten.add.Tensor](args = (%arg3_1, %arg0_1), kwargs = {})
            %mul_tensor := call_function[target=torch.ops.aten.mul.Tensor](args = (%add_tensor, %arg1_1), kwargs = {})
            %mul_tensor_1 := call_function[target=torch.ops.aten.mul.Tensor](args = (%arg4_1, %arg2_1), kwargs = {})
            %add_tensor_1 := call_function[target=torch.ops.aten.add.Tensor](args = (%mul_tensor, %mul_tensor_1), kwargs = {})
            %add_tensor_2 := call_function[target=torch.ops.aten.add.Tensor](args = (%arg2_1, 1.0), kwargs = {})
            return (add_tensor_2, add_tensor_1)

    Resulting ExportGraphSignature would be::

        ExportGraphSignature(
            input_specs=[
                InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg0_1'), target='my_parameter'),
                InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg1_1'), target='my_buffer1'),
                InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg2_1'), target='my_buffer2'),
                InputSpec(kind=<InputKind.USER_INPUT: 1>, arg=TensorArgument(name='arg3_1'), target=None),
                InputSpec(kind=<InputKind.USER_INPUT: 1>, arg=TensorArgument(name='arg4_1'), target=None)
            ],
            output_specs=[
                OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add_2'), target='my_buffer2'),
                OutputSpec(kind=<OutputKind.USER_OUTPUT: 1>, arg=TensorArgument(name='add_1'), target=None)
            ]
        )
    input_specsoutput_specsreturnc                 >    t          d | j        D                       S )Nc              3      K   | ]:}|j         t          j        k    t          |j        t
                    1|j        V  ;d S rM   )r9   r   r3   r>   r;   r    .0ss     r$   	<genexpr>z2ExportGraphSignature.parameters.<locals>.<genexpr>   sT       
 
v,,,!(C(( - H,,,,
 
r#   tuplerS   r@   s    r$   
parameterszExportGraphSignature.parameters   3     
 
%
 
 
 
 
 	
r#   c                 >    t          d | j        D                       S )Nc              3      K   | ]:}|j         t          j        k    t          |j        t
                    1|j        V  ;d S rM   )r9   r   r4   r>   r;   r    rX   s     r$   r[   z/ExportGraphSignature.buffers.<locals>.<genexpr>   sT       
 
v)))!(C(( * H))))
 
r#   r\   r@   s    r$   bufferszExportGraphSignature.buffers   r_   r#   c                 >    t          d | j        D                       S )Nc              3      K   | ]C}|j         t          j        k    r,|j        d u  t	          |j        t                    :|j        V  DdS )FN)r9   r   r4   r<   r>   r;   r    rX   s     r$   r[   z>ExportGraphSignature.non_persistent_buffers.<locals>.<genexpr>   sc       
 
v)))|u$$!(C(( % H %$$$	
 
r#   r\   r@   s    r$   non_persistent_buffersz+ExportGraphSignature.non_persistent_buffers   s3     
 
%
 
 
 
 
 	
r#   c                 >    t          d | j        D                       S )Nc              3      K   | ]:}|j         t          j        k    t          |j        t
                    1|j        V  ;d S rM   )r9   r   r5   r>   r;   r    rX   s     r$   r[   z?ExportGraphSignature.lifted_tensor_constants.<locals>.<genexpr>   sT       
 
v222!(C(( 3 H2222
 
r#   r\   r@   s    r$   lifted_tensor_constantsz,ExportGraphSignature.lifted_tensor_constants   r_   r#   c                 >    t          d | j        D                       S )Nc              3      K   | ]:}|j         t          j        k    t          |j        t
                    1|j        V  ;d S rM   )r9   r   r6   r>   r;   r    rX   s     r$   r[   z:ExportGraphSignature.lifted_custom_objs.<locals>.<genexpr>   sT       
 
v---!(C(( . H----
 
r#   r\   r@   s    r$   lifted_custom_objsz'ExportGraphSignature.lifted_custom_objs   r_   r#   Nc                    g }| j         D ]}|j        t          j        k    rt	          |j        t          t          t          f          r |	                    |j        j
                   _t	          |j        t                    r |	                    |j        j                   t          |j         d          t          |          S )Nz is not a valid user inputs)rS   r9   r   r2   r>   r:   r   r   r   appendr   r   r-   RuntimeErrorr]   )rA   user_inputsrZ   s      r$   ro   z ExportGraphSignature.user_inputs  s    @B! 		J 		JAv---!%..BS!TUU J""15:....AE#344 J""15;////"ae#H#H#HIII[!!!r#   c                    g }| j         D ]}|j        t          j        k    rt	          |j        t          t          f          r |                    |j        j	                   Yt	          |j        t                    r |                    |j        j                   t	          |j        t                    r |                    |j        j	                   t          |j         d          t          |          S )Nz is not a valid user output)rT   r9   r   rE   r>   r:   r   r   rm   r   r   r-   r   rn   r]   )rA   user_outputsrZ   s      r$   rq   z!ExportGraphSignature.user_outputs  s    AC" 	J 	JAv///!%..!ABB J##AEJ////AE#344 J##AEK0000AE#455 J##AEJ////"ae#H#H#HIII\"""r#   c                 >    t          d | j        D                       S )Nc              3      K   | ]`}|j         t          j        k    t          |j        t
                    1t          |j        t                    K|j        j        |j        fV  ad S rM   )	r9   r   r3   r>   r:   r   r;   r    r   rX   s     r$   r[   z<ExportGraphSignature.inputs_to_parameters.<locals>.<genexpr>'  sq       
 
v,,,15.11 -18S)) - UZ",,,,
 
r#   _immutable_dictrS   r@   s    r$   inputs_to_parametersz)ExportGraphSignature.inputs_to_parameters%  3     
 
%
 
 
 
 
 	
r#   c                 >    t          d | j        D                       S )Nc              3      K   | ]`}|j         t          j        k    t          |j        t
                    1t          |j        t                    K|j        j        |j        fV  ad S rM   )	r9   r   r4   r>   r:   r   r;   r    r   rX   s     r$   r[   z9ExportGraphSignature.inputs_to_buffers.<locals>.<genexpr>3  sq       
 
v)))15.11 *18S)) * UZ"))))
 
r#   rt   r@   s    r$   inputs_to_buffersz&ExportGraphSignature.inputs_to_buffers1  rw   r#   c                 >    t          d | j        D                       S )Nc              3      K   | ]`}|j         t          j        k    t          |j        t
                    1t          |j        t                    K|j        j        |j        fV  ad S rM   )	r9   r   rG   r>   r:   r   r;   r    r   rX   s     r$   r[   z9ExportGraphSignature.buffers_to_mutate.<locals>.<genexpr>?  sq       
 
v33315.11 418S)) 4 UZ"3333
 
r#   ru   rT   r@   s    r$   buffers_to_mutatez&ExportGraphSignature.buffers_to_mutate=  3     
 
&
 
 
 
 
 	
r#   c                 >    t          d | j        D                       S )Nc              3      K   | ]`}|j         t          j        k    t          |j        t
                    1t          |j        t                    K|j        j        |j        fV  ad S rM   )	r9   r   rJ   r>   r:   r   r;   r    r   rX   s     r$   r[   z=ExportGraphSignature.user_inputs_to_mutate.<locals>.<genexpr>I  sq       
 
v77715.11 818S)) 8 UZ"7777
 
r#   r}   r@   s    r$   user_inputs_to_mutatez*ExportGraphSignature.user_inputs_to_mutateG  r   r#   c                 >    t          d | j        D                       S )Nc              3      K   | ]`}|j         t          j        k    t          |j        t
                    1t          |j        t                    K|j        j        |j        fV  ad S rM   )	r9   r   r5   r>   r:   r   r;   r    r   rX   s     r$   r[   zIExportGraphSignature.inputs_to_lifted_tensor_constants.<locals>.<genexpr>T  sq       
 
v22215.11 318S)) 3 UZ"2222
 
r#   rt   r@   s    r$   !inputs_to_lifted_tensor_constantsz6ExportGraphSignature.inputs_to_lifted_tensor_constantsR  rw   r#   c                 >    t          d | j        D                       S )Nc              3      K   | ]`}|j         t          j        k    t          |j        t
                    1t          |j        t                    K|j        j        |j        fV  ad S rM   )	r9   r   r6   r>   r:   r   r;   r    r   rX   s     r$   r[   zDExportGraphSignature.inputs_to_lifted_custom_objs.<locals>.<genexpr>^  sr       
 
v---15"344 .18S)) . UZ"----
 
r#   rt   r@   s    r$   inputs_to_lifted_custom_objsz1ExportGraphSignature.inputs_to_lifted_custom_objs\  rw   r#   c                 \   d }i }i }| j         D ]}|j        t          j        k    r-|J t	          |j        t                    sJ |j        j        }E|j        t          j        k    rMt	          |j	        t                    sJ t	          |j        t                    sJ |j	        ||j        j        <   |j        t          j        k    rLt	          |j	        t                    sJ t	          |j        t                    sJ |j	        ||j        j        <   
|d S t          |||          S )N)rQ   rO   rP   )rT   r9   r   rF   r>   r:   r   r   rH   r;   r    rI   r   )rA   rQ   rO   rP   specs        r$   backward_signaturez'ExportGraphSignature.backward_signaturef  s7   2435 % 	F 	FDyJ222"***!$(N;;;;;"hmj>>>!$+s33333!$(N;;;;;9='66j???!$+s33333!$(N;;;;;:>+(74&#$;%=
 
 
 	
r#   c                     d S rM   r"   r@   s    r$   assertion_dep_tokenz(ExportGraphSignature.assertion_dep_token  s    tr#   c                     g }| j         D ]R}|j        t          j        k    r;t	          |j        t                    sJ |                    |j        j                   St          |          S rM   )
rS   r9   r   r7   r>   r:   r'   rm   r   r]   )rA   input_tokensrZ   s      r$   r   z!ExportGraphSignature.input_tokens  sg    ! 	0 	0Av((!!%77777##AEJ///\"""r#   c                     g }| j         D ]R}|j        t          j        k    r;t	          |j        t                    sJ |                    |j        j                   St          |          S rM   )
rT   r9   r   r7   r>   r:   r'   rm   r   r]   )rA   output_tokensrZ   s      r$   r   z"ExportGraphSignature.output_tokens  sh    " 	1 	1Av)))!!%77777$$QUZ000]###r#   c                     | j         }|d S t          |          dk    sJ t          t          |                                                    }t          | j                  t          | j                  z   |k    sJ d S )N   )r   lennextiterkeysrq   r~   )rA   r   assertion_dep_token_indexs      r$   rB   z"ExportGraphSignature.__post_init__  s    "6&F&''1,,,,$(.A.F.F.H.H)I)I$J$J!!""S)?%@%@@() ) ) ) ) )r#   oldnewc                    t          |t                    sJ t          |t                    sJ t          t          t          t
          f}| j        D ]3}t          |j        |          r|j        j        |k    r||j        _        4| j	        D ]3}t          |j        |          r|j        j        |k    r||j        _        4dS )zR
        Replace all uses of the old name with new name in the signature.
        N)
r>   r    r   r   r   r'   rT   r:   r   rS   )rA   r   r   	arg_typesois         r$   replace_all_usesz%ExportGraphSignature.replace_all_uses  s     #s######s######^5FV	" 	% 	%A!%++ %5:$$!$AEJ! 	% 	%A!%++ %5:$$!$AEJ	% 	%r#   c                       fd}|S )Nc                 T    |j         dv r                    | j        |           d S d S )N)outputinput)opr   r   )r   r   userrA   s      r$   _z0ExportGraphSignature.get_replace_hook.<locals>._  s7    w---%%ch44444 .-r#   r"   )rA   r   s   ` r$   get_replace_hookz%ExportGraphSignature.get_replace_hook  s#    	5 	5 	5 	5 	5 r#   )rU   N)&r   r   r   __doc__r   r   r!   r   propertyr   r    r^   rb   re   rh   rk   r   r.   r/   r0   ro   rq   r   rv   rz   r~   r   r   r   r	   r   r   r   r   r   rB   r   r   r"   r#   r$   r   r      s        D DL i   z"""" 
JsO 
 
 
 X
 
C 
 
 
 X
 

3 
 
 
 X
 
C 
 
 
 X
 
JsO 
 
 
 X
 "Zc5$c.I(JK " " " X" #jsE4s/J)KL # # # X#$ 
gc3h&7 
 
 
 X
 
738#4 
 
 
 X
 
738#4 
 
 
 X
 
wsCx'8 
 
 
 X
 
7383D 
 
 
 X
 
gc3h.? 
 
 
 X
 
H-D$E 
 
 
 X
< Xgc3h.?%@    X #jo # # # X# $z# $ $ $ X$	
 	
 	
 	
%C %c % % % %     r#   r   c                 >    ddl m}  |t          |                     S )z
    Creates a mapping where items cannot be added, deleted, or updated.
    NOTE: The immutability is shallow (like tuple is an immutable collection).
    r   )MappingProxyType)typesr   dict)itemsr   s     r$   ru   ru     s-    
 '&&&&&DKK(((r#   rU   c           
         ddl m}m} ddlm} ddlm} t          | t          t          t          t          d           t          f          rt          d|           S d| j        v sJ |  d            | j        d         }| j        |v rt!          | j        	          S t          ||          rt#          | j        	          S t          ||          rt%          | j        	          S t          ||          r:t'          | j        |                                                                
          S t          ||          rt'          | j        |j        |          S t          |t          t          t          t          t          d           f          rt          | j        |          S t/          dt          |           d          )Nr   )ScriptObjectSymIntr   )
FakeTensor )r   r-   valz8 is not a constant or a node with a 'val' metadata field)r   )r   r*   )r   r*   r+   z*Encountered an unsupported object of type z0 while writing the metadata for exported program)torchr   r   "torch._library.fake_class_registryr   torch._subclasses.fake_tensorr   r>   r.   r0   r/   r?   r    r   metar   r'   r   r   r   _typequalified_namescript_class_nameAssertionError)nodetoken_namesr   r   r   r   r   s          r$   _make_argument_specr     s   ********CCCCCC888888$dE4::s;<< 5Rt4444 	
HHH 	
)E
CyK$),,,,	C	$	$ 
49----	C	 	  
49----	C	&	& 
 di399;;;U;U;W;WXXXX	C)	*	* 

 c&;c
 
 
 	
 
C#tS%d<	=	= 
TYc::::?c ? ? ?
 
 	
r#   graph_signaturer   gmztorch.fx.GraphModulere   c           
        	
 ddl m} | j        d u}t          | j                  | j        | j        t          | j                  | j        	| j	        |r| j        j
        ni 
|r| j        j        ni |r| j        j        nd | j        | j        fd|j        j        D             }fd|                    t%          t'          t)          |j        j                                      j                  D             }dt,          dt.          ffddt0          d	t,          dt2          f	
fd
fd|D             }fdt5          |          D             }t7          ||          S )Nr   )_pytreec                 F    g | ]}|j         d k    t          |          S )placeholder)r   r   )rY   r   r   s     r$   
<listcomp>z6_convert_to_export_graph_signature.<locals>.<listcomp>   s:       7m## 	D,//###r#   c                 0    g | ]}t          |          S r"   )r   )rY   r   r   s     r$   r   z6_convert_to_export_graph_signature.<locals>.<listcomp>  s3        	D-00  r#   inprU   c                    t          | t                    rt          t          j        | d           S t          | t
                    st          t          j        | d           S | j        }|v rt          t          j        | d           S |v r"t          t          j        | |                   S |v r+t          t          j	        | |         |         v          S t          d|           )Nr9   r:   r;   )r9   r:   r;   r<   zUnknown tensor input kind: )r>   r'   r   r   r7   r   r2   r   r3   r4   r   )r   r   rz   rv   re   ro   s     r$   to_input_specz9_convert_to_export_graph_signature.<locals>.to_input_spec
  s   c=)) 	I)/s4HHHH#~.. 	N)"6CMMMMx;)"6CMMMM)))(+D1   
 &&&%(.-d3;QQ	    !!Et!E!EFFFr#   idxr   c                 8   t          |t                    rt          t          j        |d           S t          |t
                    st          t          j        |d           S |j        }| t                    t                    z   t                    z   k     r^|v r"t          t          j	        ||                   S |v r"t          t          j
        ||                   S t          d|           |	v rt          t          j        |d           S |v r"t          t          j        ||                   S |v r"t          t          j        ||                   S |k    rt          t          j        |d           S t          d|           )Nr   zUnknown tensor mutation kind: zUnknown tensor output kind: )r>   r'   r   r   r7   r   rE   r   r   rG   rJ   r   rH   rI   rF   )
r   r   r   buffer_mutationsgrad_paramsgrad_user_inputsrQ   r   user_input_mutationsrq   s
      r$   to_output_specz:_convert_to_export_graph_signature.<locals>.to_output_spec#  s   a'' 	I:#34HHHH!^,, 	O:#9qNNNNv%&&-A)B)BBSEWEWWWW'''!#3+D1   
 ---!#7/5    %%Ld%L%LMMM|##!z'=1TRRRR$$!#9&t,   
 )))!#:+D1   
 $$!z'=1TRRRR %%JD%J%JKKKr#   c                 &    g | ]} |          S r"   r"   )rY   r   r   s     r$   r   z6_convert_to_export_graph_signature.<locals>.<listcomp>O  s#    888#==%%888r#   c                 .    g | ]\  }} ||          S r"   r"   )rY   r   r   r   s      r$   r   z6_convert_to_export_graph_signature.<locals>.<listcomp>P  s)    LLLvsANN3**LLLr#   )rS   rT   )torch.utilsr   r   setro   rv   rz   rq   r~   r   gradients_to_parameterrP   rQ   r   r   graphnodestree_leavesr   r   reversedargsrC   r   r.   r   	enumerater   )r   r   re   pytreeis_jointinputsoutputsrS   rT   r   r   r   r   rz   rv   rQ   r   r   r   r   ro   rq   s     `      @@@@@@@@@@@@@r$   "_convert_to_export_graph_signaturer     sA   
 .-----1=H o122K*?'9344L&8*@OW_/4KK]_KV^f9RRdfDLV/4@@RVK"/L#1M   HN  F
   &&tD"(.1I1I,J,J'K'K'PQQ  G
G< GI G G G G G G G G G2*LC *LL *LZ *L *L *L *L *L *L *L *L *L *L *L *LX 9888888KLLLL79K9KLLLLKlSSSSr#   )$dataclassesenumr   r   typingr   r   r   r   r	   r
   r   r   r   r   r   &torch._functorch._aot_autograd.schemasr   __all__	dataclassr   r'   r   r   r   rC   r   r   r   r   r   r   ru   r   r    r   r"   r#   r$   <module>r      s               W W W W W W W W W W W W W W W W W W W W ? ? ? ? ? ?  FLLLEEEEEE                           0 0 0 0 0 0 0 0 . . . . . . . .
 	        # # # # # # # #.               $         u u u u u u u up	) ) )
l 
 
 
 
DgT%gTgT  HgT 	gT gT gT gT gT gTr#   