
    rhT                      d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 d dlmZmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZmZmZ d dlZd dlm Z  d d	l!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, d d
l-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6 er"d dl7m8Z8 d dl!m9Z9 d dl:m;Z; d dl<m=Z=m>Z> d dl?m@Z@mAZA dGdZBeCZD eddej                        ZF ed      ZG edej                        ZH edej                  d      ZIdHdZJdIdZKdJdZLdKd ZM ej                         ZOd!eO_P        edLd"       ZQd!d!d#	 	 	 	 	 	 	 	 	 	 	 dMd$ZRdNd%ZSdOd&ZTdNd'ZUdNd(ZVdPd)ZWdQd*ZX	 	 	 	 	 	 dRd+ZY ed,eZ      Z[ ed-eZ      Z\ ed.eZ      Z] e]d       a^ G d/ d0      Z_ ed1       G d2 d3             Z` ed1       G d4 d5eeH                Za ed1       G d6 d7ead8                Zb ed1       G d9 d:eaeH   eeH                Zc G d; d<eeeI         Zd G d= d>ed!?      Ze G d@ dAeeeI         Zf ed1       G dB deeH                ZgdSdCZhdTdDZi G dE dFeeH         Zjd dlkmlZm y)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                &    ddl m} t        | |      S )Nr   )r+   )torch._subclasses.fake_tensorr+   
isinstance)tr+   s     o/var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/torch/_subclasses/meta_utils.py_is_fake_tensorr4   >   s    8a$$    _TensorLikeTMetaTensorDesc_T_TensorT)bound_TensorT_covT)r:   	covariantc                :    	 | j                   S # t        $ r Y yw xY w)NF)is_leafRuntimeErrorr2   s    r3   safe_is_leafrA   K   s#    yy s    	c                    t        j                         5  t        j                  dd       | j                  cd d d        S # 1 sw Y   y xY w)NignorezThe .grad attribute of a Tensor)warningscatch_warningsfilterwarningsgradr@   s    r3   	safe_gradrH   S   s;    		 	 	" *KLvv  s   "AA
c                $    t        |       }|J |S N)rH   )r2   rG   s     r3   _expect_safe_gradrK   Y   s    Q<DKr5   c                &    | |k(  sJ |  d|        y )Nz !=  )abs     r3   	assert_eqrP   _   s    6 aSQC= 6r5   Fc               #     K   t        t        dd      } dt        _        	 d  | t        _        y # | t        _        w xY ww)Ndisable_inference_modeFT)getattrtlsrR   )priors    r3   $disable_inference_mode_for_fake_proprV   j   s5     C159E!%C+%*"U"s   A 0 A =A skip_symbolic	skip_leafc                    t        |t        j                        rt               j	                  |      n|}d fd ||      S )Nc                    | j                   |j                          s | j                  |j                          | j                  |j                         s | j                  |j                          | j                  |j                         t        t        dd      s" | j                  |j                                n | j                  d        | j                  |j                                 | j                  |j                                 | j                  d ut        |      d u       | j                   | j                  t        |             | j                  r | j                  |j                          | j                  |j                                 | j                  |j                                 | j                   |j!                                y t#        |       r` | j                  |j                          | j                  |j                                 | j                  |j                                y sB | j$                  |j%                                 | j&                  |j'                                 | j(                  |j+                                | j(                  r:| j,                  J |j.                  J  | j,                  |j.                         y y )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   z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_eqrx   t   sG     b%,,' 	--b1 && &&V b":r5   c                r    t        | t        j                        xr | j                  t        j                  u S rJ   )r1   rt   ru   rc   
sparse_coor@   s    r3   is_sparse_coor{      s'    a&G188u7G7G+GGr5   c                    | t         j                  t         j                  t         j                  t         j                  hv S rJ   )rt   
sparse_csr
sparse_csc
sparse_bsr
sparse_bsc)rc   s    r3   is_sparse_compressed_layoutr      s8    	  r5   c                d    t        | t        j                        xr t        | j                        S rJ   )r1   rt   ru   r   rc   r@   s    r3   rg   rg      s"    a&P+Fqxx+PPr5   c                2    t        |       xs t        |       S rJ   )r{   rg   r@   s    r3   is_sparse_anyr      s    63A66r5   c                J    t        ||       sJ d|  dt        |              |S )Nz	expected z	 but got )r1   type)tyobjs     r3   _checked_castr      s-    c2D)B4yc DDJr5   c                    | j                   S rJ   real_storage)rl   s    r3   _get_real_storager      s    r5   c                    || _         y rJ   r   )rl   r   s     r3   _set_real_storager      s     %Dr5   MetaStorageIdMetaTensorId_DescriberIdc                  d    e Zd ZdZddddZddZddZdd	 	 	 	 	 ddZd	dd
	 	 	 	 	 	 	 ddZy)rv   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                  t         | _        t        t         dz         a t        d      | _        t        d      | _        t               | _        t               | _	        || _
        t               | _        t               | _        y )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__zMetaTensorDescriber.__init__   sd    #():Q)>?,8O.;A.>0213"(+),r5   c                    || j                   vr6| j                  | j                   |<   t        | j                  dz         | _        | j                   |   S Nr   )r   r   r   r   r2   s     r3   get_tensor_idz!MetaTensorDescriber.get_tensor_id   sO    D&&&$($7$7Dq!".t/B/BQ/F"GD!!!$$r5   c                    || j                   vr6| j                  | j                   |<   t        | j                  dz         | _        | j                   |   S r   )r   r   r   r   ss     r3   get_storage_idz"MetaTensorDescriber.get_storage_id   sO    D'''%)%9%9D"#01E1E1I#JD ""1%%r5   tracec                   t         j                  |      |j                          j                  r|nd       |rNj                   j
                  vr6t        d fd        j
                  j                  j                         S )N)r   sizedatadescribe_storagec                 :     j                  j                        S rJ   as_jsonr   rr   s   r3   <lambda>z6MetaTensorDescriber.describe_storage.<locals>.<lambda>      AIIdgg$6 r5   metadata_fn)MetaStorageDescr   r   r   r   r   r$   add)r   r   r   r   s   `  @r3   r   z$MetaTensorDescriber.describe_storage  sv     ""1% nn$
 QTT!5!55"6   $$QTT*r5   Trecurser   c                  ! t        |      }|j                         }|j                  }|j                  }|j                  }t        |      }	t        |      }
|j                  }t        |      }t        |      }t        |      }t        j                  |      }d }d}|sFt        |      s;|r|	r7|s5|
s3|s1 j                  |j                         |      }|j!                         }d }|st        |      s|r|	r|j#                         }d }d }d }|s|r j%                  t'        |      |      }n|r|j(                  j*                  dvr|j                         rt-        d      |
s>t        j.                  |        j%                  t        j0                  |      |      }|}nct        j2                  j5                         } j%                  t7        ||      |      }t        j2                  j8                  j;                         }d }|
r2t        j8                  j<                  j?                         5 }	 d d d        d }d }d }|	rWtA        |d      sJ |jC                         \  }}|D ci c]   }| j%                  tE        ||      |      " }}t+        |      }ddl#m$} tJ        jM                  |      }tE        tN        dd      }tQ        d@i d	 jS                  |      d
|d|rdn|jU                         d|d|jV                  d|jY                         d|jZ                  d|d|d|
d|d|d|d|d|j]                         d|j_                         dta        |t        jb                  jd                        d|	d|d||v r||   jf                  ji                         nd d|d|d|j(                  d |jk                         d!|d"|d#tm        tE        |d$to                           d%|j                  stq        |      r|js                         nd d&|j                  stq        |      r|ju                         nd d'|j                  r|jw                         nd d(|rN|j                  t        jx                  t        jz                  hv r" j%                  |j}                         d|)      nd d*|rN|j                  t        jx                  t        jz                  hv r" j%                  |j                         d|)      nd d+|rN|j                  t        j                  t        j                  hv r" j%                  |j                         d|)      nd d,|rN|j                  t        j                  t        j                  hv r" j%                  |j                         d|)      nd d-|r-tq        |      r" j%                  |j                         d|)      nd d.t        |      x}  j%                  | |      nd d/|j                         r)t        j2                  j                  j                  |      nd d0|d1|s|rt        |      nd d2|rt        |      nd d3|r9|j                         r)|j                   j%                  |j                  |      nd d4t        j                  j                  j                  |      d5|d6|d7|d8|d9|d:|d;|d< j                  r|nd !|rN!j                   j                  vr6t        d=! fd>?        j                  j                  !j                         !S # 1 sw Y   xY wc c}w )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   rw   c                 :     j                  j                        S rJ   r   r   s   r3   r   z5MetaTensorDescriber.describe_tensor.<locals>.<lambda>  r   r5   r   rM   )SrA   rk   r_   rc   r   r&   r   r   r   r   r   rt   _is_functional_tensorr   r   untyped_storageri   rh   rw   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   rw   z#MetaTensorDescriber.describe_tensor  s    q/**,KK	KK	*G*J':1=KK	-a0$;A$>!"7":33A6 *62"A $( ++A,=,=,?u+MG--/N*6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S Wl *12333113NIs & d**71d+;5*IIE  !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 #$++1Ea1HdOg
R (){{6J16MakkmSWS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 $$QXXZe$LKg
R &aL(D5 $$T$7Ug
Z =>JJL""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 s   4]+%]]Nr   boolrr   rs   )r2   rq   rr   r   )r   torch.UntypedStoragerr   r   )r   r  r   r  rr   r   )r2   rq   r   r  r   r  rr   r7   )	__name__
__module____qualname____doc__r   r   r   r   rw   rM   r5   r3   rv   rv      sn     -2 /%& 9>%15	& 37eUU+/U?CU	Ur5   rv   )frozenc                  4    e Zd ZU ded<   ded<   ded<   d	dZy)
r   r   r   intr   Optional[torch.UntypedStorage]r   c                    | j                   |t        | j                  t              r| j                  dS t	        | j                        dS )N)r   describer_idr   )r   r1   r   r  repr)r   r  s     r3   r   zMetaStorageDesc.as_json  sC    ''(!+DIIs!;DII
 	
 BFdii
 	
r5   Nr  r   rr   zdict[str, object])r  r  r  __annotations__r   rM   r5   r3   r   r     s    
I )(
r5   r   c                  H    e Zd Ze	 	 d	 	 	 	 	 	 	 	 	 dd       Zedd       Zy)r   Nc                     y rJ   rM   r   r2   new_basesymint_visitor_fntensor_visitor_fns        r3   applyzViewFunc.apply  s     	r5   c                V    t        |       r
t               S t        | j                        S rJ   )r4   _FakeTensorViewFunc_CustomViewFunc_view_func_unsafer@   s    r3   r   zViewFunc.from_tensor  s$    1&(("1#6#677r5   NN)
r2   r9   r  r9   r  Optional[Callable[[int], int]]r  ,Optional[Callable[[torch.Tensor], _TensorT]]rr   r9   )r2   rq   rr   r   )r  r  r  r   r  staticmethodr   rM   r5   r3   r   r     sb    
 =AJN  :	
 H 
  8 8r5   r   c                  6    e Zd Ze	 	 d	 	 	 	 	 	 	 	 	 dd       Zy)r  Nc                n    t         j                  j                  j                  j	                  ||||      S rJ   )rt   r   r   r+   r  r  s        r3   r  z_FakeTensorViewFunc.apply  s4       ,,77IIx*,=
 	
r5   r  )
r2   rq   r  rq   r  r  r  z.Optional[Callable[[torch.Tensor], FakeTensor]]rr   r+   )r  r  r  r   r  rM   r5   r3   r  r    sN    
 =ALP	
	
 	
 :		

 J	
 
	
 	
r5   r  r+   c                  B    e Zd ZU ded<   e	 	 d	 	 	 	 	 	 	 	 	 dd       Zy)r  zpCallable[[torch.Tensor, Optional[Callable[[int], int]], Optional[Callable[[torch.Tensor], _TensorT]]], _TensorT]funcNc                (    | j                  |||      S rJ   )r$  r  s        r3   r  z_CustomViewFunc.apply-  s     yy#46GHHr5   r  )
r2   rq   r  rq   r  r  r  r  rr   r9   )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                       e Zd Z	 	 	 	 	 	 ddZy)_MetaTensorCallbackc                   y rJ   rM   )r   argr   s      r3   __call__z_MetaTensorCallback.__call__?  s     	r5   N)r)  Callable[[], torch.Tensor]r   Union[torch.device, str]rr   r;   r  r  r  r*  rM   r5   r3   r'  r'  >  s    -=U	r5   r'  c                      e Zd ZU ded<   y)_MetaTensorCallbackKwargsr,  r   N)r  r  r  r  rM   r5   r3   r/  r/  E  s    $$r5   r/  )totalc                       e Zd Z	 	 	 	 	 	 ddZy)_MetaTensorCallbackOptDevicec                    y rJ   rM   )r   r)  kwargss      r3   r*  z%_MetaTensorCallbackOptDevice.__call__N  s     	r5   N)r)  r+  r4  z!Unpack[_MetaTensorCallbackKwargs]rr   r;   r-  rM   r5   r3   r2  r2  M  s#    ' 4	
 
r5   r2  c                     e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ej
                  Zded<   dZded<   dZded<   dZ	ded<   dZ
ded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded <   dZded!<   dZded"<   dZded#<   dZd$ed%<   d&Zded'<   dZd(ed)<   dZded*<   dZded+<   dZd,ed-<   dZd.ed/<   dZd.ed0<   dZ d.ed1<   dZ!d.ed2<   dZ"d.ed3<   dZ#d.ed4<   dZ$ded5<   dZ%d.ed6<   dZ&d7ed8<   dZ'd9ed:<   dZ(d.ed;<   h d<Z)d=ed><   dZ*d?ed@<   dZ+dAedB<   dZ,dCedD<   dZ-dEedF<   dZ.dedG<   dZ/dedH<   dZ0dIedJ<   dZ1dKedL<   dZ2dKedM<   dPdNZ3e4dQdO       Z5y)Rr7   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                v   dfdt        j                  |       D ci c]{  }t        | |j                        |j                  u sW|j                  dk(  rt        | |j                        r2|j                   |j                  t        | |j                              } }}|j                  d|i       |S c c}w )Nc                   | dv ry | t         j                  v rt        |      S t        |t        j
                  t        j                  t        j                  f      rt        |      S t        |t        j                        rt        |      S t        |t        t        f      r|D cg c]  } | |       c}S t        |t        t         f      r|j                  S t        |t              rt        |      S | dk(  r>t        |t              r.|j!                         D ci c]  \  }}||j                   c}}S |S c c}w c c}}w )N)r   r   r   )r7   r:  r  r1   rt   r   r\   rc   SymInttupler   r   r   r   strdictitems)kvv1k1jsons       r3   rG  z$MetaTensorDesc.as_json.<locals>.json  s     22N222Aw!ellEKKFGAw!U\\*Aw!eT]+./0Q00!o~>?tt!\*1vG|
1d 301	:fb"BEE	::H 1 ;s   'D<Er   r  )rC  r@  rD  objectrr   rH  )dataclassesfieldsrS   namedefaultupdate)r   r  fieldr   rG  s       @r3   r   zMetaTensorDesc.as_json  s    	. %++D1

ejj)U]]:JJ"::#D%**5 JJUZZuzz)BCC

 

 	
.,/0

s   B B6c                    | j                   S rJ   )r   r   s    r3   r]   zMetaTensorDesc.shape  s    yyr5   r  )rr   r7  )6r  r  r  r  rt   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   r:  r   r   r   r   r   r   r   r   r   r   propertyr]   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                ^    t        |      t        j                  ury | j                  |       y rJ   )r   rt   ru   copy_)dstsrcs     r3   
_safe_copyrW    s     Cy$IIcNr5   c                Z    t        |       t        j                  ury | j                         S rJ   )r   rt   ru   clone)rV  s    r3   _safe_clonerZ    s!    Cy$99;r5   c                      e Zd ZddddZddZddZddZddZddZdd	Z		 	 	 	 	 	 dd
Z
edd       Ze	 d	 	 	 	 	 dd       Zedd       Z	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 dddddd	 	 	 	 	 	 	 	 	 	 	 	 	 d dZy)!MetaConverterFr   c                   t        j                         | _        t        j                         | _        d| _        d| _        d | _        d| _        || _        t        |      | _
        y )Nr   r   )weakrefWeakValueDictionarystorage_memotensor_memohitmissdel_hookarg_cntr   rv   	describerr   s     r3   r   zMetaConverter.__init__  sa     '') 	 '') 	 	
 #,yAr5   c                B    | j                   dkD  xr | j                  dk(  S )Nr   )rb  rc  rP  s    r3   
successfulzMetaConverter.successful"  s    xx!|.		Q.r5   c                N    | j                   j                  |j                  d       S rJ   ra  getr   r   s     r3   get_tensor_memozMetaConverter.get_tensor_memo%  s    ##ADD$//r5   c                Z    | j                   j                  |j                  d       }|J |S rJ   rj  )r   r2   r   s      r3   _checked_get_tensor_memoz&MetaConverter._checked_get_tensor_memo(  s-      t,}}r5   c                6    || j                   |j                  <   y rJ   )ra  r   )r   r2   rD  s      r3   set_tensor_memozMetaConverter.set_tensor_memo-  s    !"r5   c                N    | j                   j                  |j                  d       S rJ   )r`  rk  r   r   s     r3   get_storage_memozMetaConverter.get_storage_memo0  s      $$QTT400r5   c                6    || j                   |j                  <   y rJ   )r`  r   )r   r   rD  s      r3   set_storage_memozMetaConverter.set_storage_memo3  s    "#!$$r5   c                   | j                        x} |fd      j                         }| j                  rbt        j                         5  t               5  j                  J t        |j                  j                                d d d        d d d        | j                  |       |S |S # 1 sw Y   'xY w# 1 sw Y   +xY w)Nc                 d    t        j                   j                  t         j                  d      S Nmetar\   r   )rt   emptyr   uint8)r   s   r3   r   z,MetaConverter.meta_storage.<locals>.<lambda>?  s    AFF%++fM r5   )
rr  r   r   rt   no_gradr%   r   r   rY  rt  )r   r   callbackmemor_ss    `   r3   meta_storagezMetaConverter.meta_storage6  s     ))!,,D5Mo  ~~ ]]_ ;km ;66---%c166<<>:; ; !!!S)JK; ; ; ;s$   B>3B2B>2B;	7B>>Cc                6    t        j                  t        |      S rJ   )typingcastr9   )clsr2   s     r3   _checked_cast_tensor_tz$MetaConverter._checked_cast_tensor_tL  s     {{8Q''r5   Nc                .    | j                   |             S rJ   )r  )r  r2   r   s      r3   _identity_callablez MetaConverter._identity_callableQ  s     ))!#..r5   c                    t         j                  j                  j                  dd      } ||      }t	        j
                  t        |      S )Nz9Internal error: Tried to backward() through example inputr   )rt   r   
