
    קgr                     n   d dl Z d dlZd dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZ d dlZddlmZmZ ddlmZmZmZmZ ddlmZ ddlmZ dd	lmZmZmZ dd
lmZmZm Z  ddl!m"Z"m#Z#m$Z$m%Z% ddl&m'Z'  G d de#          Z( G d de#          Z) G d de)          Z* G d de)          Z+d Z, G d d          Z-dS )    N)MutableMapping)AnyDictListOptionalTypeUnion   )utils	variables)bytecode_from_templatecreate_call_functioncreate_call_methodcreate_instruction)	PyCodegen)unimplemented)GlobalSourceLocalSourceSource)is_frozen_dataclassnn_module_new
object_new)is_side_effect_safeMutableLocalBaseMutableLocalSourceVariableTracker)FrozenDataClassVariablec                   .     e Zd ZdZddedef fdZ xZS )MutableSideEffectsz
    VariableTracker.mutable_local marker to indicate a list passed as
    an input that if we mutate we need to re-apply those mutations after
    the graph runs.
    Fsourceis_modifiedc                 z    t                                          t          j                   || _        || _        d S N)super__init__r   Existingr    r!   )selfr    r!   	__class__s      V/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/_dynamo/side_effects.pyr%   zMutableSideEffects.__init__%   s4    +4555&    F)__name__
__module____qualname____doc__r   boolr%   __classcell__r(   s   @r)   r   r      sZ         ' 'v 'D ' ' ' ' ' ' ' ' ' 'r*   r   c                   8     e Zd ZdZdedee         f fdZ xZS )AttributeMutationzM
    VariableTracker.mutable_local marker to track changes to attributes
    typr    c                 X    t                                          |           || _        d S r#   )r$   r%   r    )r'   r5   r    r(   s      r)   r%   zAttributeMutation.__init__0   s&    r*   )	r,   r-   r.   r/   r   r   r   r%   r1   r2   s   @r)   r4   r4   +   s[         . 8H          r*   r4   c                   $     e Zd Zdef fdZ xZS )AttributeMutationExistingr    c                 n    t                                          t          j        |           || _        d S r#   )r$   r%   r   r&   r    )r'   r    r(   s     r)   r%   z"AttributeMutationExisting.__init__6   s,    +4f===r*   )r,   r-   r.   r   r%   r1   r2   s   @r)   r8   r8   5   sD        v          r*   r8   c                   @     e Zd Zdee         dee         f fdZ xZS )AttributeMutationNewr    
cls_sourcec                 n    t                                          t          j        |           || _        d S r#   )r$   r%   r   Localr<   )r'   r    r<   r(   s      r)   r%   zAttributeMutationNew.__init__<   s,    +16:::$r*   )r,   r-   r.   r   r   r%   r1   r2   s   @r)   r;   r;   ;   sU        %x/ %Xf=M % % % % % % % % % %r*   r;   c                 D    |                                  D ]
\  }}|||<   d S r#   )items)	dict_fromdict_tokvs       r)   _manual_update_dictrE   A   s4    !!  1

 r*   c                       e Zd ZU dZeeef         ed<   eeee	ef         f         ed<   e
e         ed<   	 	 	 	 	 d; fd	Zdedefd	Zdd dee	         fd
Zd Zd Zd Zd Zdede	defdZd<dZd Zd Zdede	fdZdede	defdZed             Zd Zd Zd Z d Z!e"fdedefd Z#e#Z$dedefd!Z%d"e&d#ed$efd%Z'	 	 d=d(Z(d) Z)d*e&defd+Z*d*e&defd,Z+d- Z,d. Z-d/ Z.d0 Z/d1 Z0d2e1fd3Z2d4 Z3d5 Z4d6 Z5d7 Z6d2e1fd8Z7d9 Z8d: Z9 xZ:S )>SideEffectszp
    Track side effects (list mutation, setattr, etc) that need to be
    applied after an FX graph is run.
    id_to_variablestore_attr_mutations	keepaliveNc                     t                                                       |pi | _        |pi | _        |pg | _        |pg | _        |pi | _        d | _        d S r#   )r$   r%   rH   rI   rJ   save_for_backwardtensor_hooksca_final_callbacks_var)r'   rH   rI   rJ   rL   rM   r(   s         r)   r%   zSideEffects.__init__P   sj     	,2$8$>B!"b!2!8b(.B '+###r*   otherreturnc                     t          |t                    sJ | j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r#   )
