
    8hT                      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	J
r
  S SKJrJr  S SKJr  S SKJrJrJrJrJrJrJrJrJrJr  S SKJrJrJrJrJr  S SKrS SKJ r   S S	K!J"r"J#r#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/J0r0  S SK1J2r2  S SK3J4r4  S SK5J6r6  \(       a"  S SK7J8r8  S SK!J9r9  S SK:J;r;  S SK<J=r=J>r>  S SK?J@r@JArA  SGS jrB\CrD\" SS\R                  5      rF\" S5      rG\" S\R                  S9rH\" S\R                  SS9rISHS jrJSIS jrKSJS jrLSKS  jrM\R                  " 5       rOS!\OlP        \SLS" j5       rQS!S!S#.           SMS$ jjrRSNS% jrSSOS& jrTSNS' jrUSNS( jrVSPS) jrWSQS* jrX      SRS+ jrY\" S,\Z5      r[\" S-\Z5      r\\" S.\Z5      r]\]" S 5      q^ " S/ S05      r_\" SS19 " S2 S35      5       r`\" SS19 " S4 S5\\H   5      5       ra\" SS19 " S6 S7\aS8   5      5       rb\" SS19 " S9 S:\a\H   \\H   5      5       rc " S; S<\\\I   5      rd " S= S>\S!S?9re " S@ SA\\\I   5      rf\" SS19 " SB S\\H   5      5       rgSSSC jrhSTSD jri " SE SF\\H   5      rjS SKkJlrm  g)U    )annotationsN)abstractmethod)AbstractContextManagercontextmanager)	dataclass)