_functionsDelayedErrorr  r  r9   )r  r2   errfnerrs       r3   _backward_errorzMetaConverter._backward_errorY  s>    ##00G
 Ah{{8S))r5   c                L"    !"#$%&'() t        j                  |j                        #$ddlm}  |dt         j                               t        j                  j                         j                  t        j                  j                  j                        rJ  xj                  dz  c_        t        j                  &j                   &f	 	 	 	 	 	 	 d&fd)f	 	 	 	 	 	 	 d')fd}f	 	 	 	 	 	 	 	 	 	 	 d(# fd$	 	 	 	 	 	 	 	 	 	 d)!fd	!f	 	 	 	 	 	 	 d*!#$& )fd
} j#                        dt        j$                  j&                        5  j(                  rCj*                  }	 #fd      }
 j,                  rej.                  J t        j0                         5  t3               5  t5        |
      sJ t7        j.                        |
_        d d d        d d d        t;        |
      sJ d       |
j=                  t?        j@                               jB                  rd|
_!        jB                  r|	s jE                  |
jG                               }
t        jH                         5  |
j=                  t?        j@                               d d d        ntK        jL                        rj*                  }	jL                  t        jN                  t        jP                  hv rpjR                  J jT                  J jV                  J jX                  jR                  z
  jT                  z
  }jV                  jZ                  |dz   |dz    "nd"jL                  t        j\                  t        jN                  hv r%j^                  J j^                  j`                  %n$jb                  J jb                  j`                  % #"%fd      }
 j,                  rej.                  J t        j0                         5  t3               5  t5        |
      sJ t7        j.                        |