isinstancerG   rH   rI   rL   rM   )r'   rO   s     r)   __eq__zSideEffects.__eq__b   sh    %----- 5#77 8)U-GG8&%*AA8 !U%77		
r*   c                    | j         |j         k    rB| j                                         }|j                                         }||k    rd| d| S dS | j        |j        k    rB| j                                        }|j                                        }||k    rd| d| S dS | j        |j        k    rdS | j        |j        k    rdS d S )Nzid_to_variable keys: z != zid_to_variable: unknown diffzstore_attr_mutations keys: z"store_attr_mutations: unknown diffrL   rM   )rH   keysrI   rL   rM   )r'   rO   sk_itvok_itvsk_samok_sams         r)   diffzSideEffects.diffl   s    %"666(--//F)..00FCvCC6CCC 21&%*DDD.3355F/4466FIVIIIII77#u'>>>&&%"444!>4r*   c                     |                      t          | j                  d | j                                        D             t          | j                  | j        | j                  S )zCreate a shallow copyc                 4    i | ]\  }}|t          |          S  )dict).0rC   rD   s      r)   
<dictcomp>z%SideEffects.clone.<locals>.<dictcomp>   s1     " " "#q!477" " "r*   )rH   rI   rJ   rL   rM   )	r(   r^   rH   rI   r@   listrJ   rL   rM   r'   s    r)   clonezSideEffects.clone   sq    ~~ 344" "'+'@'F'F'H'H" " " 4>**"4*  
 
 	
r*   c                 .    t          |          | j        v S r#   )idrH   r'   items     r)   __contains__zSideEffects.__contains__   s    $xx4...r*   c                 6    | j         t          |                   S r#   )rH   re   rf   s     r)   __getitem__zSideEffects.__getitem__   s    "2d88,,r*   c                     ddl m} t          ||          rdS t          |j                  st          d           d S d S )Nr   )AutogradFunctionContextVariableTzOHigherOrderOperator: Mutating a variable not in the current scope (SideEffects))torch._dynamo.variables.miscrl   rR   r   mutable_localr   )r'   rg   rl   s      r)   check_allowed_side_effectz%SideEffects.check_allowed_side_effect   sj    PPPPPP d;<< 	4"4#566 	a    	 	r*   rg   namevaluec                     |                      |          sJ |                     |           |j        | j        vri | j        |j        <   || j        |j                 |<   d S r#   )is_attribute_mutationro   rn   rI   )r'   rg   rp   rq   s       r)   
store_attrzSideEffects.store_attr   sl    ))$/////&&t,,,T%>>><>D%d&89>C!$"45d;;;r*   Fc                     |                      |          sJ | j        |j                 |         }|s)t          |t          j                  rt          d           |S )Nzread deleted attribute)rs   rI   rn   rR   r   DeletedVariabler   )r'   rg   rp   
deleted_okresults        r)   	load_attrzSideEffects.load_attr   sa    ))$/////*4+=>tD 	4j1JKK 	42333r*   c                     t          |t          j                  sJ t          |t          j                  sJ |                     |d|           d S Ncell_contents)rR   r   NewCellVariabler   rt   )r'   cellvarrq   s      r)   
store_cellzSideEffects.store_cell   sP    '9#<=====%!:;;;;;%88888r*   c                 f    t          |t          j                  sJ |                     |d          S r{   )rR   r   r}   ry   )r'   r~   s     r)   	load_cellzSideEffects.load_cell   s/    '9#<=====~~g777r*   gvarc                 f    t          |t          j                  sJ |                     ||          S r#   )rR   r   r   ry   )r'   r   rp   s      r)   load_globalzSideEffects.load_global   s/    $	 9:::::~~dD)))r*   c                     t          |t          j                  sJ t          |t          j                  sJ |                     |||           d S r#   )rR   r   r   rt   )r'   r   rp   rq   s       r)   store_globalzSideEffects.store_global   sP    $	 9:::::%!:;;;;;dE*****r*   c                 F    t          j        | dd           t          j        u S )N__getattribute__)inspectgetattr_staticobjectr   )clss    r)   "cls_supports_mutation_side_effectsz.SideEffects.cls_supports_mutation_side_effects   s'     "3(:DAA&'	
r*   c                 6    t          |j        t                    S r#   )rR   rn   r4   rf   s     r)   rs   z!SideEffects.is_attribute_mutation   s    $,.?@@@r*   c                     |                      |          o+t          | j                            |j                            S r#   )rs   r0   rI   getrn   rf   s     r)   has_pending_mutationz SideEffects.has_pending_mutation   s@    ))$// 
D%))$*<==5
 5
 	
