
    IЦid                    |   % S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKJr  S SKJrJrJrJr  S SKJrJrJrJrJ r J!r!J"r"J#r#J$r$  S SK%J&r&  S SKJ'r'  S SK(r(S SK)r(S SK*J+r+  S S	K,J-r-  S S
K.J/r/  S SK0J1r1J2r2J3r3J4r4  S SK)J5r5  S SK6J7r7J8r8J9r9J:r:  S SK;J<r<  S SK=J>r>J?r?  S SK@JArB  S SKCJDrD  S SKEJFrF  S SKGJHrHJIrI  S SKJJKrKJLrL  SSKMJNrNJOrOJPrP  SSKQJRrRJSrS  SSKTJUrUJVrVJWrWJXrXJYrY  SSKZJ[r[J\r\J]r]J^r^  SSK_J`r`JaraJbrbJcrc  SSKOJdrdJereJfrfJgrgJhrhJiriJjrjJkrkJlrlJmrmJnrn  SSKoJprpJqrqJrrr  SSKsJtrt  SSKuJvrv  SSKwJxrx  SS KyJzrz  SS!K{J|r|J}r}J~r~Jr  SS"KPJr  SS#KJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  SS$KJr  S%\S&'    S SKr\GR4                  (       a  SS'KJr  SS(KJr  SS)KJrJrJr  SS*KJr  \	GRH                  " \5      r\(GRN                  GRQ                  \S+5      r\(GRN                  GRQ                  \S,5      r\GRV                  " 5       r\#" S-5      r\&" S.5      r " S/ S05      r " S1 S25      r\" 5       r\" 5       rSqS3\S4'   \GRh                  " \B5       SR       SSS5 jj5       rSTS6 jr\cGRn                  SUS7 j5       r  SV         SWS8 jjrS q\GRv                  " 5       rS9\S:'   SXS; jrSXS< jr " S= S>5      r   SY         SZS? jjrS S@KJr  S SAKJr  \GR4                  (       a  SSBKJr  \" 5       rSC\SD'   S[SE jr  S\S SF.                                 S]SG jjjr " SH SI5      rS^SJ jrS_SK jrS`SL jr " SM SN\GR                  5      r " SO SP5      r      SaSQ jrg! \ a    Sr GNf = f)b    )annotationsN)Path)CellTypeCodeTypeFunctionType
ModuleType)	AnyCallableDictListOptionalSetTupleTypeVarUnion)	ParamSpec)ReferenceType)GlobalStateGuard)get_compile_pg)TensorifyState)compile_contextCompileContext	CompileIdtracing)
structured)compile_time_strobelight_metajustknobs_check#maybe_upload_prof_stats_to_manifoldsignpost_event)_use_lazy_graph_module)ConstraintViolationErrorGuardOnDataDependentSymNode)_forward_from_src)_WaitCounter)DistributedDataParallel)_disable_current_modesis_in_torch_dispatch_mode)CapturedTracebackformat_traceback_short   )configexctrace_rules)remove_dead_coderemove_pointless_jumps) check_inst_exn_tab_entries_validInstructionis_generator propagate_inst_exn_table_entriestransform_code_object)CacheSizeRelevantForFramecompute_cache_sizeexceeds_cache_size_limitis_recompilation)always_optimize_code_objects
dynamo_tls	skip_codeTorchPatcher)augment_exc_messageBackendCompilerFailedFailOnRecompileLimitHitformat_error_msgInternalTorchDynamoErrorRecompileLimitExceededSkipCodeRecursiveExceptionTorchRuntimeErrorUncapturedHigherOrderOpErrorunimplementedUnsupported)CheckFunctionManager&get_and_maybe_log_recompilation_reasonGuardedCode)Hooks)put_code_state)ExecutionRecord)TORCH_DYNAMO_RESUME_IN_PREFIX)DistributedStateInstructionTranslator
LocalStateSpeculationLog)is_numpy)chromium_event_timedCleanupManagerCompileTimeInstructionCountercountersdynamo_timedformat_bytecodegen_record_file_nameget_metrics_contextincrement_frameis_namedtupleistype
LazyStringorig_code_mapreset_graph_break_dup_checkersetup_compile_debug	to_int_ustroubleshooting_urlwrite_record_to_file)#torch_function_mode_stack_state_mgrzOptional[ModuleType]np)
CompilerFn)WrapBackendDebug)BytecodeHook
CacheEntryDynamoFrameType)FrameStateSizeEntrybytecodegraph_breaks_T_Pc                      \ rS rSrSrg)TODO_UNKNOWN    N)__name__
__module____qualname____firstlineno____static_attributes__ru       Z/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torch/_dynamo/convert_frame.pyrs   rs      s    r{   rs   c                  <    \ rS rSrSS jrS	S jrS
S jrSS jrSrg)Tracker   c                0    / U l         [        5       U l        g N)seensetseen_idsselfs    r|   __init__Tracker.__init__   s    35	"%%r{   c                   ^ ^ [        U5      mTT R                  ;  aS  [        R                  " UUU 4S j5      nT R                  R                  U5        T R                  R                  T5        g g )Nc                :   > TR                   R                  T5      $ r   )r   remove)_idxr   s    r|   <lambda>Tracker.add.<locals>.<lambda>   s    DMM4H4H4Mr{   )idr   weakrefrefr   appendadd)r   
strong_objobjr   s   `  @r|   r   Tracker.add   sR    ndmm#++j*MNCIIS!MMc" $r{   c                2    [        U5      U R                  ;   $ r   )r   r   )r   items     r|   __contains__Tracker.__contains__   s    $x4==((r{   c                l    U R                   R                  5         U R                  R                  5         g r   )r   clearr   r   s    r|   r   Tracker.clear   s     		r{   )r   r   N)returnNone)r   r   r   r   )r   r   r   bool)	rv   rw   rx   ry   r   r   r   r   rz   ru   r{   r|   r~   r~      s    (#)r{   r~   zOptional[GlobalStateGuard]initial_global_statec                H    [        XU5      n[        UR                  5        U$ r   )original_forward_from_srcr;   __code__)srcglobals	co_fieldsresults       r|   fx_forward_from_src_skip_resultr      s!     'sY?FfooMr{   c                X   ^  [         R                  " T 5      SU 4S jj5       nT Ul        U$ )z
Context manager to:
    1) Save/restore torch.is_grad_enabled() state
    2) Save/restore python random state
    3) Save/restore torch random state
    4) Monkey patch torch.fx.graph_module._forward_from_src