_        d d d        d d d        t;        |
      sJ d       jB                  rd|
_!        jB                  	r|		s je                  |
      }
	njf                  rjh                  sddl5m6}  |d       	njjn                  rGj*                  }	 )      \  '(} #'(fd      }
 j,                  rt        j0                         5  t3               5  jp                  J jr                  J t5        |
      sJ t        jt                  jp                  jr                  j`                  j                        |
_        j.                  J tw        |
j8                  j.                         d d d        d d d        t;        |
      sJ d       jB                  rd|
_!        jB                  r,|	s) je                  |
      }
njx                  r0jz                  rddl5m6}  |d       d+ # fd         }
nډj|                  rj                  j~                  dvrj                  J jx                  rJ  j                  j                  #      } jE                  t        j                  |            }
t        j                  j                  |
       n5jz                  rj                  J d }r.,ddlFmG} t        |      sJ j                  j                  } j                  j                  #t        j                  j                  j                  d      |      }	 	 	 	 	 	 d,d}t        j                  j                  t        j                  j                  j                        }t        j                  j                  t        j                  j                  j                  d       	 |j`                  j`                  k(  rn ||j`                  j`                        r% jE                  t        j                  |            }nl |j`                  |j`                        r% jE                  t        j                  |            }n* jE                  |j                  j`                              }j*                  r8t        j0                         5   ||      }