r*   c                 p    |                      |          o!|| j                            |j        d          v S )Nr]   )rs   rI   r   rn   )r'   rg   rp   s      r)   has_pending_mutation_of_attrz(SideEffects.has_pending_mutation_of_attr   sB    ))
 
 Ld/33D4FKKK	Lr*   c                     t          |j        t                    rdS |                     |          r|j        | j        v S |j        j        S NT)rR   rn   r;   rs   rI   r!   rf   s     r)   r!   zSideEffects.is_modified   sQ    d(*>?? 	4%%d++ 	C%)BBB!--r*   variablec           
      D   |j         J t          |          | j        v r:t          | d|j          d| j        t          |                   j          d           ||j                   |_        || j        t          |          <   | j                            |           |S )z*Start tracking a new variable for mutationNz is already tracked for mutation. This could be because you are not using VariableBuilder to construct the variable tracker. Source of new object: z'. Source of previously tracked object: .)r    re   rH   AssertionErrorrn   rJ   append)r'   rg   r   mutable_clss       r)   
_track_objzSideEffects._track_obj   s     ***d88t***  ` ` *2` ` 9=8KBtHH8U8\	` ` `   "-X_!=!=(0BtHH%d###r*   c                 <    |                      ||t                    S )N)r   )r   r8   )r'   rg   r   s      r)   track_object_existingz!SideEffects.track_object_existing   s    
 tX;TUUUr*   r<   user_clsvariable_clsc                    |t           j        j        j        u rLt	          j        d          5  t           j                                        }d d d            n# 1 swxY w Y   n>t          |t           j        j	                  rt          |          }nt          |          } ||fdt          d |          i|}|| j        t          |          <   | j                            |           |S )NT)recordrn   )torchautogradfunctionFunctionCtxwarningscatch_warningsFunction
issubclassnnModuler   r   r;   rH   re   rJ   r   )r'   r<   r   r   optionsobjr   s          r)   track_object_newzSideEffects.track_object_new   s+    u~.:::(555 0 0n--//0 0 0 0 0 0 0 0 0 0 0 0 0 0 0%(/22 	'))CCX&&C<
 
.tZ@@
 
 

 (0BsGG$c"""s   AA Acls_variable"variables.UserDefinedClassVariablec                    |j         }|j        }t          j        }t	          |t
          j        j                  rt          j        }nEt	          |t                    rt          j
        }n#t          |          rt          }nt          j        }t	          |t          j                  sJ t          j        ||          }|                     |||i           S )N)r<   )r    rq   r   UserDefinedObjectVariabler   r   r   r   UnspecializedNNModuleVariabler   MutableMappingVariabler   r   	functoolspartialr   )r'   r   r<   r   r   s        r)   (track_object_new_from_user_defined_classz4SideEffects.track_object_new_from_user_defined_class  s     "(
%
 / 	 h00 	?$BLL.11 	?$;LL ** 	?2LL$>L,	(KLLLLL (*MMM$$Z<LLLr*   c                     t                      }t          j        t          d d                     }|| j        t          |          <   | j                            |           |S Nrn   )r   r   r}   r;   rH   re   rJ   r   )r'   r   r   s      r)   track_cell_newzSideEffects.track_cell_new,  sa     hh,.tT::
 
 
 (0BsGG$c"""r*   r    c                     t          j        t          |                    }|| j        t	          |          <   | j                            |           |S r   )r   r}   r8   rH   re   rJ   r   r'   r    rg   r   s       r)   track_cell_existingzSideEffects.track_cell_existing7  sT    ,3F;;
 
 
 )1BtHH%d###r*   c                     t          j        t          |                    }|| j        t	          |          <   | j                            |           |S r   )r   NewGlobalVariabler8   rH   re   rJ   r   r   s       r)   track_global_existingz!SideEffects.track_global_existing?  sT    .3F;;
 
 
 )1BtHH%d###r*   c                 v    t          |t          j                  sJ | j                            ||f           d S r#   )rR   r   rl   rL   r   )r'   ctxargss      r)   track_save_for_backwardz#SideEffects.track_save_for_backwardG  s<    #yHIIIII%%sDk22222r*   c                     |j         D ]W}t          |          }|j        |         }|| j        vr0t          |t          j                  r|                     ||           Xd S r#   )rJ   re   rH   rR   r   TensorVariabler   )r'   rO   
other_itemother_idother_variables        r)   1track_tensor_variables_from_runahead_side_effectsz=SideEffects.track_tensor_variables_from_runahead_side_effectsK  sy      / 	G 	GJ*~~H"1(;Nt222z	 88 82 **:~FFF	G 	Gr*   c                     t                      t          i           dt          f fddt          t          t          f         ffdd  j                                        D             }t          j        |j        |j        |f           fd j        	                                D              _        fd j
        	                                D              _
        d S )Nvarc                    | j         }|d S |v rd S                     |           t          |t                    r                    |           | j         j        v r't          j        j        | j                             d S d S r#   )rn   addrR   r;   rI   r   visit)r   rn   live_new_objectsr'   r   visiteds     r)   r   z0SideEffects.prune_dead_object_new.<locals>.visit^  s    -M$''KK&&&-)=>> 4 $$]333  D$===%44S5FG     >=r*   c                     t          | t                    r| v S t          | t                    r | j                  S dS r   )rR   r;   r   rn   )r   is_liver   s    r)   r   z2SideEffects.prune_dead_object_new.<locals>.is_livep  sL    #344 /...#// 2ws01114r*   c                 F    g | ]}t          |j        t                    |S r]   )rR   rn   r;   )r_   r   s     r)   
<listcomp>z5SideEffects.prune_dead_object_new.<locals>.<listcomp>w  s<     
 
 
c/1EFF

 
 
r*   c                 2    i | ]\  }} |          ||S r]   r]   r_   rC   rD   r   s      r)   r`   z5SideEffects.prune_dead_object_new.<locals>.<dictcomp>  s<     
 
 
QGGAJJ
q
 
 
r*   c                 2    i | ]\  }} |          ||S r]   r]   r   s      r)   r`   z5SideEffects.prune_dead_object_new.<locals>.<dictcomp>  s<     %
 %
 %
Q''!**%
q%
 %
 %
r*   )setr   r	   r   rH   valuesr   stacksymbolic_localsr@   rI   )r'   txpre_existing_varsr   r   r   r   s   `  @@@@r)   prune_dead_object_newz!SideEffects.prune_dead_object_newW  sQ   55 2ww	 	 	 	 	 	 	 	 	 	$	/@A 	 	 	 	 	 	 	
 