AnyCallableClassVarGenericNewTypeOptionalProtocolTYPE_CHECKINGTypeVarUnion)override	TypedDict	TypeGuardTypeIsUnpack)CreationMeta)_add_batch_dim_unwrap_functional_tensor_wrap_functional_tensorget_unwrappedis_batchedtensoris_functorch_wrapped_tensoris_gradtrackingtensoris_legacy_batchedtensormaybe_get_bdimmaybe_get_levelpeek_interpreter_stack)enable_python_dispatcher)trace_structured)no_dispatch)is_traceable_wrapper_subclass)WeakIdKeyDictionary)	Generator)CInterpreter)Source)
FakeTensorFakeTensorMode)ShapeEnvSymbolicContextc                $    SSK Jn  [        X5      $ )Nr   )r+   )torch._subclasses.fake_tensorr+   
isinstance)tr+   s     V/var/www/fran/franai/venv/lib/python3.13/site-packages/torch/_subclasses/meta_utils.py_is_fake_tensorr4   >   s    8a$$    _TensorLikeTMetaTensorDesc_T_TensorT)bound_TensorT_covT)r:   	covariantc                <     U R                   $ ! [         a     gf = f)NF)is_leafRuntimeErrorr2   s    r3   safe_is_leafrA   K   s#    yy s    
c                    [         R                  " 5          [         R                  " SS5        U R                  sS S S 5        $ ! , (       d  f       g = f)NignorezThe .grad attribute of a Tensor)warningscatch_warningsfilterwarningsgradr@   s    r3   	safe_gradrH   S   s2    		 	 	"*KLvv 
#	"	"s   #A
Ac                &    [        U 5      nUc   eU$ N)rH   )r2   rG   s     r3   _expect_safe_gradrK   Y   s    Q<DKr5   c                &    X:X  d   U  SU 35       eg )Nz !=  )abs     r3   	assert_eqrP   _   s    6 aSQC= 6r5   Fc               #     #    [        [        SS5      n S[        l         S v   U [        l        g ! U [        l        f = f7f)Ndisable_inference_modeFT)getattrtlsrR   )priors    r3   $disable_inference_mode_for_fake_proprV   j   s4     C159E!%C+%*"U"s   A 0 A =A skip_symbolic	skip_leafc                  ^ ^^^ [        U[        R                  5      (       a  [        5       R	                  U5      OUnSU UUU4S jjmT" X5      $ )Nc                b  > T" U R                   UR                   5        T(       d  T" U R                  UR                  5        T" U R                  UR                  5        T(       d  T" U R                  UR                  5        T" U R                  UR                  5        [        [        SS5      (       d"  T" U R                  UR                  5       5        OT" U R                  S5        T" U R                  UR                  5       5        T" U R                  UR                  5       5        T" U R                  S L[        U5      S L5        U R                  b  T" U R                  [        U5      5        U R                  (       a  T" U R                  UR                  5        T" U R                  UR                  5       5        T" U R                  UR                  5       5        T" U R                   UR!                  5       5        g [#        U 5      (       a`  T" U R                  UR                  5        T" U R                  UR                  5       5        T" U R                  UR                  5       5        g T(       dB  T" U R$                  UR%                  5       5        T" U R&                  UR'                  5       5        T" U R(                  UR+                  5       5        U R(                  (       a<  U R,                  c   eUR.                  c   eT" U R,                  UR.                  5        g g )NrR   F)dtypeshaperequires_gradr>   	is_sparserS   rT   is_inferenceis_conjis_negrG   rH   rK   layout	dense_dim
sparse_dimis_coalescedis_sparse_compressedstridestorage_offsetis_view_is_viewbase_base)m1m2rP   gorY   rX   s     r3   rp   assert_metadata_eq.<locals>.go   s   "((BHH%bhh)"""B$4$45bjj"**- 	",,-s4e<<boor'89boou-"**bjjl+"))RYY[)"''%y}D'@A77rww)"-. <<bii+bllBLLN3bmmR]]_5boor'89!"%%bii+bllBLLN3bmmR]]_5 "))RYY[1"++R->->-@Abjj"++-0zzww***xx+++277BHH% r5   )rn   r7   ro   torch.TensorreturnNone)r1   torchTensorMetaTensorDescriberdescribe_tensor)rP   rn   ro   rX   rY   rp   s   `  ``@r3   assert_metadata_eqry   t   sH     b%,,'' 	--b1 && &&V b:r5   c                |    [        U [        R                  5      =(       a    U R                  [        R                  L $ rJ   )r1   ru   rv   rc   
sparse_coor@   s    r3   is_sparse_coor|      s'    a&G188u7G7G+GGr5   c                    U [         R                  [         R                  [         R                  [         R                  1;   $ rJ   )ru   
sparse_csr
sparse_csc
sparse_bsr
sparse_bsc)rc   s    r3   is_sparse_compressed_layoutr      s8    	  r5   c                n    [        U [        R                  5      =(       a    [        U R                  5      $ rJ   )r1   ru   rv   r   rc   r@   s    r3   rg   rg      s"    a&P+Fqxx+PPr5   c                <    [        U 5      =(       d    [        U 5      $ rJ   )r|   rg   r@   s    r3   is_sparse_anyr      s    63A66r5   c                R    [        X5      (       d   SU  S[        U5       35       eU$ )Nz	expected z	 but got )r1   type)tyobjs     r3   _checked_castr      s.    cD)B4yc DDJr5   c                    U R                   $ rJ   real_storage)rl   s    r3   _get_real_storager      s    r5   c                    Xl         g rJ   r   )rl   r   s     r3   _set_real_storager      s
     %r5   MetaStorageIdMetaTensorId_DescriberIdc                  |    \ rS rSrSrSS.SS jjrSS jrSS jrSS.     SS	 jjrS
SS.       SS jjr	Sr
g)rw      a  
Given a Tensor/Storage, generate a MetaTensorDesc/MetaStorageDesc
for it, which is enough information to reconstruct a meta tensor/fake tensor
corresponding to a Tensor as faithfully as possible.

This is a stateful conversion object because we keep track of the IDs
of the tensors/storages passed to us, so we can consistently give
the same ID when we see the same tensor/storage.
F	copy_datac                  [         U l        [        [         S-   5      q [        S5      U l        [        S5      U l        [        5       U l        [        5       U l	        Xl
        [        5       U l        [        5       U l        g )N   r   )DESCRIBER_NEXT_IDidr   r   next_tensor_idr   next_storage_idr'   lookup_tensorlookup_storager   settraced_tensorstraced_storagesselfr   s     r3   __init__MetaTensorDescriber.__init__   sb    #():Q)>?,8O.;A.>0213"(+),r5   c                    XR                   ;  a6  U R                  U R                   U'   [        U R                  S-   5      U l        U R                   U   $ Nr   )r   r   r   r   r2   s     r3   get_tensor_id!MetaTensorDescriber.get_tensor_id   sM    &&&$($7$7Dq!".t/B/BQ/F"GD!!!$$r5   c                    XR                   ;  a6  U R                  U R                   U'   [        U R                  S-   5      U l        U R                   U   $ r   )r   r   r   r   ss     r3   get_storage_id"MetaTensorDescriber.get_storage_id   sM    '''%)%9%9D"#01E1E1I#JD ""1%%r5   tracec               *  ^ ^ [        T R                  U5      UR                  5       T R                  (       a  UOS S9mU(       aN  TR                  T R
                  ;  a4  [        SUU 4S jS9  T R
                  R                  TR                  5        T$ )N)r   sizedatadescribe_storagec                 :   > T R                  TR                  5      $ rJ   as_jsonr   rr   s   r3   <lambda>6MetaTensorDescriber.describe_storage.<locals>.<lambda>      AIIdgg$6r5   metadata_fn)MetaStorageDescr   r   r   r   r   r$   add)r   r   r   r   s   `  @r3   r   $MetaTensorDescriber.describe_storage  sv     ""1% nn$
 QTT!5!55"6   $$QTT*r5   Trecurser   c               0  ^ ^! [        U5      nUR                  5       nUR                  nUR                  nUR                  n[        U5      n	[        U5      n
UR                  n[        U5      n[        U5      n[        U5      n[        R                  " U5      nS nSnU(       da  [        U5      (       dQ  U(       a  U	(       aC  U(       d<  U
(       d5  U(       d.  T R                  UR                  5       US9nUR!                  5       nS nU(       d.  [        U5      (       d  U(       a  U	(       a  UR#                  5       nS nS nS nU(       d  U(       a  T R%                  ['        U5      US9nOU(       a  UR(                  R*                  S;  a  UR                  5       (       a  [-        S5      eU
(       d=  [        R.                  " U5        T R%                  [        R0                  " U5      US9nUnO`[        R2                  R5                  5       nT R%                  [7        UU5      US9n[        R2                  R8                  R;                  5       nS nU
(       a2  [        R8                  R<                  R?                  5        n S S S 5        S nS nS nU	(       a\  [A        US5      (       d   eURC                  5       u  nnU Vs0 s H  nUT R%                  [E        UU5      US9_M      nn[+        U5      nSSK#J$n  [J        RM                  U5      n[E        [N        SS5      n[Q        S@0 S	T RS                  U5      _S
U_SU(       a  SOURU                  5       _SU_SURV                  _SURY                  5       _SURZ                  _SU_SU_SU
_SU_SU_SU_SU_SUR]                  5       _SUR_                  5       _S[a        U[        Rb                  Rd                  5      _SU	_SU_SUU;   a  UU   Rf                  Ri                  5       OS _SU_SU_SUR(                  _S URk                  5       _S!U_S"U_S#[m        [E        US$[o        5       5      5      _S%UR                  (       d  [q        U5      (       a  URs                  5       OS _S&UR                  (       d  [q        U5      (       a  URu                  5       OS _S'UR                  (       a  URw                  5       OS _S(U(       aM  UR                  [        Rx                  [        Rz                  1;   a  T R%                  UR}                  5       SUS)9OS _S*U(       aM  UR                  [        Rx                  [        Rz                  1;   a  T R%                  UR                  5       SUS)9OS _S+U(       aM  UR                  [        R                  [        R                  1;   a  T R%                  UR                  5       SUS)9OS _S,U(       aM  UR                  [        R                  [        R                  1;   a  T R%                  UR                  5       SUS)9OS _S-U(       a/  [q        U5      (       a  T R%                  UR                  5       SUS)9OS _S.[        U5      =n b  T R%                  U US9OS _S/UR                  5       (       a)  [        R2                  R                  R                  U5      OS _S0U_S1U(       d  U(       a  [        U5      OS _S2U(       a  [        U5      OS _S3U(       a<  UR                  5       (       a'  UR                  b  T R%                  UR                  US9OS _S4[        R                  R                  R                  U5      _S5U_S6U_S7U_S8U_S9U_S:U_S;U_S<T R                  (       a  UOS _6m!U(       aN  T!R                  T R                  ;  a4  [        S=U!U 4S> jS?9  T R                  R                  T!R                  5        T!$ ! , (       d  f       GN= fs  snf )ANr   r   xlalazyzVCannot safely fakify a view because this process drops the view information right now.__tensor_flatten__)_tensor_symint_registryrR   Fr   storager`   r>   r^   ndimr\   r_   	is_mkldnnis_functorch_wrappedr   r   r   rj   ra   rb   is_parameterr&   	is_nested
nested_intis_functionalrc   devicer   rh   ri   dynamo_dynamic_indices_dynamo_dynamic_indicesre   rd   rf   crow_indicesr   col_indicesccol_indicesrow_indicesvaluesrG   creation_meta	unwrappedlevelbdimrl   	fake_mode	view_funcattrsctxr   functorch_stackautograd_meta_fromcurrent_levelr   rx   c                 :   > T R                  TR                  5      $ rJ   r   r   s   r3   r   5MetaTensorDescriber.describe_tensor.<locals>.<lambda>  r   r5   r   rM   )SrA   rk   r_   rc   r   r&   r   r   r   r   r   ru   _is_functional_tensorr   r   untyped_storageri   rh   rx   r   r   r   r?   _sync_from_functional_tensor_C$_functionalization_reapply_views_tlsr   
_functorchr   pyfunctorch#temporarily_clear_interpreter_stackhasattrr   rS   $torch.nested._internal.nested_tensorr   ViewFuncfrom_tensorrT   r7   r   r`   r^   dimr\   ra   rb   r1   nn	Parameternoder   r   listr   rg   re   rd   rf   r~   r   r   r   r   r   r   r   r   rH   	_autograd_get_creation_metar!   r    rm   _subclassesfake_tensormaybe_get_fake_moder   r   r   r$   r   )"r   r2   r   r   r>   rj   r_   rc   r   is_traceable_wrapper_subclass_vr   r   is_batchedtensor_vis_legacy_batchedtensor_vis_gradtrackingtensor_vr   r   ri   rh   r   r   r   reapply_viewsmaybe_functorch_stackr   r   type_v	raw_attrsattrr   r   is_inference_mode_disabledrG   r   s"   `                                @r3   rx   #MetaTensorDescriber.describe_tensor  s    q/**,KK	KK	*G*J':1=KK	-a0$;A$>!"7":33A6 *622"A $( ++A,=,=,?u+MG--/N*622"A
 XXZF
 	!!8,,]1-=U,KI qxx}}OCzz||"l  (A 0011!4E 1 	 &'" % M M O 00-a?u 1 	 !& 3 3 A A C $!!--QQSWl T *123333113NIs &%D d**71d+;5*II%   !WFP((+	 &-S2JE%R"* g
!!!$g
g
 #=!..BRg
 	g

 //g
 g
 ''g
  g
  g
  "6!g
" 0#g
$ %>%g
& #:'g
( )g
* IIK+g
, 88:-g
. $Auxx'9'9:/g
0 +J1g
2  3g
8 // (*//::<;g
> (?g
@ Ag
B 88Cg
D Eg
F Gg
H *Ig
J $(3Lce(T#UKg
N #$++1Ea1H1HdOg
R (){{6J16M6MakkmSWSg
T ./[[)dUg
` qxxE,<,<e>N>N+OO $$Q^^%5uE$Rcg
j qxxE,<,<e>N>N+OO $$Q]]_e5$Qmg
t qxxE,<,<e>N>N+OO $$Q^^%5uE$Rwg
~ qxxE,<,<e>N>N+OO $$Q]]_e5$QAg
H 3A66 $$QXXZe$LKg
R &aL(D5 $$T$7Ug
Z =>JJLL""55a8d[g
^  _g
d &)@  "gg
j '9"dkg
p qzz||0C $$QWWE$:sg
v ''33GGJwg
x  yg
z {g
| }g
~ g
F 2Gg
H  2Ig
J (Kg
L nn$Mg
P QTT!4!44!6 ##ADD)I TSs   `%`
`)r   r   r   r   r   r   r   r   Nr   boolrs   rt   )r2   rr   rs   r   )r   torch.UntypedStoragers   r   )r   r  r   r  rs   r   )r2   rr   r   r  r   r  rs   r7   )__name__
__module____qualname____firstlineno____doc__r   r   r   r   rx   __static_attributes__rM   r5   r3   rw   rw      st     -2 /%& 9>%15	& 37eUU+/U?CU	U Ur5   rw   )frozenc                  >    \ rS rSr% S\S'   S\S'   S\S'   SS jrS	rg
)r   i  r   r   intr   Optional[torch.UntypedStorage]r   c                    U R                   U[        U R                  [        5      (       a  U R                  S.$ [	        U R                  5      S.$ )N)r   describer_idr   )r   r1   r   r  repr)r   r  s     r3   r   MetaStorageDesc.as_json  sF    ''(!+DIIs!;!;DII
 	
 BFdii
 	
r5   rM   Nr  r   rs   zdict[str, object])r  r  r  r  __annotations__r   r  rM   r5   r3   r   r     s    
I )(
r5   r   c                  V    \ rS rSr\  S         SS jj5       r\SS j5       rSrg)	r   i  Nc                    g rJ   rM   r   r2   new_basesymint_visitor_fntensor_visitor_fns        r3   applyViewFunc.apply  s     	r5   c                `    [        U 5      (       a
  [        5       $ [        U R                  5      $ rJ   )r4   _FakeTensorViewFunc_CustomViewFunc_view_func_unsafer@   s    r3   r   ViewFunc.from_tensor  s'    1&(("1#6#677r5   rM   NN)
r2   r9   r!  r9   r"  Optional[Callable[[int], int]]r#  ,Optional[Callable[[torch.Tensor], _TensorT]]rs   r9   )r2   rr   rs   r   )	r  r  r  r  r   r$  staticmethodr   r  rM   r5   r3   r   r     sb    
 =AJN  :	
 H 
  8 8r5   r   c                  B    \ rS rSr\  S         SS jj5       rSrg)r'  i  Nc                j    [         R                  R                  R                  R	                  XX45      $ rJ   )ru   r   r   r+   r)  r   s        r3   r$  _FakeTensorViewFunc.apply  s/       ,,77II*
 	
r5   rM   r+  )
r2   rr   r!  rr   r"  r,  r#  z.Optional[Callable[[torch.Tensor], FakeTensor]]rs   r+   )r  r  r  r  r   r$  r  rM   r5   r3   r'  r'    sN    
 =ALP	
	
 	
 :		

 J	
 
	
 	
r5   r'  r+   c                  N    \ rS rSr% S\S'   \  S         SS jj5       rSrg)	r(  i"  zpCallable[[torch.Tensor, Optional[Callable[[int], int]], Optional[Callable[[torch.Tensor], _TensorT]]], _TensorT]funcNc                &    U R                  X#U5      $ rJ   )r3  r   s        r3   r$  _CustomViewFunc.apply-  s     yy6GHHr5   rM   r+  )
r2   rr   r!  rr   r"  r,  r#  r-  rs   r9   )r  r  r  r  r  r   r$  r  rM   r5   r3   r(  r(  "  sa      
 =AJNII I :	I
 HI 
I Ir5   r(  c                  *    \ rS rSr      SS jrSrg)_MetaTensorCallbacki>  c                  g rJ   rM   )r   argr   s      r3   __call___MetaTensorCallback.__call__?  s     	r5   rM   N)r9  Callable[[], torch.Tensor]r   Union[torch.device, str]rs   r;   r  r  r  r  r:  r  rM   r5   r3   r7  r7  >  s    -=U	r5   r7  c                       \ rS rSr% S\S'   Srg)_MetaTensorCallbackKwargsiE  r=  r   rM   N)r  r  r  r  r  r  rM   r5   r3   r@  r@  E  s    $$r5   r@  )totalc                  *    \ rS rSr      SS jrSrg)_MetaTensorCallbackOptDeviceiM  c                   g rJ   rM   )r   r9  kwargss      r3   r:  %_MetaTensorCallbackOptDevice.__call__N  s     	r5   rM   N)r9  r<  rE  z!Unpack[_MetaTensorCallbackKwargs]rs   r;   r>  rM   r5   r3   rC  rC  M  s#    ' 4	
 
r5   rC  c                     \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S
\S'   S\S'   \R                  rS\S'   SrS\S'   Sr	S\S'   Sr
S\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S '   SrS\S!'   SrS\S"'   SrS\S#'   SrS\S$'   SrS%\S&'   S'rS\S('   SrS)\S*'   SrS\S+'   SrS\S,'   SrS-\S.'   SrS/\S0'   Sr S/\S1'   Sr!S/\S2'   Sr"S/\S3'   Sr#S/\S4'   Sr$S/\S5'   Sr%S\S6'   Sr&S/\S7'   Sr'S8\S9'   Sr(S:\S;'   Sr)S/\S<'   1 S=kr*S>\S?'   Sr+S@\SA'   Sr,SB\SC'   Sr-SD\SE'   Sr.SF\SG'   Sr/S\SH'   Sr0S\SI'   Sr1SJ\SK'   Sr2SL\SM'   Sr3SL\SN'   SRSO jr4\5SSSP j5       r6SQr7g)Tr7   iW  r   r   r  r   torch.dtyper\   ztorch.devicer   tuple[int, ...]r   z	list[int]r   torch.layoutrc   Fr  r`   r>   r^   r_   r   r   r   r   r   rj   r   NzOptional[int]r   r&   r   ra   rb   r   Optional[tuple[int, ...]]rh   r   ri   zOptional[MetaStorageDesc]r   re   rd   zOptional[bool]rf   zOptional[MetaTensorDesc]r   r   r   r   r   r   r   rl   z#Optional[dict[str, MetaTensorDesc]]r   zOptional[CreationMeta]r   rG   >
   r   r   r   r   r   r   r   r   r   r   zClassVar[set[str]]_UNSERIALIZABLEzOptional[object]r   zOptional[type]r   zOptional[FakeTensorMode]r   zOptional[ViewFunc]r   r   r   zOptional[list[CInterpreter]]r   Optional[torch.Tensor]r   r   c                  ^ SU4S jjm[         R                  " U 5       Vs0 s H  n[        XR                  5      UR                  L a  M'  UR                  S:X  a  [        XR                  5      (       d  MS  UR                  T" UR                  [        XR                  5      5      _M     nnUR                  SU05        U$ s  snf )Nc                  > U S;   a  g U [         R                  ;   a  [        U5      $ [        U[        R
                  [        R                  [        R                  45      (       a  [        U5      $ [        U[        R                  5      (       a  [        U5      $ [        U[        [        45      (       a  U Vs/ s H  nT" X5      PM     sn$ [        U[        [         45      (       a  UR                  $ [        U[        5      (       a  [        U5      $ U S:X  aD  [        U[        5      (       a/  UR!                  5        VVs0 s H  u  p2X2R                  _M     snn$ U$ s  snf s  snnf )N)r   r   r   )r7   rL  r  r1   ru   r   r\   rc   SymInttupler   r   r   r   strdictitems)kvv1k1jsons       r3   rY  $MetaTensorDesc.as_json.<locals>.json  s    22N222Aw!ellEKKFGGAw!U\\**Aw!eT]++./0aQa00!o~>??tt!\**1vG|
1d 3 301	:	fbEE		::H 1 ;s   :E"E'r   r  )rU  rR  rV  objectrs   r[  )dataclassesfieldsrS   namedefaultupdate)r   r  fieldr   rY  s       @r3   r   MetaTensorDesc.as_json  s    	. %++D1

1jj)U]]: D
 JJ"::#D**5 DEJJUZZzz)BCC1 	
 

 	
.,/0

s   &C(C85Cc                    U R                   $ rJ   )r   r   s    r3   r]   MetaTensorDesc.shape  s    yyr5   rM   r  )rs   rI  )8r  r  r  r  r  ru   stridedrc   r`   r>   r^   r_   r   r   r   r   r   rj   r   r   r&   r   ra   rb   r   rh   ri   r   re   rd   rf   r   r   r   r   r   r   r   rl   r   r   rG   rL  r   r   r   r   r   r   r   r   r   r   propertyr]   r  rM   r5   r3   r7   r7   W  s.   
I %% ==FL(L$GTM4ItIt!&$&"d"$)T)"'4'GTIt !%J$*/!4/M4GTFDL$(,F%,NC
 *.G&- $J$#I}##'L.'-1L*1,0K)0-1L*1,0K)0'+F$+*.I'.D-%)D
")15E.5,0M)0%)D
")+O'  !C	 D.*.I'.$(I!(  E=#'M='48O1815.5
 $(D
 '"H  r5   c                `    [        U5      [        R                  La  g U R                  U5        g rJ   )r   ru   rv   copy_)dstsrcs     r3   
_safe_copyrl    s     Cy$IIcNr5   c                \    [        U 5      [        R                  La  g U R                  5       $ rJ   )r   ru   rv   clone)rk  s    r3   _safe_clonero    s!    Cy$99;r5   c                     \ rS rSrSS.SS jjrSS jrSS jrSS jrSS jrSS	 jr	SS
 jr
      SS jr\SS j5       r\ S     SS jj5       r\S S j5       r            S!S jr SSSSSS.             S"S jjjrSrg)#MetaConverteri  Fr   c                   [         R                  " 5       U l        [         R                  " 5       U l        SU l        SU l        S U l        SU l        Xl        [        US9U l
        g )Nr   r   )weakrefWeakValueDictionarystorage_memotensor_memohitmissdel_hookarg_cntr   rw   	describerr   s     r3   r   MetaConverter.__init__  s_     '') 	 '') 	 	
 #,yAr5   c                L    U R                   S:  =(       a    U R                  S:H  $ )Nr   )rw  rx  rd  s    r3   
successfulMetaConverter.successful"  s    xx!|.		Q.r5   c                N    U R                   R                  UR                  S 5      $ rJ   rv  getr   r   s     r3   get_tensor_memoMetaConverter.get_tensor_memo%  s    ##ADD$//r5   c                \    U R                   R                  UR                  S 5      nUc   eU$ rJ   r  )r   r2   r   s      r3   _checked_get_tensor_memo&MetaConverter._checked_get_tensor_memo(  s-      t,}}r5   c                4    X R                   UR                  '   g rJ   )rv  r   )r   r2   rV  s      r3   set_tensor_memoMetaConverter.set_tensor_memo-  s    !"r5   c                N    U R                   R                  UR                  S 5      $ rJ   )ru  r  r   r   s     r3   get_storage_memoMetaConverter.get_storage_memo0  s      $$QTT400r5   c                4    X R                   UR                  '   g rJ   )ru  r   )r   r   rV  s      r3   set_storage_memoMetaConverter.set_storage_memo3  s    "#!$$r5   c                  ^ U R                  T5      =nc  U" U4S j5      R                  5       nU R                  (       ad  [        R                  " 5          [        5          TR                  c   e[        UTR                  R                  5       5        S S S 5        S S S 5        U R                  TU5        U$ U$ ! , (       d  f       N,= f! , (       d  f       N5= f)Nc                 `   > [         R                  " T R                  [         R                  SS9$ Nmetar\   r   )ru   emptyr   uint8)r   s   r3   r   ,MetaConverter.meta_storage.<locals>.<lambda>?  s    AFF%++fMr5   )
r  r   r   ru   no_gradr%   r   r   rn  r  )r   r   callbackmemor_ss    `   r3   meta_storageMetaConverter.meta_storage6  s     ))!,,D5Mo  ~~ ]]_km66---%c166<<>: '4_ !!!S)JK '4m__s$   C!4B;C;
C		C
Cc                8    [         R                  " [        U5      $ rJ   )typingcastr9   )clsr2   s     r3   _checked_cast_tensor_t$MetaConverter._checked_cast_tensor_tL  s     {{8Q''r5   Nc                .    U R                  U" 5       5      $ rJ   )r  )r  r2   r   s      r3   _identity_callable MetaConverter._identity_callableQ  s     ))!#..r5   c                    [         R                  R                  R                  SS5      nU" U5      n[        R
                  " [        U5      $ )Nz9Internal error: Tried to backward() through example inputr   )ru   r   
_functionsDelayedErrorr  r  r9   )r  r2   errfnerrs       r3   _backward_errorMetaConverter._backward_errorY  s>    ##00G
 Ah{{8S))r5   c                %  ^ ^^^^^^ ^!^"^#^$^%^&^'^(^) [         R                  " UTR                  S9m#Tc$  SSKJn  U" S[        T R                  5       35      m[        R                  R                  5       R                  [        R                  R                  R                  5      (       a   eT =R                  S-  sl        [        R                  m&Tb  TR                   m&T4       S&U4S jjjm)T4       S'U)4S jjjnTT4           S(U#U U4S jjjm$          S)U!4S	 jjm!T4       S*U!U#U$U&U UU)U4S
 jjjnT R#                  T5      Gc  Sm[        R$                  " TR&                  5         TR(                  (       Gae  TR*                  n	T#" U4S j5      n
T R,                  (       al  TR.                  c   e[        R0                  " 5          [3        5          [5        U
5      (       d   e[7        TR.                  5      U
l        S S S 5        S S S 5        [;        U
5      (       d   S5       eU
R=                  [?        TR@                  5      5        TRB                  (       a  SU
l!        TRB                  (       aj  U	(       dc  T RE                  U
RG                  5       5      n
[        RH                  " 5          U
R=                  [?        TR@                  5      5        S S S 5        GOGO[K        TRL                  5      (       Ga  TR*                  n	TRL                  [        RN                  [        RP                  1;   as  TRR                  c   eTRT                  c   eTRV                  c   eTRX                  TRR                  -
  TRT                  -
  nTRV                  RZ                  US-   US-    m"OSm"TRL                  [        R\                  [        RN                  1;   a&  TR^                  c   eTR^                  R`                  m%O%TRb                  c   eTRb                  R`                  m%T#" U"U%U4S j5      n
T R,                  (       al  TR.                  c   e[        R0                  " 5          [3        5          [5        U
5      (       d   e[7        TR.                  5      U
l        S S S 5        S S S 5        [;        U
5      (       d   S5       eTRB                  (       a  SU
l!        TRB                  (       a  U	(       d  T Re                  U
5      n
G
O]TRf                  (       a!  TRh                  (       d  SSK5J6n  U" S5        G
O+TRn                  (       Gaf  TR*                  n	T)" TT5      u  m'm(nT#" U'U(U4S j5      n
T R,                  (       a  [        R0                  " 5          [3        5          TRp                  c   eTRr                  c   e[5        U
5      (       d   e[        Rt                  " TRp                  TRr                  TR`                  TR                  S9U
l        TR.                  c   e[w        U
R8                  TR.                  5        S S S 5        S S S 5        [;        U
5      (       d   S5       eTRB                  (       a  SU
l!        TRB                  (       a  U	(       d  T Re                  U
5      n
GOTRx                  (       a7  TRz                  (       a  SSK5J6n  U" S5        S+UU U#U UUU4S jjm T " T5      n
GOkTR|                  (       a  TR                  R~                  S;  a  TR                  c   eTRx                  (       a   eT R                  TR                  TT#TT5      nT RE                  [        R                  " U5      5      n
[        R                  " TR                  U
5        GOTRz                  (       Ga  TR                  c   eS nT(       a5  Tb2  SSKFJGn  [        TU5      (       d   eTR                  b  TR                  nT R                  TR                  TT#[        R                  R                  R                  TS5      U5      n      S,S jn[        R                  R                  [        R                  R                  R                  5      n[        R                  R                  [        R                  R                  R                  S5         UR`                  TR`                  :X  a  OU" UR`                  TR`                  5      (       a&  T RE                  [        R                  " U5      5      nOrU" TR`                  UR`                  5      (       a&  T RE                  [        R                  " U5      5      nO*T RE                  UR                  TR`                  5      5      nTR*                  (       a9  [        R0                  " 5          U" UT5      n
S S S 5        TRB                  W
l!        OTR                  RB                  TRB                  :X  a(  [        RH                  " 5          U" UT5      n
S S S 5        OTRB                  (       d   e[        R0                  " 5          [        5          T RE                  UR                  URZ                  5      5      nS S S 5        S S S 5        TRB                  Wl!        [        RH                  " 5          U" UT5      n
S S S 5        TR                  c   e[        R                  R                  R                  W
TR                  5        [        R                  R                  [        R                  R                  R                  U5        GOTR*                  n	TR                  (       d"  TR                  (       d  TRx                  (       d  TR                  (       a  [        sS S S 5        $ T)" TTT5      u  m'm(nTRh                  (       a	  T$" TT'T(S9n
OT#" U'U(U4S j5      n
T R,                  (       a  [        R0                  " 5          [3        5          TRp                  c   eTRr                  c   e[5        U
5      (       d   e[        Rt                  " TRp                  TRr                  TR`                  TR                  S9U
l        [w        U
R8                  TR.                  5        S S S 5        S S S 5        [;        U
5      (       d   S5       eTRB                  (       a)  TRB                  U
l!        U	(       d  T Re                  U
5      n
TR                  nUc   eUR                  T R                  ;  a  U
Rf                  (       d(  U
Rs                  5       T(:X  a  U
R                  5       U:X  a  T R                  UU
R                  5       5        T R,                  (       aS  [5        U
5      (       d   eU
R8                  c   e[        U
R                  5       U
R8                  R                  5       5        GODT R                  UT#S9n[        R                  " 5       nSS KcJdnJen  U" U
5      nUb  U" U5      n[        R0                  " 5          T&" 5          U   U
R                  UUT'T(5        S S S 5        T R,                  (       a  [        R0                  " 5          [3        5          [5        U
5      (       d   eU
R8                  c   eTRr                  c   eU
R8                  R                  [        U5      TR                  TRp                  TRr                  5        S S S 5        S S S 5        S S S 5        S S S 5        TR                  b1  SS!KJLn  T R                  TR                  TT#U" TS"5      T5      W
lh        [        R                  R                  W
TR                  5        [        R                  R                  U
TR                  5        S S S 5        TR                  =(       a    TR                  T:H  n[        [        TW
SUS#9  SS$KFJpn  TR                  bC  U" TR                  Rp                  S:H  5      (       a  U
R                  5       R                  S5        TR                  (       a  SU
ls        TR                  b:  [5        U
5      (       d   eU
R                  R                  TR                  S%9U
lw        T R                  TU
5        T R                  T5      $ ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN#= f! , (       d  f       GN-= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! [        R                  R                  [        R                  R                  R                  U5        f = f! , (       d  f       GNZ= f! , (       d  f       GNd= f! , (       d  f       GN= f! , (       d  f       GN!= f! , (       d  f       GN+= f! , (       d  f       GN5= f! , (       d  f       GN?= f! , (       d  f       GN= f)-Nr   r   )ConstantSource__meta_utils_unknown_tensorr   c           
     4  > U R                   c   eTb  U R                  nUb2  UR                  TL a#  U R                  U R                   U R                  4$ [        U4S jU R                   5       5      n[        U4S jU R                    5       5      nTR                  U R                  5      nTR                  UUU[        U R                  5       Vs/ s H  owU R                  ;   PM     snUUS9$ U R                  U R                   U R                  4$ s  snf )Nc              3  F   >#    U  H  nTR                  U5      v   M     g 7frJ   #_maybe_specialize_sym_int_with_hint).0sz	shape_envs     r3   	<genexpr>VMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset.<locals>.<genexpr>  s&      #"(B "EEbII"(   !c              3  F   >#    U  H  nTR                  U5      v   M     g 7frJ   r  )r  sdr  s     r3   r  r    s&      %"*B "EEbII"*r  )symbolic_context)rh   r   r  r   ri   rQ  r  -_create_symbolic_sizes_strides_storage_offsetranger   r   )	r2   rk  r  r   t_sizet_stridet_storage_offsetdr  s	           r3    sym_sizes_strides_storage_offsetCMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset  s    88'''$KK	(Y-@-@I-M FFAHHa.>.>?? # #"#&&# F  % %"#((%  H (1'T'T((($ %RR (@EaffN1a666N)9 S   !*:*:;; Os   Dc                `   > T" XU5      u  nnn[         R                  " UUU R                  SS9$ r  ru   empty_stridedr\   )inner_t	inner_srcr  inner_sizesinner_strides_inner_storage_offsetr  s         r3   empty_create/MetaConverter.meta_tensor.<locals>.empty_create  sA     1EUV	%&&mm	 r5   c                  >^^^ SSK Jm  SSKJm  U R                  c   eU R
                  c   eUb  UOU R                  nUb  UOU R                  nUb  [        UT5      (       d   e              S	UUUU
U4S jjmUc   eT" XX#T	U5      nUR                  U:X  d$   SU R
                   SU SUR                   35       eUR                  5       U:X  d(   SU R
                   SU SUR                  5        35       eU$ )
Nr   
AttrSource)SubclassSymbolicContextc           	     X  > U R                   c  TR                  U TUUU5      $ 0 nU R                   R                  5        H  u  pxS n	Ub^  [        UT5      (       d   eUR                  U   =n
 b8  [        [        R                  R                  R                  R                  U
5      n	T" XW5      n[        R                  " XHR                  S9nT" UUR                  UR                  U	UU5      nXU'   M     U R                   c   eU R                   R#                  X`R$                  X5      $ )Nr  )r   meta_tensorrT  r1   inner_contextsr   ru   fxexperimentalsymbolic_shapesr.   	functoolspartialr   r   rh   r   __tensor_unflatten__r   )r2   
outer_sizeouter_strider  r  sourceinner_tensorsr  meta_tensor_desccurrent_contextcurrent_context_current_sourceinner_callbacknew_empty_tensorr  r  _empty_create_subclassr   r  s                 r3   r  XMetaConverter.meta_tensor.<locals>.empty_create_subclass.<locals>._empty_create_subclass  s?    77?++! (  !#./ggmmo*D&*O'3)*:<STTTT0@0O0OPT0UU,!%& /< % 5 5 E E U U 0/O
 &0%=N%.%6%6 )@)@&N (>((--(//'&&($ +;$'1 />4 vv)))vv22!55* r5   zExpected return value from z.__tensor_unflatten__() to have shape equal to z, but got: z/__tensor_unflatten__() to have stride equal to )r2   r7   r  rK  r  rK  r  ?Optional[torch.fx.experimental.symbolic_shapes.SymbolicContext]r  &_MetaTensorCallbackOptDevice[_TensorT]r  torch._guards.Sourcers   r9   )
torch._dynamo.sourcer  %torch.fx.experimental.symbolic_shapesr  r   r   r   rh   r1   r]   )r2   r  r  r  r  subr  r  r  r  r   r  s         @@@r3   empty_create_subclass8MetaConverter.meta_tensor.<locals>.empty_create_subclass  si    8U77&&&66%%% (2'=166J+7+C<L#+z "90 0  3!353 83#	3 A3 -3 3 3j %%%(|xC 99
* -affX 6"",[E* ::<</ -affX 6##/.CJJL>K/
 Jr5   c                  > SSK Jn  SSKJnJnJn  S nU R                  (       a*  U R                  c   eT" U R                  U" US5      X#5      nUR                  /U R                  -  n	U R                  (       av  U R                  c   e0 n
U R                  R                  5        H-  u  p[        U[        5      (       d   eT" X" X5      X#5      X'   M/     U" U	S /U R                  -  U
UUS9nU$ U" U	S /U R                  -  US9nU$ )Nr   r  )
DimDynamicStatelessSymbolicContextr  rm   )dynamic_sizesconstraint_sizesr  tensor_sourceview_base_context)r  r  r  )r  r  r  r  r  r  rj   rl   DYNAMICr   r&   r   rT  r1   rR  )r2   r  r  r  r  r  r  r  r  t_dynamic_sizesr  r  innert_symbolic_contextall_dynamic_symbolic_contexts                 r3   r  ?MetaConverter.meta_tensor.<locals>.all_dynamic_symbolic_contextH  s(    8    yyvv)))$@FFJvw7%!
  *112QVV;O..ww***   $%77==?KD%dC0000+Gz&7,N( $3
 &="1&*Vaff_#1"(&7&" &% &>"1&*Vaff_&7&" &%r5   c           	       >^^^^ [        5          T" UT5      u  p4nUR                  (       dK  [        U 5      (       d;  T" 5          TR                  U R                  X4U5      5      sS S S 5        sS S S 5        $ SSKJm  SSKJmJn  SUUUU4S jjn0 mUR                  (       ae  UR                  c   eUR                  c   eT" XUS9nUR                  5       u  pU	 H(  n[        X5      TUR                  U   R                  '   M*     TT4       SUUUU4S jjjnUR                  c   eUR                  R                  XX|5      n[         R"                  " U" UR%                  5       U5      5        [         R"                  " U" UR'                  5       U5      5        [         R"                  " U" UR)                  5       U5      5        UsS S S 5        $ ! , (       d  f       GNm= f! , (       d  f       g = f)	Nr   )EphemeralSource)r  sym_eqc                   >^ SSK Jm  TS L=(       a2    [        TT5      =(       a    [        U4S jTR                   5       5      nU(       d  Tc  U $ T" S5      nTR                  XS S9nTR                  X0US9$ )Nr   )r  c              3  @   >#    U  H  nUTR                   L v   M     g 7frJ   )STATIC)r  xr  s     r3   r  _MetaConverter.meta_tensor.<locals>.view_from_base.<locals>.symint_visitor_fn.<locals>.<genexpr>  s#       %C !2!22%Cs   r"  )positive)hintr  )r  r  r1   allr  create_symbolcreate_symintnode)	r   all_static_sizes
sym_sourcesymbolr  r  r  r  r  s	       @r3   r"  LMetaConverter.meta_tensor.<locals>.view_from_base.<locals>.symint_visitor_fn  s    P )4 &'79QR  %5%C%C   % (9+<  "11D!EJ&44QT4RF$66z 7  r5   r  r  c                   > U c  g T
R                   R                  U 5      nT	R                  US 5      nUb  U$ T
R                   R                  U 5      nT" S5      nT
R	                  UUUUT" XVX5      5      $ )Nr#  )r{  r   r  rx   r  )	visited_tr  r  
visited_idfake_visited_tvisited_desctemp_sourcer  r  real_to_fake_mappingr   s          r3   r#  LMetaConverter.meta_tensor.<locals>.view_from_base.<locals>.tensor_visitor_fn  s     !(# "&!=!=i!HJ%9%=%=j$%ON%1--#'>>#A#A)#LL #22E"FK++$! #4(y r5   )r   r  rs   r  )r  rr   r  8Optional[torch.fx.experimental.symbolic_shapes.ShapeEnv]r  r  rs   rr   )r#   r&   r  
as_stridedr  r  r  r  r  r   r   r   rS   r   r   r$  ru   _checkr   rh   ri   )rl   r2   r  sizesstridesri   r  r"  fake_tr   _r  r#  r  r  r  r  r  r  maybe_suppressr   r  r  r  s     `          @@@r3   view_from_base1MetaConverter.meta_tensor.<locals>.view_from_base  s    *+3Sv40 779$??
 ()#:: OOENK  *) ,+" A
 < (*$2277... 66--- (='(F  &88:HE %AHAV,QWWT]-=-=> !& "GO'+' 	' E' "' 'V {{... **. VFKKM59:VFMMOW=>VF$9$9$;^LMK ,+ *) ,+s*   5G)!G&	G)9EG)
G&	!G))
G7c            	        > [         R                  R                  R                  T R                  T R
                  T R                  T R                  [         R                  SS9$ )Nr  )r\   rc   r   )	ru   opsaten_sparse_coo_tensor_with_dimsre   rd   r   r\   r{   r@   s   r3   r   +MetaConverter.meta_tensor.<locals>.<lambda>0  sF    		 K KLLKKFF"#''#(#3#3#) !L !r5   z)the callback you passed in doesn't detachT   rM   c                    > [         R                  R                  R                  STR                  TR
                  T TTR                  TR                  SS9$ )Nr   r  )rc   r\   r   )ru   r&  r'  #_sparse_compressed_tensor_with_dimsrd   r]   rc   r\   )	blocksizeindex_dtyper2   s   r3   r   r)  c  sF    		 R RKKGG%'#$88"#''#) !S 	!r5   )unimplementedz;strided nested tensors are not supported by meta conversionc                 F   > [         R                  " T TTR                  SS9$ r  r  r  r  r2   s   r3   r   r)    s     3 3!7!''&!r5   r  z;view functorch tensors are not supported by meta conversionc           	       >^ ^^ T R                   (       a  T R                  c   eT R                  c   eT R                  c   eT
" T R                  5      nT R                  nT R                  n[        R
                  R                  R                  T R                  5         TR                  [        XU5      5      nS S S 5        U$ T R                  (       GaE  T R                  c   eT R                  c   e[        R                  R                  nU" 5          T
" T R                  5      nS S S 5        T R                  nUT	:X  a  WnOu[        R
                  R                  R                  T R                  5         TR                  [        R                  R
                  R                  WU5      5      nS S S 5        T R                  nT R                   (       a  [#        W5      (       a	  SUl        U$ T R                   (       a  U(       d  TR%                  W5      nW$ T R&                  (       ad  T R                  c   eT R(                  c   eTR+                  T R                  TTTT5      nTR                  [-        UT R(                  5      5      nU$ T R.                  c   eT R0                  mT R.                  mT" UUU 4S j5      nTR2                  (       a  [        R4                  " 5          [7        5          [        R8                  " T R0                  T R.                  T R:                  T R<                  S9Ul        T R@                  c   e[C        UR>                  T R@                  5        S S S 5        S S S 5        U$ U$ ! , (       d  f       W$ = f! , (       d  f       GNo= f! , (       d  f       GN= f! , (       d  f       NP= f! , (       d  f       U$ = f)NTc                 F   > [         R                  " T TTR                  SS9$ r  r  r1  s   r3   r   DMetaConverter.meta_tensor.<locals>._to_fake_tensor.<locals>.<lambda>  s     (;(;$)$+*+''+1	)"r5   r  )"r   r   r   r   ru   r   r   %temporarily_restore_interpreter_stackr   r  r   r   r   _DisableFuncTorch_wrap_for_gradr>   r^   rA   r  r   r   r  r   rh   r   r   r  r%   r  r\   r   real_tensorr   rl  )r2   ftlvlr   r   disable_functorchr>   r  r  GRAD_TENSOR_SENTINEL_VALUE_to_fake_tensorr  r   r  r  r  s   `      @@r3   r=  2MetaConverter.meta_tensor.<locals>._to_fake_tensor  s    --#$;;#::#:#$77#66#6#$66#55#5!0!=B"#''C#$66D
 "'!1!1!=!=!c!c ! 1 1" %)$?$?$22S$A%""L  !A 444#$;;#::#:#$77#66#6050J0J-!2!4%4Q[[%A "5"#''C"&@@$&%*%5%5%A%A%g%g$%$5$5&" )-(C(C(-(;(;(J(J2s(S)&A&" '(iiG <??26Z  !Y "#$($8$8$;V  !U __#$;;#::#:#$??#>>#>!%!1!1 ! ) (
 !' 0
"B !% ; ; 7AOO L!A8  !/ $%88#77#7$%FFE&'hhG (!"!A  $~~%*]]_km494G4G()()./gg/0xx	5&AM ,-66+=$=+=$.q}}aff$E 7D_  !qM" "L  !y "5!4&" &"Z 7Dm__  !sI    N N::N$-O8A4N6,O 
N
N!$
N36
O	 O
Or   )r  rm   c                n    [         R                  " U 5      =(       a    [         R                  " U 5      U:H  $ rJ   )utilsis_complex_dtypecorresponding_real_dtype)complex_dtype
real_dtypes     r3   	is_c_of_r,MetaConverter.meta_tensor.<locals>.is_c_of_r.  s2     "22=A * % > >} M)!*r5   Fr  c                 F   > [         R                  " T TTR                  SS9$ r  r  r1  s   r3   r   r)    s     E$7$7 % '&'gg'-	%r5   )r  )in_kernel_invocation_managerr   r  rG   rW   )guard_or_false)nt_tensor_id)r2   r7   rk  r  r  r  rs   z,tuple[tuple[int, ...], tuple[int, ...], int])r  r7   r  r  r  r  rs   rr   )r2   r7   r  rI  r  rI  r  r  r  zOptional[torch._guards.Source]rs   r9   )
r2   r7   r  r  r  r  r  _MetaTensorCallback[_TensorT]rs   z5torch.fx.experimental.symbolic_shapes.SymbolicContext)rl   r9   r2   r7   r  r  rs   r9   r2   r7   rs   r9   )rC  rH  rD  rH  rs   r  )zr  r  r   r  r  lenrv  ru   r   _dispatch_tls_local_exclude_sethasDispatchKeyPythonrz  
contextlibnullcontextsuppress_guardsr  inference_moder`   r_   r>   r   r   r  r%   r4   ro  r8  rA   _coalesced_r  rf   r^   r  rn  enable_gradr   rc   r   r   re   rd   r   r   r]   r~   r   r\   r   r  r   r&   torch._dynamo.excr/  r   r   rh   r  rl  r   rj   r   r   r   r  _to_functional_tensor_mirror_autograd_meta_tor   rl   r  r  r1   r  _dynamor  r  &_dispatch_tls_is_dispatch_key_excludedADInplaceOrView'_dispatch_tls_set_dispatch_key_excludedview_as_realview_as_complexviewr#   r   r   _set_creation_metar   r   r   NotImplementedr   r   ru  ri   r  r   r   r  r0   rH  r   set_r   rG   	_set_conjra   _set_negrb   r   ry   rP   rI  resize_r   	_is_paramr   r   create_symbolic_nested_intnested_int_memor  r  )*r   r2   r  	callback_r  r  r  r  r"  r>   r   	batch_dimr/  _storage_offsetr   base_symbolic_contextr  rl   rE  old_excludemidri   r   r  maybe_fake_mgrrH  r   mb_fake_moder  rY   rI  r<  r=  r  r-  r  r  r.  r!  r  r  r  s*   ``` ``                         @@@@@@@@@@@r3   r  MetaConverter.meta_tensorh  s    2;1B1Bahh2
 >; $-c$2B2B.C-DEF 88;;=AAHH  ''
 
 	
 
 	4 -7,B,B &66N !$	<$	<%$	<$	< :$	< $	<V !	#	+		 	 	6 !5;g	g	'g	 *g		g	 3g	 g	 g	Z0	&0	&(0	& P0	& 4	0	&
 C0	&h L	L	L	L	 L	 L	\ "*)+&%%ann5;;;iiG
 !	A ~~ vv111"]]_km#21#5#55#5,7,?AM /<_ (??W,WW? MM$q~~"67*.w
 !77	B"..0MM$q~~*>? 100::iiGxxE$4$4e6F6F#GG ||777 {{666 xx333$%FFQ\\$9AKK$G	$%HHNN9q=9q=$Q	$&	xxE$4$4e6F6F#GG ~~999&'nn&:&: ~~999&'nn&:&: 	A ~~ vv111"]]_km#21#5#55#5,7,?AM /<_ (??W,WW?*.w 003[[)H)H @!U [[[iiG
 9FC	' !A
 ~~"]]_km#$66#55#5#$88#77#7#21#5#55#5,1,?,? !-AM $%66#55#5&q}}aff= /<_ (??W,WW?*.w 003++yyC%YU! U!n (*A__o)M;;222 5555 $ 0 0! (!I 3333I>A 2213G3GKYYY 66---,0) %5%A  **:<TUUUU ,==I4D4V4V1++! ,,77H-D'2@K #((("Q"Q,,<<#K HHDD,,<<eE::0 &tzz177;;#'#>#>u?Q?QRV?W#XD&qww

;;#'#>#> % 5 5d ;$D $(#>#>tyy?Q#RD& 99 "'$24$; "1 /0ooAO vv33qF%*%6%6%8(6tQ(?A &9%8 () 6%*]]_6N6P*.*E*E(,		$**(=+&C 7Q_ 56OO 1%*%6%6%8(6sA(>A &9
  !:::**==aQHH!HH00@@+
  iiG //13J3J2222-S 65^ 9FDTU	&
 661%g %  >>!&+-'(vv'9 9'9'(xx'; ;';'6q'9'9 9'9050C0C$%FFAHHAGGAHH1" !+1==!&& A 3@ (??W,WW?*+//& !% 4 4Q 7A		A=(=tt4#4#44HHJ'1 ! 0 0 2n D --a1B1B1DE>>#21#5#55#5#$==#<<#<- ! 1 1 3Q]]5R5R5T #//H/E. '224 '
 (;1'='3-I,-WN"]]_n.>!/ !sNE7 K "0#~~%*]]_km+:1+=+=$=+=+,==+D$D+D+,88+?$?+?$%MM$6$6(9#(>()(8(8()()	%&	 7D_	 /?_ 66%? "--! "662(AF ""1aii0!!!QXX.] 6b ''QAGG7Q,Q  y!QdiX Myy$		!8K)L)L!!#++A.~~" ||'&q))))$%KK$J$J!" %K %!   A&,,Q//i /<m__$ 10F /<m__@ /<m__h "1 &9%8 7Q6P__
 &9%8 HH!HH00@@+H 3@-d "0 7Dm__	 /?.>__e 65s~  >A AJ=AD2)-AD AD2B'AJ=%AE*FAJ=<AE(-AE4AE(<C3AJ=/AF:B$AE:AF&JAJ=9C;AG84
AF>AAG8
AF01AG8AG+AGAG
.AG88
AG&AAG8BAJ=0AAJ=AIBAH?,AI4FAJ=AJ+AJAI#	,.AJAJ	%A6AI5AJ	#AJ+AJ+3BAJ=D 
AD/D*AD2D2
AE	D<AJ=E
AE	EAJ=E
AE%E AE(E(
AE7	E2AJ=E:
AF	FAFF
AF	FAJ=F
AF-	F(AG8F0
AF?	F:AG8G
AGGAGG
AG#	GAG8G&
AG5	G0AG8G8AAH<H<AJ=H?
AII	AII
AI 	IAJ=I#
AI2I-AJI5
AJI?AJ	J
AJJAJJ
AJ(J#AJ+J+
AJ:	J5AJ=J=
AKT)r  r  r  r   c               n  ^ ^^ Uc  T R                   nOUn[        U[        R                  5      (       a  UR                  R
                  S:X  dN  UR                  (       d=  UR                  5       (       aC  UR                  b6  UR                  R                  (       a  T =R                  S-  sl
        [        $ T =R                  S-  sl        OA[        R                  R                  U5      (       a  T =R                  S-  sl
        [        $ U$ Tc  SnT R                  R!                  XS9mU(       a  Tc   e[#        SU UU4S jS9  [$        R&                  " 5        nUR)                  [        R*                  R,                  R/                  5       5        [1        5       n	U	b7  UR)                  [        R2                  R4                  R7                  5       5        T R9                  TUUTU5      n
S S S 5        [        U5      [        R:                  R<                  L a  SW
l        W
$ ! , (       d  f       N== f)	Nr   r   Fr   describe_sourcec                 h   > T R                   R                  TR                  TR                  5       S.$ )N)r  r   r  )r{  r   r^  )r   r  t_descs   r3   r   (MetaConverter.__call__.<locals>.<lambda>n  s%    $(NN$5$5 ))$kkm%r5   r   T) r  r1   ru   rv   r   r   is_quantizedrk   rm   r_   rx  rc  rw  	overridesis_tensor_liker{  rx   r$   rR  	ExitStackenter_context	_dispatchpythonsuspend_functionalizationr"   r   r   r   r  r   r   rh  )r   r2   r  r  r  r  r   rk  
exit_stackstr   rw  s   `   `      @r3   r:  MetaConverter.__call__2  s    //I I a&& '  !''"5!'':K:K		Q	%%A__++A..IINI!! H>E ///?%%%! !!#z$$U__%;%;%U%U%WX')B~(($$00TTV    A $  7ehh((( AK - $#s   BH&&
H4)rz  r   ry  r{  rw  rx  ru  rv  r  )rs   r  )r2   r7   rs   rM  rL  )r2   r7   rV  r9   rs   rt   )r   r   rs   r  )r   r   rV  r  rs   rt   )r   r   r  z0Callable[[Callable[[], torch.Tensor]], _TensorT]rs   r  )r2   rr   rs   r9   rJ   )r2   r<  r   z"Optional[Union[torch.device, str]]rs   r9   )r2   r9   rs   r9   )r2   r7   r  Optional[ShapeEnv]rk  rK  r  Optional[Source]r  Optional[SymbolicContext]rs   r9   )r2   rr   r  r  r  z'Optional[_MetaTensorCallback[_TensorT]]r  r  r  r  r   r  rs   r9   )r  r  r  r  r   r~  r  r  r  r  r  r  classmethodr  r  r  r  r:  r  rM   r5   r3   rq  rq    sb   ,1 B*/0
#1$ C 
	, ( (  6:/%/ 3/ 
	/ / * *H0H0 &H0 1	H0
 !H0 4H0 
H0Z )-\
 =A#'6: \\ &\
 :\ !\ 4\ \ 
\ \r5   rq  )r2   r[  rs   zTypeIs[FakeTensor])r2   #Union[MetaTensorDesc, torch.Tensor]rs   r  )r2   r6   rs   zOptional[_TensorLikeT])r2   r6   rs   r6   )rN   r8   rO   r8   rs   rt   )rs   zGenerator[None, None, None])rP   z Callable[[object, object], None]rn   r  ro   rr   rX   r  rY   r  rs   rt   )r2   r[  rs   zTypeGuard[torch.Tensor])rc   rJ  rs   r  )r   ztype[_T]r   r[  rs   r8   )rl   r  rs   r  )rl   r  r   r  rs   rt   )rj  rr   rk  rM  rs   rt   )rk  rr   rs   rM  )n
__future__r   rR  r\  r  	threadingr  rD   rs  abcr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   typing_extensionsr   r   r   r   r   ru   torch._C._autogradr   torch._C._functorchr   r   r   r   r   r   r   r   r    r!   r"   torch._dispatch.pythonr#   torch._loggingr$   torch.utils._mode_utilsr%   torch.utils._python_dispatchr&   torch.utils.weakr'   collections.abcr(   r)   torch._guardsr*   r0   r+   r,   r  r-   r.   r4   r   DimListrv   r6   r8   r9   r;   rA   rH   rK   rP   localrT   rR   rV   ry   r|   r   rg   r   r   r   r   r  r   r   r   r   rw   r   r   r'  r(  r7  r@  rC  r7   rl  ro  rq  torch._prims_common_prims_commonr@  rM   r5   r3   <module>r     s   "         = !   M L  +    < + / F 0 )0$H
 P% ~'7FT]:U\\2~U\\TJ! oo #  + +  9/9+9 	9
 9 9 
9zHQ
7
%
%.B%	% -~s+ ~s+ O L L^ $
 
 
 $8wx  8 8& $
(<0 
 
 $Ihx('(*; I I6(GL$9 %	 %8W\-B  $RWX& R RBBGH% BJ$ $r5   