c                 z	  > [        5       n[        R                  " 5       n[        R                  R	                  5          [        R
                  " 5       n[        R                  " 5       n[        R                  " 5       n[        R                  " 5       n[        R                  R                  5       nS n	[        R                  R                  5       (       a  [        R                  R                  5       n	[        R                  R                  5       n
[        R                  R                  R                   n["        [        R                  R                  l        [%        5       n[&        R(                  " 5       nUR+                  [        R                  R,                  R/                  5       5        UR+                  [0        5         T" U 0 UD6UR3                  5         [        R                  R5                  5       S:X  d   S5       eUR3                  5         [        R                  R7                  U5        [        R8                  R:                  R=                  U5        [        R>                  " XVS9  [        R@                  " U5        [        R                  RC                  U5        U	b  [        R                  RC                  U	5        [        R                  RE                  U
5        U[        R                  R                  l        URG                  5       (       d   SURI                  5        S35       esS S S 5        $ ! UR3                  5         [        R                  R5                  5       S:X  d   S5       eUR3                  5         [        R                  R7                  U5        [        R8                  R:                  R=                  U5        [        R>                  " XVS9  [        R@                  " U5        [        R                  RC                  U5        U	b  [        R                  RC                  U	5        [        R                  RE                  U
5        U[        R                  R                  l        URG                  5       (       d   SURI                  5        S35       ef = f! , (       d  f       g = f)Nr   zQTorch function mode stack state changed while dynamo tracing, please report a bug)	warn_onlyzGlobal z7state changed while dynamo tracing, please report a bug)%r   torchis_grad_enabled_C_PreserveDispatchKeyGuardis_inference_mode_enabled$are_deterministic_algorithms_enabled-is_deterministic_algorithms_warn_only_enabledrandomgetstateget_rng_statecudais_available_get_cublas_allow_tf32fxgraph_moduler#   r   rb   
contextlib	ExitStackenter_context_symbolic_trace_maybe_revert_all_patchesrf   close_len_torch_function_stack_set_grad_enabledautograd	grad_mode_enter_inference_modeuse_deterministic_algorithmssetstateset_rng_state_set_cublas_allow_tf32checkreason)argskwargsguardsprior_grad_modeprior_inference_modeprior_deterministicprior_warn_onlypy_rng_statetorch_rng_statecuda_rng_state
allow_tf32prior_fwd_from_srccleanup
exit_stackfns                 r|   _fn"preserve_global_state.<locals>._fn   sR   !#//1
 XX//1#(#B#B#D "'"L"L"N#QQSO!??,L#ll88:O!Nzz&&((!&!9!9!;88:J!&!6!6!H!H6UEHH!!3)+G#--/J$$((BBD $$%HIf4*6*HH668A=gfg=  "**?;((>>?ST22' -**?;!-JJ,,^<//
;:L%%7LLNNfV]]_--def"M 21* HH668A=gfg=  "**?;((>>?ST22' -**?;!-JJ,,^<//
;:L%%7LLNNfV]]_--def"M 21s&   FR,L?E(R,?E*R))R,,
R:r   z_P.argsr   z	_P.kwargsr   rp   )	functoolswraps_torchdynamo_orig_callable)r   r   s   ` r|   preserve_global_stater      s2     __R.f .f` &(C"Jr{   c                  ^^ U R                   [        ;   a  gU R                   R                   H  nXR                  ;   d  M  U R                  U   n[	        U[
        5      (       a+  UR                  R                  S5      (       d	  U[        L a    g[        (       d  Mp  [        R                  (       d  M  U[        L d  [        U5      (       d  M    g   0 mSUU4S jjmU R                  R                  5        H  nT" U5      (       d  M    g   [        R!                  SU R                   R"                  U R                   R$                  U R                   R&                  5        g)z+Check if the frame has torch.* related bitsTztorch.c           	       >^  [        T 5      nUT;   a  TU   $ STU'   [        T [        R                  [        R                  R
                  45      (       d>  [        T [        5      (       a3  [        T [        R                  R
                  5      (       a
  STU'   TU   $ [        R                  (       aS  [        (       aH  [        T [        R                  5      (       d  [        T [        R                  5      (       a
  STU'   TU   $ [        T [        [        45      (       a  [!        U4S jT  5       5      TU'   TU   $ [        T ["        5      (       a6  [        T R%                  5       5      n[!        U4S jU 5       5      TU'   TU   $ [        T [&        [(        [*        [        S5      [,        45      (       a
  STU'   TU   $ [/        T 5      (       a9  [1        T S5      (       a(  [!        UU 4S jT R2                   5       5      TU'   TU   $ g)z)Recursively check if the obj has a tensorFTc              3  4   >#    U  H  nT" U5      v   M     g 7fr   ru   .0v
has_tensors     r|   	<genexpr>:has_tensor_in_frame.<locals>.has_tensor.<locals>.<genexpr>*  s     ">#Q:a==#   c              3  4   >#    U  H  nT" U5      v   M     g 7fr   ru   r   s     r|   r   r   1  s     "A&Q:a==&r   N_fieldsc              3  H   >#    U  H  nT" [        TU5      5      v   M     g 7fr   )getattr)r   r   r   r   s     r|   r   r   7  s     "T1:gc1o#>#>s   ")r   
isinstancer   TensornnModuler^   type
issubclassr+   trace_numpyrg   ndarraygenericlisttupleanydictvaluesstrintfloatr   r]   hasattrr   )r   obj_idr   r   r   s   `  r|   r   'has_tensor_in_frame.<locals>.has_tensor  s   CXF## cELL%((//:;;3*S%((//"B"B#HVF##RZZ((JsBJJ,G,G#HVF##C$''"">#">>HVF##C #**,'F""A&"AAHVF##C#sE4:t<==$HVF##3GC$;$;""T"TTHVF## r{   z0skipping because no torch.* %s             %s %sF)r   objectr   r   )f_coder9   co_names	f_globalsr   r   rv   
startswithr   rg   r+   r   rS   f_localsr   logdebugco_nameco_filenameco_firstlineno)framer  r   valuer   r   s       @@r|   has_tensor_in_framer    s    ||33 <<((oo%//'*C#z**''11SE\rf(((cRi8C== ) !#H( (V &&(e ) II	  ## r{   c                    S n[        U S5      (       a&  [        X5      n[        X@R                  5        X@l        [        XS9  g )Nexec_recordexport)r  rZ   re   r  record_filenamer=   )ecoder  r  r  s        r|   exception_handlerr  P  s:     Oq-  .q7_mm<+)r{   z/typing.Counter[Union[int, FrameStateSizeEntry]]FRAME_COMPILE_COUNTERc                F    [         R                  (       a  [        U 5      $ U $ r   )r+   cprofilecprofile_wrapper)funcs    r|   maybe_cprofiler!  e  s    %%Kr{   c                J   ^  [         R                  " T 5      SU 4S jj5       nU$ )Nc                 n  >^ [         R                  " 5       nU(       d   S5       e[        STR                   S[	        U5      R                  SS5       S35      n[        R                  " 5       nUR                  5         [        R                  " 5       nUR                  " T/U Q70 UD6n[        R                  " 5       U-
  nUR                  5         [        R                  STR                  UU5        [        R                  " U5      n UR!                  U5        [        R                  SU5        UR'                  S	5      n	 [(        R*                  " S
SSSSS[	        U5      /[(        R,                  S9n
[(        R.                  " SSS[	        U	5      /U
R0                  S9  [        R                  SU	5        [?        [	        U5      5      =m(       a$  [@        RB                  RE                  SU4S j5        U$ ! ["         a    [        R%                  SU5         GNf = f! [2         a    [        R                  S5        UR5                  [        R6                  R8                  5      R;                  S5        UR5                  [        R6                  R<                  5      R;                  S5         Nf = f)NzTrace id is Nonez/tmp/r   /z.profilez7### Cprofile for %s trace id [%s] took %.3f seconds ###zCannot write to %szRaw profile at %sz.svg	gprof2dotz-fpstatsz"--node-label=total-time-percentagez!--node-label=self-time-percentagez--node-label=total-time)stdoutdotz-Tsvgz-o)stdinz Generated SVG from profile at %szxFailed to generate SVG from profile -- dumping stats instead.Try installing gprof2dot and dot for a better visualization   linkc                    > ST S.$ )Ncprofile_manifold_url)nameurlru   )manifold_links   r|   r   ;cprofile_wrapper.<locals>.profile_wrapper.<locals>.<lambda>  s    !8Or{   )#r   current_trace_idr   rv   r   replacecProfileProfileenabletimeruncalldisabler  warningr&  Stats
dump_statsPermissionError	exceptionwith_suffix
subprocessPopenPIPE
check_callr'  FileNotFoundError
sort_statsSortKeyTIMEprint_stats
CUMULATIVEr   r   _loggingtrace_structured)r   r   trace_idprofile_pathprofstart_tsretvalprofile_latencypssvg_pathgprof2dot_processr0  r   s              @r|   profile_wrapper)cprofile_wrapper.<locals>.profile_wrapperl  sF   !224+++xDMM?!CM$9$9#s$C#DHM
 !99;d4T4V4))+0EMM		
 \\$	>OOL) 	'6++F3	E * 0 087-% "! !!s8}5'.. KK:HE @
 
= 
 NN++O K  	>MM.=	>, ! 	EKKN MM&..--.::2>MM&..334@@D	Es&   G; A5H" ; HH"BJ43J4r   )r   r   )r   rU  s   ` r|   r  r  k  s'    __T: :x r{   c                  v    \ rS rSr   S	         S
S jjr\SS j5       rSS.           SS jjrSrg)ConvertFrameAsserti  Nc                H    [        5         Xl        X l        X0l        X@l        g r   )ra   r   
_one_graph_export_export_constraints)r   compiler_fn	one_graphr  export_constraintss        r|   r   ConvertFrameAssert.__init__  s      	&'*5'##5 r{   c                   ^  U 4S j$ )Nc                \   > [        U TR                  TR                  TR                  5      $ r   )convert_frame_assertrZ  r[  r\  backendr   s    r|   r   8ConvertFrameAssert._clone_with_backend.<locals>.<lambda>  s"    3T__dllD4L4L 
r{   ru   r   s   `r|   _clone_with_backend&ConvertFrameAssert._clone_with_backend  s    
 	
r{   r   skipc                  [        5         UR                  n[        X5      n[        R	                  U5        U[
        ;   a  g [        R                  R                  S5      (       a.  [        R                  R                  S5      UR                  :w  a  g UR                  S:X  a!  UR                  R                  S5      (       a  g UR                  S:X  a  g UR                  S:X  aV  UR                  R                  [        R                  R                  [        R                   R"                  5      5      (       a  g UR                  S:X  a  UR                  S:X  a  g UR                  S:X  a+  UR                  S:X  a  [%        UR&                  5      (       d  g [)        U5      (       a  [+        S	5        [-        U5      (       d  g [/        5       qS
U;  a  [2        US
'   [2        S-  qUS
   n[5        U[6        5      (       d   e[8        U   n	[8        U==   S-  ss'   [;        X5      n
[=        SSUR                  U[?        U
5      UR                  UR@                  URB                  URD                  S.5        UR                  R                  [F        5      (       dG  UR                   SUR                   SUR@                   3n[H        RJ                  RM                  U5        [O        [Q        U
5      5         [S        UR                  URT                  URV                  UR&                  URX                  U RZ                  U R\                  U R^                  U R`                  UUUUUU
US-   S9sS S S 5        $ ! , (       d  f       g = f)NTORCHDYNAMO_DEBUG_FUNCTIONz	<genexpr>)ztransformers/file_utils.pyztransformers/utils/generic.pyzdiffusers/utils/outputs.py__setattr__r   z<module><string>z<lambda>	generator_idr*   dynamoz_convert_frame_assert._compile)r  frame_id
compile_idr  r  
cache_sizeaccumulated_cache_size :)frame_staters  rj  )1r\   r  r6   input_codesr   output_codesosenvirongetr  r  endswithr
  pathdirnamer   optim__file__r   
f_builtinsr2   rF   r  r   r   FRAME_COUNTERr   r  r  r   r   r   r  +num_cache_entries_with_same_id_matched_objsnum_cache_entriesrN   r:   traced_frame_infosr   r   r   _compiler	  r  closurer   rZ  r[  r\  )r   r  cache_entryhooksrx  rj  r  rt  rr  frame_compile_idrs  infos               r|   __call__ConvertFrameAssert.__call__  s    	||';
<JJNN788

;<L<<;&4+;+;+D+D,
 ,
 <<=( <<:%$*:*:*E*EGGOOEKK001+
 +

 
 <<:%$*:*:j*H LLJ&  J.))** +&"5))  01 #!.KQMu%(C((((0:h'1,'x:
,<<$!*o#//"&"5"5(TT*4*F*F	
 ||&&'DEEll^1T%5%5$6a8K8K7LMD))006^J78  //(('%AX! 988s   6A5M55
N)r[  r\  rZ  r   TFN)
r]  rh   r^  r   r  r   r_  Optional[typing.Never]r   r   )r   z*Callable[[CompilerFn], ConvertFrameAssert]r  rl   r  Optional[CacheEntry]r  rK   rx  *Dict[str, Union[int, FrameStateSizeEntry]]rj  r  r   Optional[GuardedCode]	rv   rw   rx   ry   r   propertyrg  r  rz   ru   r{   r|   rX  rX    s     5966 6 	6
 36 
6 
 
 ss *s 	s
 @s s 
s sr{   rX  c                    [        XX#5      $ )z&Fully convert a frame into an FX graph)rX  )r]  r^  r  r_  s       r|   rc  rc  7  s     kfQQr{   )OrderedDict)RemovableHandle)OutputGraphzDict[int, BytecodeHook]_bytecode_hooksc                J    [        [        5      nU [        UR                  '   U$ )zRegister hooks for bytecode generated by Dynamo. The hook can do some
logging, as well as return a new code object to be used. Please refer
to `BytecodeHook` for the hook signature.
)r  r  r   )hookhandles     r|   register_bytecode_hookr  M  s!    
 _-F!%OFIIMr{   ri  c                 ^ ^^^^^^^^^
^^^^.^/^0^1^2^3^4^5^6^7^8^9 SSK Jm/JnJm9Jn  Sm2S m3S m8[
        R                  R                  5       m7[              S4U/UUU UU1UUUUUUU3U6U7U8U94S jj5       n          S5U.4S jjn[        SS9[                  S5U
UU1U2U3U54S jj5       5       m.[        5       n[        [        R                  5         [        [!        T5      5         [#        S	S
S
S9   U   [%        5       m5['        5       m6[)        5       =n(       a  [+        U[-        5       5      m1OS m1S m4[/        U5      (       a  U(       a  [1        T
U5      m4[3        UT5      u  nnU(       a  S6S jnS7U44S jjn[4        R7                  SU[9        [        U5      U" T 5      U" 5       [:        5        [        R<                  (       a  [?        U S35      e[        R@                  (       a  [C        S5      (       a  [E        U S35      e[G        U S35        [4        RI                  ST RJ                  T RL                  T RN                  TS-   SRQ                  [R        RT                  " ST-   S9RW                  5       5      5        [X        RZ                  " [\        5      m0[
        R^                  Ra                  SU U0U4S j5        [b        Rd                  " 5       nS nS nS nS n[
        Rf                  Rh                  Rj                  Rm                  5         S n U" T TU	U5      n[o        5         UT8(       a  0 T8Rp                  l9        SSK4J:n   [w        U 5      n!Uc  T3b  [y        T3Rz                  5      n"[y        T3R|                  Rz                  5      n#T3R                  5       n$[y        T3R                  R                  5      n%[y        T3R                  5      n&T3R                   V's1 s H  n'U'R                  iM     n(n'T3R                   V's1 s H  n'U'R                  iM     n)n'[
        Rf                  Rh                  Rj                  R5                  5         OES n"S n#S n$S n%S n&[%        0 5      n([%        0 5      n)[%        5       m5[b        Rd                  " 5       U-
  S-  m2S8S jn*U*" [        R                  " 5       5      n+0 SU!_ST RJ                  _ST RL                  _ST RN                  _S UR                  _S!UR                  _S"U"_S#U#_S$U$_S%U%_S&U&_S'U_S(U_S)U_S*U_S+U(_S,U)_T5T2US L[        R                  [        R                  [        R                  [        R                  " U+5      S
[        T25      S-.	En,UR                  U,5        sS S S 5        sS S S 5        sS S S 5        sS S S 5        $ s  sn'f s  sn'f ! [         a  n-[        U-5      R                  n[w        U-5      n[        U-T UTS.9  [
        R^                  Ra                  S/S0 S1 S29  [        R                  " U-T5      u  nn[        U-[        [        [        [        [        [        U[        U4	5      (       a  e [        [        U-5      R                   S3[w        U-5       35      R                  U-R                  5      S eS n-A-ff = f! T8(       a  0 T8Rp                  l9        SSK4J:n   [w        U 5      n!UGc  T3Gb  [y        T3Rz                  5      n"[y        T3R|                  Rz                  5      n#T3R                  5       n$[y        T3R                  R                  5      n%[y        T3R                  5      n&T3R                   V's1 s H  n'U'R                  iM     Os  sn'f n(n'T3R                   V's1 s H  n'U'R                  iM     Os  sn'f n)n'[
        Rf                  Rh                  Rj                  R5                  5         OES n"S n#S n$S n%S n&[%        0 5      n([%        0 5      n)[%        5       m5[b        Rd                  " 5       U-
  S-  m2S8S jn*U*" [        R                  " 5       5      n+0 SU!_ST RJ                  _ST RL                  _ST RN                  _S UR                  _S!UR                  _S"U"_S#U#_S$U$_S%U%_S&U&_S'U_S(U_S)U_S*U_S+U(_S,U)_T5T2US L[        R                  [        R                  [        R                  [        R                  " U+5      S
[        T25      S-.	En,UR                  U,5        f = f! , (       d  f       O= f S S S 5        O! , (       d  f       O= fS S S 5        O! , (       d  f       O= fS S S 5        g ! , (       d  f       g = f)9Nr   )bisectBisectValidationExceptiontranslation_validation_enabledValidationExceptiong        c                  > TR                  5         [        U TTTTTTUTTTT	T
TTS9m [        TR                  R                  5         TR                  5          TR                  5         S S S 5        S S S 5        TR                  R                  5         TR                  mTc   eTR                   (       d   eTR                   U S S & UR#                  TR$                  5        [&        R(                  (       d  [*        R,                  " S5        [/        U 5        [1        U 5        [3        [5        U 5      5      U S S & g ! , (       d  f       N= f! , (       d  f       N= f! [        R                   a    TR                  5         e [        R                  [        R                  [        R                  4 a    e [         a*    T" 5       (       a  T" TR                  R                  5        e f = f! TR                  R                  5         f = f)N)rx  speculation_logdistributed_statezJThe config.dead_code_elimination flag is deprecated, it's now always true.)restartrP   r   outputtracing_contextset_current_txrunr,   UnspecializeRestartAnalysisr   SpeculationRestartAnalysisTensorifyScalarRestartAnalysis	SkipFrame	Exception	shape_envcall_cleanup_hooksoutput_instructionsupdatecode_optionsr+   dead_code_eliminationwarningswarnr3   r0   r/   r.   )instructionsr  r  builtinsr  r  r]  r  r  r_  rx  r   localsr^  r  r  tf_mode_stacktracerr  s     r|   	transform_compile.<locals>.transform{  s    	!&#+/
$	/6679N9N9P

 :Q7  MM,,.!!!)))) 44QF//0 ++MM\ 	)6(601A,1OPQC :Q9P77.. 	!!#**..MM
 	
  	-//v}}../	
 MM,,.sT   E 	ED<+E3E <
E
	E
EE G, E BG))G, ,Hc           	       > [         R                  " 5        nUR                  [        SSSS95        UR                  [	        S5      R                  5       5        UR                  [        R                  R                  R                  5       5        UR                  [        R                  " 5       5        T" XX#5      sS S S 5        $ ! , (       d  f       g = f)Nz_compile.compile_innerentire_frame_compile!dynamo_cumulative_compile_time_us)
phase_namedynamo_compile_column_usz#pytorch.wait_counter.dynamo_compile)r   r   r   rX   r$   guardr   _dynamocallback_handlerinstall_callbacksrV   record)r  r^  r  r  stack_compile_inners        r|   compile_inner_compile.<locals>.compile_inner  s     !!#u,5-P BCIIK  > > P P RS = D D FG!$5D $## s   B&C
Cr  )r  c           	     .	  > [         R                   " 5       =pE            SS jnU" SU R                  U R                  U R                  U 5        S n[        R
                  " 5        H)  nU[        R                  " 5       l         [        X5      n  O   Tb  TR8                  c   S5       eUc   eU" S	U R                  U R                  U R                  U5        [:        R=                  5        H  n
U
" X5      nUc  M  UnM     U [>        U'   [@        R+                  U5        XE-
  mTc   eSS
 jnUc   eU" U 5      nU" U5      nSnUSU RB                  S U  S3-  nUSURB                  S U  3-  nU RB                  S U URB                  S U :X  d   U5       eSnUSU RD                   S3-  nUSURD                   3-  nU RD                  URD                  :X  d   U5       eSnUSU RF                   S3-  nUSURF                   3-  nU RF                  URF                  :X  d   U5       eTRH                  (       a  TRK                  5       (       a  g TRL                  c   eTRN                  [P        RR                  U'   [U        TTU(       a  URV                  OS 5      nTb  [/        T5      OSnSU-   n[Y        UURZ                  TU5      nTRK                  5       (       d(  UR\                  b  UR]                  TRL                  5        U$ ! [        R                   a  n	[        U	[        R                  5      (       d  [        R                  " 5         [         R#                  S[%        [&        U	R(                  5      5        TR+                  U	R,                  =(       d    [/        [1        U	5      5      5        [         R                   " 5       nUS:  a  [3        S5         S n	A	GMz   S n	A	GM  S n	A	f[        R4                   a  n	[        U	[        R                  5      (       d  [        R                  " 5         [         R7                  SU	U R                  U R                  U R                  5        U(       a  [         R7                  S5         S n	A	  g S n	A	ff = f)Nc           	         [         R                  [        R                  5      (       a!  [         R	                  [        XX#U5      5        g g r   )bytecode_logisEnabledForloggingDEBUGr  rY   )prefixr.  filenameline_nor  s        r|   log_bytecode6_compile.<locals>._compile_inner.<locals>.log_bytecode  s8     ((77""#F(TJ 8r{   zORIGINAL BYTECODEzRestarting analysis due to %sd   z100+ RestartAnalysis() callsz.Skipping frame %s %s                     %s %sz%No graph captured with one_graph=Truez;compiler collective wasn't run before compilation completedzMODIFIED BYTECODEc                    SS K nU R                  U R                  -   [        U R                  UR
                  -  5      -   [        U R                  UR                  -  5      -   $ )Nr   )inspectco_argcountco_kwonlyargcountr   co_flags
CO_VARARGSCO_VARKEYWORDS)r  r  s     r|   
count_args4_compile.<locals>._compile_inner.<locals>.count_args(  s]       (()t}}w'9'99:; t}}w'='==>?r{   zarg mismatch: zold code object has args z, znew code object has args zfree var mismatch: zold code object has free var znew code object has free var zcell var mismatch: zold code object has cell var znew code object has cell var UnknownzTorch-Compiled Region: )r  r   r.  r   r  r   r  r  r  r   r   r   r  r   r   r  )/r7  r  r  r  	itertoolscountr   r}  attemptr4   r,   RestartAnalysisr   r  r   r   r  r  r_   r)   __traceback__r   restart_reasonr   r   rF   r  r  
all_statesr  r   r`   rz  co_varnamesco_freevarsco_cellvarsr  is_empty_graphr   cleanupsrU   instancerH   guard_fail_fnrJ   guard_managerguard_export_fn)r  r^  r  r  last_attempt_start_time
start_timer  out_coder  r  r  hook_outputr  total_argcount_oldtotal_argcount_newmsgcheck_fncompile_id_strannotation_strguarded_coder  rs  r  dynamo_time_before_restartr  restart_reasonss                       r|   r   _compile.<locals>._compile_inner  s    04yy{:		"	.1	<?	GO		 	LL	
  (G+2N (0A	 )D %):)E)E)Q	IH	IQ ###LL	
 $**,Dt.K&& -
 #'h"%<%I"!!!	 ###'-'1*4+;+;<O=O+P*QQSTT*8+?+?@SAS+T*UVV001##$7%789	 	9 $.t/?/?.@CC.x/C/C.DEE8#7#77<<7#.t/?/?.@CC.x/C/C.DEE8#7#77<<7 ==V2244}}(((,2OO)'#(Ed
 -7,BZ	2^C"h,,j.
 $$&&5+@+@+L !!&--0q && B!!S%G%GHH"((*35qG
  ##A$4$4$DDGE*.))+'S=!"@AA !== !!S%G%GHH"((*		LL$$'' IIEFs&   LRB>O++RBRRrq  T)reset_event_loglog_pt2_compile_eventc                V    SU R                    SU R                   SU R                   S3$ )N'z' (rw  ))r  r  r  )r  s    r|   format_func_info"_compile.<locals>.format_func_info  s0    4<<.D,<,<+=Qt?R?R>SSTUUr{   c                    > T (       d  gT S   $ )Nz$Unable to find recompilation reasonsru   )recompile_reasonss   r|   format_guard_failures'_compile.<locals>.format_guard_failures  s    (A(,,r{   ztorch._dynamo hit config.%s (%s)
   function: %s
   last reason: %s
To log all recompilation reasons, use TORCH_LOGS="recompiles".
To diagnose recompilation issues, see %s.zG reached, because fail_on_cache_limit_hit = True this is a HARD failurez7pytorch/compiler:skip_code_recursive_on_cache_limit_hitz reachedzBtorchdynamo start compiling %s %s:%s, stack (elided %s frames):
%s    ri  dynamo_startc                 2  > S[        [        R                  " U4S j[        R                  " [
        R                  " ST-   S9R                  5       5      5      5      T R                  T R                  [        R                  " T R                  5      S./-   0$ )Nr  c                   > U S   T:g  $ )Nr  ru   )fconvert_frame_interns    r|   r   ,_compile.<locals>.<lambda>.<locals>.<lambda>  s    !J-3G"Gr{      ri  )liner.  r  )r   r  	takewhiler   from_tracebackr(   extractsummaryr  r  intern_stringr  )r  r  rj  s   r|   r   _compile.<locals>.<lambda>  s    ''G"11-551t8DLLN !% 3 3 $$.$<$<T=M=M$Nr{   r*   )
curr_frameg    eAc           	         1 SknU R                  5        VVs0 s H/  u  p#X!;  d  M  U[        U[        5      (       a  [        U5      OU_M1     snn$ s  snnf )N>   verbosebase_dirrepro_afterrepro_levelTYPE_CHECKINGlog_file_namedebug_dir_rootrepro_tolerancerepro_forward_only_custom_ops_profile_save_config_ignorerepro_ignore_non_fpignore_logger_methodslog_compilation_metricssame_two_models_use_fp64traceable_tensor_subclassesreorderable_logging_functions)_autograd_backward_strict_mode_banned_ops+inject_BUILD_SET_unimplemented_TESTING_ONLY)itemsr   r   r   )d	blocklistkeyr  s       r|   clean_for_json _compile.<locals>.clean_for_json2  sX    	0 '(ggi&/
+ JC
5#(>(>eEI&/  s
   A'A	frame_keyr  r  r  rt  ru  guard_countshape_env_guard_countgraph_op_countgraph_node_countgraph_input_count	fail_typefail_reasonfail_user_frame_filenamefail_user_frame_linenonon_compliant_opscompliant_custom_ops)	r  dynamo_time_before_restart_shas_guarded_codeconfig_suppress_errors config_inline_inbuilt_nn_modulesspecialize_floatdynamo_config
is_forward%dynamo_compile_time_before_restart_usr  artifactc                     SSS.$ )Ndynamo_errorstringr.  encodingru   ru   r{   r|   r   r     s    * (%r{   c                 ,    [         R                  " 5       $ r   	traceback
format_excru   r{   r|   r   r     s    9#7#7#9r{   metadata_fn
payload_fnz: )r  zList[Instruction]r  Dict[str, object]r   r   )
r  r   r^  r   r  rK   r  z2Callable[[List[Instruction], Dict[str, Any]], Any]r   r  )r  r   r   r   )r   r   )r7  Dict[str, Any]r   r^  )`torch.fx.experimental.validatorr  r  r  r  r   	overrides _get_current_function_mode_stackr   r   r!  r[   r    r+   use_lazy_graph_moduler   r   rT   r   rR   r   rO   rQ   r8   rI   r7   r  r:  r   rd   fail_on_cache_limit_hitr?   &skip_code_recursive_on_cache_limit_hitr   rB   rF   r  r  r  r  joinr(   r  formatr   r  r  rJ  rK  r7  time_nsr  utilsReinplaceCountersr   rL   r  local_scoper!  r   lenr   r  count_callsgraphnodesplaceholdersrF  rx   rG  get_config_copyr  r  suppress_errorsinline_inbuilt_nn_modulesrL  jsondumpsrc   update_outerr  r   r  r,   get_exc_messager   rG   rD   r>   AssertionErrorr!   r"   rE   rA   with_tracebackr  ):r  r   r  r  r  r]  r^  r  r_  r  r  rt  r  rx  rs  rj  r  r  r  r  metrics_context
compile_pgexceeded
limit_typer
  r  start_time_nsrB  rC  rD  rE  r  r!  r<  r=  r>  r?  r@  rA  oprF  rG  r:  config_dictmetricsr  r  r  r  r  r  r  r  r  r  r  r  r  s:   ````````` `  ```                              @@@@@@@@@@@@r|   r  r  W  s	   &  ),$(F.2F 	88:  :Q':Q7H:Q	:Q :Q :Q :Qx  F	
 
. #o>WWW W F	W
 
W W  ?Wr *+O	 < <	=z"@$d$'E(*')):) 0Z\ J $ !J''E FU!  8
JO*V-
 KK<
 
+ &%'# ---!l"ij  >>?ID D -
|8-DEE H56		QLL1HGG%--1t8<CCEF	
4  *77A''	
( #'	%)26 04--335U	2(y%KL \ ,.))JI"v'9!&--0(+F,<,<,C,C(D%!'!3!3!5#&v||'9'9#: $'(;(;$<!?E?W?W$X?WR__?W!$X.4.I.I(.IBOO.I % ( ##5599;"(,%!%#' $(!$'G!'*2w$"%%.2lln}.LPS-S*: ))?)?)ABKY4<< t// !$"5"5	
 jTT )**F*F { ()> !. #$4 $%6 Y { +,D )*@  $%6!" '(<#$ $30J$0$<*0*@*@4:4T4T$*$;$;!%K!8"9B.:5G< ((1  @ @	=	=l %Y(u  &	< Q,,Ia&KauV<NN++ : ,  @C?R?R:@<$&< %)",/'0-
   /Aw++,Bs1vh7 .1t<I&	<Z ,.))JI"v'9!&--0(+F,<,<,C,C(D%!'!3!3!5#&v||'9'9#: $'(;(;$<!?E?W?W$X?WR__?W$X!$X.4.I.I(.IBOO.I($ ( ##5599;"(,%!%#' $(!$'G!'*2w$"%%.2lln}.LPS-S*: ))?)?)ABKY4<< t// !$"5"5	
 jTT )**F*F { ()> !. #$4 $%6 Y { +,D )*@  $%6!" '(<#$ $30J$0$<*0*@*@4:4T4T$*$;$;!%K!8"9B.:5G< ((1   @ @ @	=	=	=s   e"'e3d.6Hd	V2+B5d	 V(6d	V-E'd		d.	e	e"(
d	2
Z%<C$Z  Z%%Z((B8d ]76d^#"E.dd	
d!d.%	e.
d<8e?	e"
e	e""
e0c                  X    \ rS rSrSS jr\SS j5       r S	           S
S jjrSrg)ConvertFrameir  c                :    Xl         [        USS9U l        X l        g )NF)r^  )r   rc  _inner_convert_hooks)r   r]  r  s      r|   r   ConvertFrame.__init__s  s    *5'2;%Pr{   c                   ^  U 4S j$ )Nc                0   > [        U TR                  5      $ r   )convert_framer  rd  s    r|   r   2ConvertFrame._clone_with_backend.<locals>.<lambda>z  s    }WdkkBr{   ru   r   s   `r|   rg   ConvertFrame._clone_with_backendx  s	    BBr{   c                  ^ [         S   S==   S-  ss'    U R                  XX4US-   S9n[         S   S==   S-  ss'   U$ ! [         Ga'  n[        U[        5      (       a  e [        U[
        5      n[        U[
        5      (       a  [        R                  [        R                  5      (       a  [        US5      (       a  [        [        UR                  5      5         UR                  n	SR                  [         R"                  " U	5      5      n
SU
 3m[$        R&                  R)                  S	S
 U4S jS9  [        R+                  TSS9  S S S 5        O! , (       d  f       O= f[,        R.                  (       d  U(       d  e [1        USS 5      nUR2                  n[5        X|X5      nU(       a  [6        R9                  USS9  O[6        R;                  USS9  [        U[<        5      (       a3  [$        R>                  R@                  RB                  RD                  s S nA$ [        U[F        5      (       a3  [$        R>                  R@                  RB                  RH                  s S nA$  S nAg S nAff = f)Nframestotalr*   ri  okrs  r  z&Graph break: skip: from user code at:
rP  c                     SSS.$ )Ndynamo_graph_break_reasonrS  rT  ru   ru   r{   r|   r   'ConvertFrame.__call__.<locals>.<lambda>  s    (C,41r{   c                 8   > T  S[         R                  " 5        3$ )N
rW  )user_stack_traces   r|   r   r    s    2B1C2iFZFZF\E]/^r{   rZ  T)exc_infor  )%rW   r  r  r   rE   rG   graph_break_logr  r  r  r  r   r   rs  
real_stackre  rX  format_listr   rJ  rK  r  r+   rq  r   r  r@   r  r  r:  rC   r   r  
eval_frameskip_code_recursive_flagrB   cache_limit_hit_flag)r   r  r  r  rx  rj  r   r  	soft_fail
user_stackuser_stack_formattedr  r  	error_msgr  s                 @r|   r  ConvertFrame.__call__|  s    	7#q(#O	H((ETAX ) F Xt$)$M I	H !9::"1k2I ![))o.J.J/ / 1l++()EF%&\\
/1ww%11*=0, .UUiTj+k(77&) (_ 8  (--,%) .  GFF& ))) &a):DAO<<D(/IIT2I5 !788xx''22KKKA566 xx''22GGG 7
 WI	HsE   )A I3BI.A/E	I.
E$	 B;I.I3!AI.#I3.I3)r  r  r   N)r]  rh   r  rK   r   r   )r   z*Callable[[WrapBackendDebug], ConvertFrame])r   )r  rl   r  r  r  rK   rx  r  rj  r  r   z~Optional[Union[GuardedCode, torch._C._dynamo.eval_frame.SkipCodeRecursiveFlag, torch._C._dynamo.eval_frame.CacheLimitHitFlag]]r  ru   r{   r|   r  r  r  so    
 C C `` *` 	`
 @` `
` `r{   r  c                    [        X5      $ )zHTry to convert a frame into an FX graph, if error leave frame unmodified)r  )r]  r  s     r|   r  r    s    ++r{   c                f   SSK Jn  [        R                  nS[        l        [	        U S5       n[
        R                  " U5      nS S S 5        [        [        R                  " WR                  R                  5       [        5       R                  5       5      5      Ul
         [        UR                  UR                  UR                  UR                  UR                   USSS [#        5       [%        SS5      S S 0 ['        SS5      S9  U[        l        g ! , (       d  f       N= f! U[        l        f = f)	Nr*   )eagerFrbr   *   i  )
r]  r^  r  r_  r  rt  r  r  rx  rs  )backends.debuggingr  r+   replay_record_enabledopenrM   loadr   r  chainr   r6  r  r  r  r  r  rK   r5   r   )r  r  original_replay_valin_filer  s        r|   replayr    s    ) 66#(F 	h	 %%g. 
)//&..*>*>*@')//BSTUFN;KKNNMMOONN#'0A6 S)	
$ (;$/ 
	. (;$s   D!A%D# 
D #D0c                    [         R                  S:  a  g[        R                  " U 5       H$  nUR                  S:X  d  M  UR
                  S-  s  $    [        S5      e)N)      r   RESUMEr  z$RESUME instruction not found in code)sysversion_infodisget_instructionsopnameoffsetRuntimeError)r  insts     r|   first_real_inst_idxr    sQ    
'!$$T*;;(";;!## + =
>>r{   c                  <    \ rS rSrSS.           SS jjrSrg)ConvertFrameProtocoli  r   ri  c                   g r   ru   )r   r  r  r  rx  rj  s         r|   r  ConvertFrameProtocol.__call__  s     	r{   ru   Nr  )rv   rw   rx   ry   r  rz   ru   r{   r|   r  r    sL     		 *	 		
 @	 	 
	 	r{   r  c                  8    \ rS rSrSS jr        SS jrSrg)CatchErrorsWrapperi  c                T    [         R                  " U5      " U 5        Xl        X l        g r   )r   r   r   r  )r   callbackr  s      r|   r   CatchErrorsWrapper.__init__  s    !$'*2'
r{   c           
        Uc   e[         R                  " UR                  5      n[        R                  S:  a#  UR
                  [        UR                  5      :  nO"UR
                  [        UR                  5      :  nU(       dF  U(       d?  [        R                  (       d*  [        SS9(       a  [        U R                  SS5      (       d  [        R                  [        R                  5      (       a  U(       a  SnO;[         R                  " UR                  5      (       a  SnO[        SS9(       a  SnOSn[        R!                  S	UR                  R"                  UUR                  R$                  5        g UR                  R$                  S
:X  a  UR                  R"                  S:X  a  g [        R&                  " 5       S:X  a  [(        R*                  " 5       nU(       a  [,           SSKJn  U" UR2                  U R                  R                  S9n	[5        U R                  S5      (       d   S5       eU R                  R7                  U	R8                  5      n
U
" XU R:                  U5      sS S S 5        $ [,           [=        5          U R                  XU R:                  USS9sS S S 5        sS S S 5        $ ! , (       d  f       NN= f! , (       d  f       O= fS S S 5        g ! , (       d  f       g = f)N)r     F)include_infra_modesr[  ztraced frame alreadyzin skipfileszSnon-infra torch dispatch mode present, this is not supported today in torch.compilezdynamo tracing is disabledz#skipping: %s (reason: %s, file: %s)rn  __new__ddp_optimizerr   )DDPOptimizer)bucket_bytes_capbackend_compile_fnrg  zJDDPOptimizer only supports callback fns that know how to clone themselves.r*   ri  )r-   r   r  r  r  f_lastir  r+   r9  r'   r   r   r  r  r  r  r  r  r  _get_optimize_ddp_moder%   _get_active_ddp_modulecompile_lock"torch._dynamo.backends.distributedr  r  r  rg  
compile_fnr  r&   )r   r  r  rx  is_skipfilehas_started_executionskip_reason
ddp_moduler  r  hijacked_callbacks              r|   r  CatchErrorsWrapper.__call__   s:    &&&!''5w&$)MM4G4U$U!$)MM5H5V$V! "~~)eD ? ?ERR ..("8K &&u||44"0K.5I"wK">K		9LL((LL,,	 <<##z1ell6J6Ji6W((*o=0GGIJ!O$0)3)D)D+/+J+J+e+e%M #779N  dcd  77KK)44 &
 -DJJ "\& 1322DJJ! 3  43\\' "\& 43\\\s1   *BJ: K%K'	K%:
K
K	K%%
K3)r   r  N)r  r  r  rK   r   r   )r  rl   r  r  rx  r  r   r  )rv   rw   rx   ry   r   r  rz   ru   r{   r|   r  r    s8    
FF *F @	F
 
Fr{   r  c                    [        X5      $ r   )r  )r  r  s     r|   catch_errors_wrapperr  i  s     h..r{   r   )r   r   r   r^  r   zOptional[Dict[str, str]]r   r   )r   Callable[_P, _T]r   r  )r  rl   r   r   )NF)
r  r  r  r   r  Optional[DynamoFrameType]r  r   r   r   )r   r  r   r  r  )
r]  rh   r^  r   r  r   r_  r  r   rX  )r  rj   r   r  )NN)"r  r   r   r]  r  r]  r  r]  r  zTuple[CellType]r]  rh   r^  r   r  r   r_  r  r  rK   r  r  rt  r5   r  r  rx  z4Optional[Dict[str, Union[int, FrameStateSizeEntry]]]rs  r   rj  r  r   r  )r]  rh   r  rK   r   r  )r  r   r   r   r  )r  r  r  rK   r   r  )
__future__r   collectionsr   r4  r  r   r  rs  r  r{  r&  r   r@  r  	threadingr7  rX  typingr  r   pathlibr   typesr   r   r   r   r	   r
   r   r   r   r   r   r   r   typing_extensionsr   r   r   torch._loggingtorch._C._dynamo.guardsr   torch._dynamo.distributedr   torch._dynamo.symbolic_convertr   torch._guardsr   r   r   r   r   torch._utils_internalr   r   r   r   torch.fx._lazy_graph_moduler    %torch.fx.experimental.symbolic_shapesr!   r"   torch.fx.graph_moduler#   r   torch.monitorr$   torch.nn.parallel.distributedr%   torch.utils._python_dispatchr&   r'   torch.utils._tracebackr(   r)   r  r+   r,   r-   bytecode_analysisr.   r/   bytecode_transformationr0   r1   r2   r3   r4   rt  r5   r6   r7   r8   r  r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   r   rH   rI   rJ   r  rK   pgorL   replay_recordrM   resume_executionrN   symbolic_convertrO   rP   rQ   rR   rS   rh  rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   variables.torch_functionrf   __annotations__numpyrg   ModuleNotFoundErrorr'  backends.registryrh   repro.after_dynamori   rj   rk   rl   variables.builderrm   	getLoggerrv   r  rJ  getArtifactLoggerr  r  RLockr  rp   rq   rs   r~   ry  rz  r   r   r   r   #suppress_torch_distributed_warningsr  r  r  Counterr  r!  r  rX  rc  r  torch.utils.hooksr  output_graphr  r  r  r  r  r  r  r  Protocolr  r  r  ru   r{   r|   <module>r     sc   "    
     	    
        > > R R R ' !   4 4 9 M M %  ? Q & A M & & G       
   * ;  "    ( J  
 
-4@@6 !~~//*E..228^L  T]t_	 	 ( iy37 0 7 *+MQ	%2J ,;| 11K 2Kb (,	**
* %* 	*
 
*     
>BH HZ 15	RRR R /	R
 R $ - 
) ,7=( 8. (,HLW2" #W2
W2W2 W2  	W2
 W2 W2 W2 W2 /W2 W2 &W2 *W2 %W2 FW2  !W2" #W2$ %W2vj jZ,;>?
6?? 
L L^/"/+0//K'  	Bs   *N/ /N;:N;