*1133
 
 
 	ebh0BDU%VWWW
 
 
 
!06688
 
 
%
 %
 %
 %
!6<<>>%
 %
 %
!!!r*   c                     |                      |           t          |j        t                    r!t          |j        j        d          |_        d S d S r   )ro   rR   rn   r   r    )r'   r   s     r)   mutationzSideEffects.mutation  sW    &&s+++c');<< 	S 233D3KT R RC	S 	Sr*   c                 N      fd j                                         D             S )Nc                 >    g | ]}                     |          |S r]   )r!   )r_   r   r'   s     r)   r   z2SideEffects._get_modified_vars.<locals>.<listcomp>  s-    UUUt?O?OPS?T?TUUUUr*   )rH   r   rb   s   `r)   _get_modified_varszSideEffects._get_modified_vars  s,    UUUUt299;;UUUUr*   cgc           	         |                                  D ]}t          |j        t          t          f          rt          |t
          j                  r                    fd                               t          dd                     
                    |           t          |j        t                    r$t          j        |                   |j        _        t          |j        t                    rt          |t
          j                  rt          d                               fd            |j        j                                       t          dd                     
                    |           t          j        |                   |j        _        |j        v rFj                            |          J  |j        j                   
                    |           | j        D ]z\  }} |j                                       d           |D ]} |                               g t)          t+          |                    t-          d                     {d S )	Nc                  D                          t          j        d          S )N	make_cellload_import_fromr   r,   r   s   r)   <lambda>z3SideEffects.codegen_save_tempvars.<locals>.<lambda>  s    B//LL r*   r   Fz'AutogradFunctionContextVariable escapedc                  D                          t          j        d          S )Nr   r   r   s   r)   r   z3SideEffects.codegen_save_tempvars.<locals>.<lambda>  s    B//MM r*   r
   rL   POP_TOP)r   rR   rn   r8   r;   r   r}   add_push_nullextend_outputr   	add_cacher   tempvarsr    rl   r   r<   r   rL   load_methodr   lenr   )r'   r   r   r   r   args    `    r)   codegen_save_tempvarsz!SideEffects.codegen_save_tempvars  s   **,, 	" 	"C!$=?S#T  "S)";<<"   LLLL     !5a!?!?@@@S!!!c/1EFF M/:2;s;K/L/LC%,C-/CDD "c9#LMM M!"KLLL  MMMM   3$/000  !5a!?!?@@@S!!!+6r{37G+H+H!((##{s++3333$+,,,S!!!/ 
	 
	ICBszNNNNN.///  3'D		22&y11   
	 
	r*   c                    t          |t          j                  sJ t          |t          j                  sJ t          |t          j                  r|j        sJ t          t          j        |          sJ t          | j
                                                  }|| j
        v r|dz  }|| j
        v ||||f| j
        |<   |j        rJ ||_        d S )Nr
   )rR   r   r   r   RemovableHandleVariablern   hasattrr   Tensorr   rM   rU   idx)r'   tensorhookhandlerp   r   s         r)   register_hookzSideEffects.register_hook  s    &)":;;;;;$	 9:::::vy@AA	