d d d        jB                  
_!        nj                  jB                  jB                  k(  r't        jH                         5   ||      }
d d d        njB                  sJ t        j0                         5  t               5   jE                  |j                  |jZ                              }d d d        d d d        jB                  _!        t        jH                         5   ||      }
d d d        j                  J t        j                  j                  j                  
j                         t        j                  j                  t        j                  j                  j                  |       nj*                  }	j                  sj                  sjx                  sj                  rt        cd d d        S  )      \  '(}jh                  r $'(      }
n #'(fd      }
 j,                  rt        j0                         5  t3               5  jp                  J jr                  J t5        |
      sJ t        jt                  jp                  jr                  j`                  j                        |
_        tw        |
j8                  j.                         d d d        d d d        t;        |
      sJ d       jB                  r$jB                  |
_!        |	s je                  |
      }
j                  }|J |j                   j                  vr|
jf                  s&|
js                         (k(  r|
j                         |k(  r| j                  ||
j                                 j,                  rt5        |
      sJ |
j8                  J t        |
j                         |
j8                  j                                n7 j                  |#      }t        j                         }dd lcmd}me}  ||
      }| ||      }t        j0                         5   &       5  |5  |
j                  ||'(       d d d         j,                  rt        j0                         5  t3               5  t5        |
      sJ |
j8                  J jr                  J |
j8                  j                  t        |      j                  jp                  jr                         d d d        d d d        d d d        d d d        j                  1dd!lmL}  j                  j                  # |d"            
_h        t        j                  j                  
j                         t        j                  j                  |
j                         d d d        j                  xr j                  k(  }t        t        
d|#       dd$lFmp} j                  > |j                  jp                  dk(        r|
j                         j                  d       j                  rd|
_s        j                  8t5        |
      sJ |
j                  j                  j                  %      |
_w         j                  |
        j                        S # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   
ExY w# 1 sw Y   
JxY w# 1 sw Y   xY w# 1 sw Y   $xY w# 1 sw Y   pxY w# 1 sw Y   uxY w# 1 sw Y   KxY w# t        j                  j                  t        j                  j                  j                  |       w xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   UxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   CxY w)-Nr   r   )ConstantSource__meta_utils_unknown_tensorr   c           
     (   | j                   J | j                  }|1|j                  u r#| j                  | j                   | j                  fS t        fd| j                  D              }t        fd| j                   D              }j                  | j                        }j                  |||t        | j                        D cg c]  }|| j                  v  c}||      S | j                  | j                   | j                  fS c c}w )Nc              3  @   K   | ]  }j                  |        y wrJ   #_maybe_specialize_sym_int_with_hint).0sz	shape_envs     r3   	<genexpr>zVMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset.<locals>.<genexpr>  s$      # "EEbI#   c              3  @   K   | ]  }j                  |        y wrJ   r  )r  sdr  s     r3   r  zVMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset.<locals>.<genexpr>  s$      % "EEbI%r  )symbolic_context)rh   r   r  r   ri   r?  r  -_create_symbolic_sizes_strides_storage_offsetranger   r   )	r2   rV  r  r   t_sizet_stridet_storage_offsetdr  s	           r3    sym_sizes_strides_storage_offsetzCMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset  s    88'''$KK	(Y-@-@I-M FFAHHa.>.>?? # #"#&&# F  % %"#((%  H (1'T'T((($ %RR (@EaffN1a666N)9 S   !*:*:;; Os   Dc                f     | ||      \  }}}t        j                  ||| j                  d      S rw  rt   empty_stridedr\   )inner_t	inner_srcr  inner_sizesinner_strides_inner_storage_offsetr  s         r3   empty_createz/MetaConverter.meta_tensor.<locals>.empty_create  sC     1)EUV	%&&mm	 r5   c                   ddl m ddlm | j                  J | j
                  J ||n| j                  }||n| j                  }|t        |      sJ 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d	
fd|J  | |||	|      }|j                  |k(  s$J d| j
                   d| d|j                          |j                         |k(  s(J d| j
                   d| d|j                                 |S )
Nr   
AttrSource)SubclassSymbolicContextc           	     R   | j                   j                  | |||      S i }| j                   j                         D ]  \  }}d }	|Xt        |      sJ |j                  |   x}
	 8t        t        j                  j                  j                  j                  |
      }	 ||      }t        j                  ||j                        } ||j                  |j                  |	||      }|||<    | j                   J | j                   j#                  || j$                  ||      S )Nr  )r   meta_tensorrB  r1   inner_contextsr   rt   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  zXMetaConverter.meta_tensor.<locals>.empty_create_subclass.<locals>._empty_create_subclass  sO    77?++! (  !#./ggmmo ;*D*&*O'3)*:<STTT0@0O0OPT0UU,!%& /< % 5 5 E E U U 0/O
 &0%=N%.%6%6 )9)@)@&N (>((--(//'&&($ +;M$'1;4 vv)))vv22!155*l 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  r9  r  r9  r  ?Optional[torch.fx.experimental.symbolic_shapes.SymbolicContext]r}  &_MetaTensorCallbackOptDevice[_TensorT]r  torch._guards.Sourcerr   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_subclassz8MetaConverter.meta_tensor.<locals>.empty_create_subclass  si    8U77&&&66%%% (2'=166J+7+C<L#+z "9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                   ddl m} ddlm}m}m} d }| j                  r*| j                  J  | j                   ||d      ||      }|j                  g| j                  z  }	| j                  rv| j                  J i }
| j                  j                         D ],  \  }}t        |t              sJ  | |||      ||      |
|<   .  ||	d g| j                  z  |
||      }|S  ||	d g| j                  z  |      }|S )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   rB  r1   r@  )r2   r  r  r}  r  r  r  r  r  t_dynamic_sizesr  r   innert_symbolic_contextall_dynamic_symbolic_contexts                 r3   r  z?MetaConverter.meta_tensor.<locals>.all_dynamic_symbolic_contextH  s4    8    yyvv)))$@FFJvw7H%!
  *112QVV;O..ww***   $%77==? KD%%dC000+Gz&$7H,N4(
 &="1&*Vaff_#1"(&7&" &% &>"1&*Vaff_&7&" &%r5   c           	        t               5   |      \  }}}|j                  sGt        |       s<        5  j                  | j                  |||            cd d d        cd d d        S ddlm ddlmm} dfd}i |j                  rg|j                  J |j                  J  |||      }|j                         \  }	}
|	D ](  }t        ||      |j                  |   j                  <   * f	 	 	 	 	 	 	 dfd}|j                  J |j                  j                  || ||      }t!        j"                   ||j%                         |             t!        j"                   ||j'                         |             t!        j"                   ||j)                         |             |cd d d        S # 1 sw Y   ^xY w# 1 sw Y   y xY w)	Nr   )EphemeralSource)r  sym_eqc                    ddl m d uxr, t              xr t        fdj                  D              }|s| S  d      }j                  | |d       }j                  || |      S )Nr   )r  c              3  :   K   | ]  }|j                   u   y wrJ   )STATIC)r  xr  s     r3   r  z_MetaConverter.meta_tensor.<locals>.view_from_base.<locals>.symint_visitor_fn.<locals>.<genexpr>  s$        ! !2!22 s   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  zLMetaConverter.meta_tensor.<locals>.view_from_base.<locals>.symint_visitor_fn  s    P )4 &'79QR  %5%C%C   % (9+<  "11D!EJ&44Q
T4RF$66Qz 7  r5   r  r  c                    | y 
j                   j                  |       }	j                  |d       }||S 
j                   j                  |       } d      }
j	                  |||| ||||            S )Nr  )rf  r   rk  rw   r  )	visited_tr  r}  
visited_idfake_visited_tvisited_desctemp_sourcer  r  real_to_fake_mappingr   s          r3   r  zLMetaConverter.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  rr   r  )r  rq   r  8Optional[torch.fx.experimental.symbolic_shapes.ShapeEnv]r}  r  rr   rq   )r#   r&   r  
as_stridedr  r  r  r  r  r   r   r   rS   r   r   r  rt   _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_basez1MetaConverter.meta_tensor.<locals>.view_from_base  s    *+ E3Sv40 779$?
 () #:: OOE7NK  E E" A
 < (*$2277... 66--- (=e'(F  &88:HE1 % WAHQUAV,QWWT]-=-=>W "GO'+' 	' E' "' 'V {{... **t.0A VFKKM59:VFMMOW=>VF$9$9$;^LMKE E E Es)   ,G"G	G1E
GG	
GGc                     t         j                  j                  j                   j                   j
                   j                   j                  t         j                  d      S )Nrx  )r\   rc   r   )	rt   opsaten_sparse_coo_tensor_with_dimsre   rd   r   r\   rz   r@   s   r3   r   z+MetaConverter.meta_tensor.<locals>.<lambda>0  sH    		 K KLLKKFF"#''#(#3#3#) !L ! r5   z)the callback you passed in doesn't detachT   rM   c            
         t         j                  j                  j                  dj                  j
                   j                  j                  d      S )Nr   rx  )rc   r\   r   )rt   r  r  #_sparse_compressed_tensor_with_dimsrd   r]   rc   r\   )	blocksizeindex_dtyper2   s   r3   r   z+MetaConverter.meta_tensor.<locals>.<lambda>c  sH    		 R RKKGG%'#$88"#''#) !S 	! r5   )unimplementedz;strided nested tensors are not supported by meta conversionc                 J    t        j                   j                  d      S rw  r  r  r  r2   s   r3   r   z+MetaConverter.meta_tensor.<locals>.<lambda>  s     3 3!7!''&! r5   ry  z;view functorch tensors are not supported by meta conversionc                     j                   r j                  J  j                  J  j                  J  
 j                        } j                  } j                  }t        j
                  j                  j                   j                        5  j                  t        |||            }d d d        |S  j                  r. j                  J  j                  J t        j                  j                  } |       5   
 j                        }d d d         j                  }|	k(  r}nut        j
                  j                  j                   j                        5  j                  t        j                  j
                  j                  |            }d d d         j                  } j                   rt#              r	d|_        |S  j                   r|sj%                        }S  j&                  rb j                  J  j(                  J j+                   j                        }j                  t-        | j(                              }|S  j.                  J  j0                   j.                    fd      }j2                  rt	        j4                         5  t7               5  t	        j8                   j0                   j.                   j:                   j<                        |_         j@                  J tC        |j>                   j@                         d d d        d d d        |S |S # 1 sw Y   S xY w# 1 sw Y   BxY w# 1 sw Y   xY w# 1 sw Y   <xY w# 1 sw Y   |S xY w)NTc                 J    t        j                   j                  d      S rw  r  r  s   r3   r   zDMetaConverter.meta_tensor.<locals>._to_fake_tensor.<locals>.<lambda>  s"    (;(;$)$+*+''+1	)" r5   ry  )"r   r   r   r   rt   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   rW  )r2   ftlvlr   r   disable_functorchr>   r  r  GRAD_TENSOR_SENTINEL_VALUE_to_fake_tensorr}  r   r  r  r  s   `      @@r3   r  z2MetaConverter.meta_tensor.<locals>._to_fake_tensor  sB    --#$;;#::#:#$77#66#6#$66#55#5!0!=B"#''C#$66D
 "'!1!1!=!=!c!c ! 1 1" " %)$?$?$22tS$A%""L  !A 44#$;;#::#:#$77#66#6050J0J-!2!4 B%4Q[[%AB"#''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  $~~%*]]_ !Fkm !F494G4G()()./gg/0xx	5&AM ,-66+=$=+=$.q}}aff$E!F !F  !qM"L  !yB B!& !&Z!F !F !F  !sI   M	M+:M);NA5M6;NMM&)M36M?	;NNr   )r  rm   c                `    t        j                  |       xr t        j                  |       |k(  S rJ   )utilsis_complex_dtypecorresponding_real_dtype)complex_dtype