$	
 	
 	
 u|T*****$#((**++T&&&1HC T&&&"($!=#:


r*   c                     | j         |= d S r#   )rM   )r'   r   s     r)   remove_hookzSideEffects.remove_hook  s    c"""r*   c                 .   | j                                         D ]w\  }}j        s
J d            fd}                    |            |                               t          dd                                         |           xd S )Nz4Hooks on non input tensors NYI - should not get herec                  p                                                                      g           d S r#   )r   create_load_attr)r   rp   r   s   r)   gen_fnz)SideEffects.codegen_hooks.<locals>.gen_fn  s;    6


  ""5"5d";";!<=====r*   r
   F)rM   r   r    r   r   r   r   )r'   r   r   r   r  rp   r   s    `   @@r)   codegen_hookszSideEffects.codegen_hooks  s     %%''3	! 3	! 
F =XX"XXXX> > > > > > > V$$$BtHHH1!U;;<<< LL    g3	! 3	!r*   c                 p    ddl m} | j        #t          j        g  |                      | _        | j        S )Nr
   )MutableLocalr   )variables.baser
  rN   r   ListVariable)r'   r
  s     r)   get_ca_final_callbacks_varz&SideEffects.get_ca_final_callbacks_var  sM    000000&.*3*@,,..+ + +D' **r*   c           	        
 g }|                                  D ]
t          
t          j                  r 
d            
j        j                                                           d                               d           t          dd          g           |	                    t          d          g           t          
t          j
                  r5i }t          j        j        D ]#}j        j                                        ||<   $ 
j        j                                       t          d|d         	          g            
d                               t          d|d
         	          g            
j        j                                       d           t%          t          |          }|	                    g t'          d          t          d          |t          d                      t          
t          j                  r 
j        j                                       d            
d            
j        j                                       d           |	                    g t'          d          t          d          t'          d          t          d                     t          
t          j        j                  r                    fd                               
j                                       t          dt7          
j                                                           dd                               t          d                     |                     
          rt=          | j                             
j        i           !                                          D ]n\  }}t          
t          j"                  rqj        j        #                    |            |           t          
j        j        tH                    sJ |	                    t          d|	          g           t          |t          j%                  rt          
j        tL                    rxtO          tQ          
dd           |          rYj        j        #                    |            
j        j                   |	                    t          d|	          g           ?t          
t          j)                  r
*                                r+                    dd                               d            
j        j                    t          j,        |                      |           |	                    g t'          d          t          d                     
j        j        #                    |            |            
j        j                   |	                    t          d|	          g           pVt          
t          j-                  rpt]          
j/                  D ]Y}                    fd            
j        j                                       dd           0                                 Zt          
t          j1                  r
fd}                    |            
2                    
j3        4                                                     |	                    g tk          dd          t          d                     tm          to          
                    t=          |          D ]}	                    |	           d S )NF)allow_cacheBUILD_SLICE   )r   STORE_SUBSCR
STORE_FASTrB   )argvalrA   clear)varname_mapr   r   updater
   c                  D                          t          j        d          S )Nset_torch_function_mode_stackr   r   s   r)   r   z4SideEffects.codegen_update_mutated.<locals>.<lambda>U  s    B//(G  r*   
BUILD_LISTSTORE_GLOBALrq   DELETE_ATTRbuiltinsr   __setattr__   
STORE_ATTRc                  D                          t          j        d          S )N	iter_nextr   r   s   r)   r   z4SideEffects.codegen_update_mutated.<locals>.<lambda>  s     3 3ENK P P r*   c                  \      j         j                                        d           d S )Nsetstate)rn   r    ry   )r   r   s   r)   r  z2SideEffects.codegen_update_mutated.<locals>.gen_fn  s1    Bs(/000LL,,,,,r*   )8r   rR   r   r  rn   r    r   create_load_constr   r   CustomizedDictVariablerE   __code__co_varnamesr   outputnew_varr   r   r   ConstDictVariabletorch_functionTorchFunctionModeStackVariabler   foreachsymbolic_stackappend_outputr   call_functionrs   reversedrI   r   r@   r   update_co_namesr   rv   r8   r   getattrr   needs_slow_setattrr   ConstantVariableTupleIteratorVariablerangeindexpop_topRandomVariable
wrap_staterandomgetstater   r   type)r'   r   suffixesr  rp   dict_update_instsrq   _r  suffixr   s    `        @r)   codegen_update_mutatedz"SideEffects.codegen_update_mutated  so   **,, Z	0 Z	0C#y566 Y03E****3$+,,,  ,,T22,,T22*=a@@@   !3N!C!C DEEEEC!ABB M0 /8D ? ?D(*(<(<(>(>K%%3$+,,,  '[=STTTU   3E****  '[=UVVVW   3$+,,,w''' %;'[% % %! +A..*955 + +955	    C!<== l03$+,,,x(((3E****3$+,,,w'''+A..*955 ,A.. +955	    Y-L  \0        
 

3-...  &|S=O9P9PQQQ     E***  !3I!>!>????++C00 N0" $,-11#2CRHHNNPP$ $ $Y $YKD% "#y'BCC !Y44T:::5			)#*;*BLQQQQQ /tLLLM    $E9+DEE Y%-/H  %gc7D&A&A4HH EL88>>>Bs07888$OO!3M$!O!O!O P   #3	(KLLY2244Y
 ++JAAA}5553,344495d;;<<<5			 S033S5G	5R5RS    44T:::5			3,3444 );LQU)V)V)V(WXXXXI$YJ C!@AA 0sy)) ! !A$$PPPP   Bs(/000$$Q...JJLLLL! C!9:: 0- - - - - -   (((3>>#*"5"5"7"788999-a77*955    %T#YY/// x(( 	% 	%FV$$$$	% 	%r*   c                     t          t          | j        | j                                                            p| j        p| j        p| j         S r#   )anymapr!   rH   r   rM   rL   rb   s    r)   is_emptyzSideEffects.is_empty  sV    D$d&9&@&@&B&BCCDD ! !%!  	
 	
r*   c                 j    | j                                          | j                                         d S r#   )rJ   r  rH   rb   s    r)   r  zSideEffects.clear  s1    !!#####r*   )NNNNNr+   )r   r   );r,   r-   r.   r/   r   intr   __annotations__r   strr   r   r%   r   r0   rS   r   rZ   rc   rh   rj   ro   rt   ry   r   r   r   r   staticmethodr   rs   r   r   r!   r   r   track_mutabler   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  rD  rH  r  r1   r2   s   @r)   rG   rG   F   s%         
 o-..../c?6J1KKLLLLCy !+ + + + + +$
F 
t 
 
 
 
- HSM    ,

 

 

/ / /- - -
 
 
D Dc D/ D D D D   9 9 9
8 8 8* *s * * * *+ + +O + + + +
 
 
 \
A A A
 
 

L L L
. . . '	  "   . MVV "V V V V  	   .M:M M M M4	 	 	&     F #    3 3 3
G 
G 
G6
 6
 6
pS S S
V V V&	 & & & &P   # # #4! 4! 4!l+ + +`% `% `% `% `%D
 
 
$ $ $ $ $ $ $r*   rG   ).r   r   r   collections.abcr   typingr   r   r   r   r   r	   torch.nnr    r   r   bytecode_transformationr   r   r   r   codegenr   excr   r    r   r   r   r   r   r   r  r   r   r   r   variables.user_definedr   r   r4   r8   r;   rE   rG   r]   r*   r)   <module>rW     sk         * * * * * * 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9                                 5 5 5 5 5 5 5 5 5 5 A A A A A A A A A A            < ; ; ; ; ;
' 
' 
' 
' 
') 
' 
' 
'    (        1   % % % % %, % % %  
w	$ w	$ w	$ w	$ w	$ w	$ w	$ w	$ w	$ w	$r*   