real_dtypes     r3   	is_c_of_rz,MetaConverter.meta_tensor.<locals>.is_c_of_r.  s2     "22=A * % > >} M)!*r5   Fr  c                 J    t        j                   j                  d      S rw  r  r  s   r3   r   z+MetaConverter.meta_tensor.<locals>.<lambda>  s"    E$7$7 % '&'gg'-	% r5   )r}  )in_kernel_invocation_managerr   r  rG   rW   )guard_or_false)nt_tensor_id)r2   r7   rV  r  r  r  rr   z,tuple[tuple[int, ...], tuple[int, ...], int])r  r7   r  r  r  r  rr   rq   )r2   r7   r  r7  r  r7  r  r  r  zOptional[torch._guards.Source]rr   r9   )
r2   r7   r  r  r  r  r}  _MetaTensorCallback[_TensorT]rr   z5torch.fx.experimental.symbolic_shapes.SymbolicContext)rl   r9   r2   r7   r  r  rr   r9   r2   r7   rr   r9   )r  r6  r  r6  rr   r  )zr  r  r   r  r  lenra  rt   r   _dispatch_tls_local_exclude_sethasDispatchKeyPythonre  
contextlibnullcontextsuppress_guardsrl  inference_moder`   r_   r>   r   r   r|  r%   r4   rZ  r  rA   _coalesced_r  rf   r^   r  rY  enable_gradr   rc   r   r   re   rd   r   r   r]   r}   r   r\   r   r  r   r&   torch._dynamo.excr  r   r   rh   r  rW  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   r`  ri   rt  r   r   r  r0   r  r   set_r   rG   	_set_conjra   _set_negrb   r   rx   rP   r  resize_r   	_is_paramr   r   create_symbolic_nested_intnested_int_memorp  rn  )*r   r2   r  	callback_r  r  r  r  r  r>   r   	batch_dimr  _storage_offsetr   base_symbolic_contextr  rl   r  old_excludemidri   r   r  maybe_fake_mgrr  r   mb_fake_moder  rY   r  r  r  r  r  r}  r  r  r  r  r  r  s*   ``` ``                         @@@@@@@@@@@r3   r  z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	Z0	&0	&(0	& P0	& 4	0	&
 C0	&h L	L	L	L	 L	 L	\ "*)+&%%ann5 n/;;iiG
 !	A ~~ vv111"]]_ @km @#21#55#5,7,?AM@ @ (?W,WW? MM$q~~"67*.w
 !77	B"..0 @MM$q~~*>?@ @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,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,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YY 66---,0) %5%A  **:<T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$;< /0ooAO vv33qF%*%6%6%8 !@(6tQ(?A!@ !@ () 6%*]]_ !&6N6P !&*.*E*E(,		$**(=+&C!& !& 56OO 1%*%6%6%8 !?(6sA(>A!?
  !:::**==aQHH!HH00@@+
  iiG //13J3J2222-Sn/ n/^ 9FDTU	&
 661%g %  >>!& B+- B'(vv'9 9'9'(xx'; ;';'6q'9 9'9050C0C$%FFAHHAGGAHH1" !+1==!&& AB B (?W,WW?*+//& !% 4 4Q 7A		A=(=tt4#4#44HHJ'1 ! 0 0 2n D --a1B1B1DE>>#21#55#5#$==#<<#<- ! 1 1 3Q]]5R5R5T #//H/E. '224 '
 (;1'='3-I,-WN"]]_ &n.> &!/ L !sNE7 KL#~~%*]]_ 	!&km 	!&+:1+=$=+=+,==+D$D+D+,88+?$?+?$%MM$6$6(9#(>()(8(8()()	%&		!& 	!&	& & 66%? "--! "662(AF ""1aii0!!!QXX.]n/b ''QAGG7Q,Q  y!QdiX Myy$		!8K)L!!#++A.~~" ||'&q)))$%KK$J$J!" %K %!   A&,,Q//i@ @ @ @$@ @F@ @ @ @@> > > >h< <!@ !@!& !& !& !&
!? !? HH!HH00@@+HB B B BdL L	!& 	!& 	!& 	!&	& & & &en/ n/sp  )AAD<((/(7BAD%50E:AD*A@5(A@A@%CAD0A@);BA@A@)!IAD4C(AA7
A@6&AAA77
AA+AA7,AA7+AA"AA*-AA7
AA*!A
AA7+BAD:AADACBAB>(AC0E5AD%AD-AC?0AC	(AC?-AC2	8A/AC%'AC2	/AC?7AD?BAD% ((2	-AD5?	:AD@A@@A@@A@	@AD@A@&@!A@)@)A@3	@.AD@6AA 	@;AA7AAA	AAA7AAAAAAAAA'	A"AA7A*AA4	A/AA7A7AAB;B;ADB>ACCACCAC	CADCAC"CAC?C%AC/C*AC2	C2AC<C7AC?C?AD	DADDAD	DADDAD#T)r}  r  r  r   c               $    | j                   }n|}t        |t        j                        r|j                  j
                  dk(  s>|j                  s2|j                         r=|j                  1|j                  j                  r xj                  dz  c_
        t        S  xj                  dz  c_        n<t        j                  j                  |      r xj                  dz  c_
        t        S |S d} j                  j!                  ||      |rJ t#        d fd       t%        j&                         5 }|j)                  t        j*                  j,                  j/                                t1               }	|	7|j)                  t        j2                  j4                  j7                                 j9                  |||      }
d d d        t        |      t        j:                  j<                  u rd
_        
S # 1 sw Y   7xY w)	Nr   r   Fr   describe_sourcec                 h     j                   j                  j                  j                         dS )N)r  r   r  )rf  r   rK  )r   r  t_descs   r3   r   z(MetaConverter.__call__.<locals>.<lambda>n  s'    $(NN$5$5 ))$kkm% r5   r   T) r  r1   rt   ru   r   r   is_quantizedrk   rm   r_   rc  r4  rb  	overridesis_tensor_likerf  rw   r$   r#  	ExitStackenter_context	_dispatchpythonsuspend_functionalizationr"   r   r   r   r  r   r   r9  )r   r2   r  r}  r  r  r   r<  
exit_stackstr   rG  s   `   `      @r3   r*  z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Hr  )rr   r  )r2   r7   rr   r;  r  )r2   r7   rD  r9   rr   rs   )r   r   rr   r  )r   r   rD  r  rr   rs   )r   r   r}  z0Callable[[Callable[[], torch.Tensor]], _TensorT]rr   r  )r2   rq   rr   r9   rJ   )r2   r+  r   z"Optional[Union[torch.device, str]]rr   r9   )r2   r9   rr   r9   )r2   r7   r  Optional[ShapeEnv]r<  r  r  Optional[Source]r  Optional[SymbolicContext]rr   r9   )r2   rq   r  rR  r}  z'Optional[_MetaTensorCallback[_TensorT]]r  rS  r  rT  r   r  rr   r9   )r  r  r  r   rh  rl  rn  rp  rr  rt  r  classmethodr  r  r  r  r*  rM   r5   r3   r\  r\    s\   ,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   r\  )r2   rH  rr   zTypeIs[FakeTensor])r2   #Union[MetaTensorDesc, torch.Tensor]rr   r  )r2   r6   rr   zOptional[_TensorLikeT])r2   r6   rr   r6   )rN   r8   rO   r8   rr   rs   )rr   zGenerator[None, None, None])rP   z Callable[[object, object], None]rn   rV  ro   rq   rX   r  rY   r  rr   rs   )r2   rH  rr   zTypeGuard[torch.Tensor])rc   r8  rr   r  )r   ztype[_T]r   rH  rr   r8   )rl   r  rr   r  )rl   r  r   r  rr   rs   )rU  rq   rV  r;  rr   rs   )rV  rq   rr   r;  )n
__future__r   r#  rI  r  	threadingr  rD   r^  abcr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   typing_extensionsr   r   r   r   r   rt   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   DimListru   r6   r8   r9   r;   rA   rH   rK   rP   localrT   rR   rV   rx   r{   r   rg   r   r   r   r   r  r   r   r   r   rv   r   r   r  r  r'  r/  r2  r7   rW  rZ  r\  torch._prims_common_prims_commonr  rM   r5   r3   <module>rh     s   "         = !   M L  +    < + / F 0 )0$H
 P% ~'7FT]:U\\2~U\\TJ! ioo #  + +  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   