+
    –°³j¼+  ã                  óf  € ^ RI Ht ^ RIt^ RIt^ RIHtHt ^ RIt^ RIH	u H
t ^ RIHtHtHtHtHtHtHt ^ RIHt ]'       d   ^ RIHtHtHt ^ RIHt ^ RIHt ]P:                  P<                  P>                  tR	 R
 lt R R lt!R R lt"R R lt#R R lt$R R lt%RR R llt& ! R R]4      t'R# )é    )ÚannotationsN)ÚAnyÚTYPE_CHECKING)Ú
FakeTensorÚFakeTensorModeÚis_fake_tensorÚmaybe_get_fake_modeÚMetadataMismatchErrorÚtree_flatten_onlyÚUnsupportedFakeTensorException)ÚTorchDispatchMode)ÚCallableÚMappingÚSequence)Ú
OpOverload)ÚPyTreec               ó$   € V ^8„  d   QhRRRRRR/# ©é   Úoutputsr   ÚinputsÚreturnÚbool© )Úformats   "Ú]/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_subclasses/fake_utils.pyÚ__annotate__r      s!   € ÷ 	ñ 	 &ð 	°&ð 	¸Tñ 	ó    c                ó´  a€ \        \        P                  V4       Uu0 uFD  p\        P                  P	                  V4      '       g   K*  VP                  4       P                  kKF  	  upo\        ;QJ d7    V3R  l\        \        P                  V 4       4       F  '       g   K   R# 	  R# ! V3R  l\        \        P                  V 4       4       4      # u upi )c              3  ó¬   <"  € T FI  p\         P                  P                  V4      ;'       d    VP                  4       P                  S9   x € KK  	  R # 5i©N)ÚtorchÚ_CÚ_has_storageÚ_typed_storageÚ_cdata)Ú.0ÚoutÚinput_storagess   & €r   Ú	<genexpr>Ú'outputs_alias_inputs.<locals>.<genexpr>%   sF   øé € ð á;ˆCô 	�‰×Ñ˜cÓ"×TÐT s×'9Ñ'9Ó';×'BÑ'BÀnÑ'TÔTÛ;ùs
   ƒ*A®&ATF)r   r"   ÚTensorr#   r$   r%   r&   Úany)r   r   Úinpr)   s   && @r   Úoutputs_alias_inputsr/      s¨   ø€ ô %¤U§\¡\°6Ô:óá:ˆCÜ�8‰8× Ñ  ×%ô 	$ˆ×ÑÓ×#Ô#Ù:ñ€N÷
 ‹3ô ä$¤U§\¡\°7Ô;ó�3Œ3ð Š3ð ˆ3ô ä$¤U§\¡\°7Ô;óó ð ùòs   ž'CÁ
Cc               ó$   € V ^8„  d   QhRRRRRR/# r   r   )r   s   "r   r   r   +   s&   € ÷ Yñ Y ð Y°ð Y¸4ñ Yr   c                óH  a€ \        \        P                  V4       Uu0 uF  p\        V4      kK  	  upo\        ;QJ d7    V3R  l\        \        P                  V 4       4       F  '       g   K   R# 	  R# ! V3R  l\        \        P                  V 4       4       4      # u upi )c              3  ó@   <"  € T F  p\        V4      S9   x € K  	  R # 5ir!   )Úid)r'   r(   Ú	input_idss   & €r   r*   Ú%outputs_are_inputs.<locals>.<genexpr>-   s   øé € ÐXÑ/W¨Œr�#‹w˜)Ö#Ó/Wùs   ƒTF)r   r"   r,   r3   r-   )r   r   r.   r4   s   && @r   Úoutputs_are_inputsr6   +   so   ø€ Ü$5´e·l±lÀFÔ$KÓLÑ$K˜S”�C–Ñ$KÑL€Iß‹3ÔXÔ/@ÄÇÁÈwÔ/WÓX�3Œ3ÐXŠ3ÐXˆ3ÔXÔ/@ÄÇÁÈwÔ/WÓXÓXÐXùò Ms   žBc               ó    € V ^8„  d   QhRRRR/# )r   r   r   r   r   r   )r   s   "r   r   r   0   s   € ÷ 	ñ 	 Vð 	°ñ 	r   c                ó  € \        4       p\        \        P                  V 4       F^  p\        P                  P                  V4      '       g   K*  VP                  4       P                  pW19   d    R # VP                  V4       K`  	  R# )TF)	Úsetr   r"   r,   r#   r$   r%   r&   Úadd)r   Ústoragesr(   Ústors   &   r   Úoutput_alias_each_otherr=   0   sd   € Ü‹u€HÜ ¤§¡¨wÖ7ˆÜ�x‰x×$Ñ$ S×)Ò)ÙØ×!Ñ!Ó#×*Ñ*ˆØÔÚØ�‰�TÖñ 8ñ r   c               ó0   € V ^8„  d   QhRRRRRRRRRRRR	/# )
r   ÚcontextÚstrÚreal_outr   Úreal_inÚfake_outÚfake_inr   ÚNoner   )r   s   "r   r   r   <   sD   € ÷ 
ñ 
Øð
àð
ð ð
ð ð	
ð
 ð
ð 
ñ
r   c                ó   € \        W4      p\        W44      pWV8w  d   \        V  R V RV 24      h\        W4      p\        W44      pWx8w  d   \        V  RV RV 24      h\        V4      p	\        V4      p
Wš8w  d   \        V  RV
 RV	 24      hR# )z( mismatch in outputs_alias_inputs check ú != z& mismatch in outputs_are_inputs check z, mismatch in outputs_alias_each_other check N)r/   r
   r6   r=   )r?   rA   rB   rC   rD   Ú
r_aliasingÚ
f_aliasingÚr_identity_eqÚf_identity_eqÚr_output_alias_each_otherÚf_output_alias_each_others   &&&&&      r   Ú_check_alias_inforN   <   sÍ   € ô & hÓ8€JÜ% hÓ8€JØÔÜ#ØˆiÐ?À
¸|È4ÐPZÈ|Ð\ó
ð 	
ô ' xÓ9€MÜ& xÓ9€MØÔ%Ü#ØˆiÐ=¸m¸_ÈDÐQ^ÐP_Ð`ó
ð 	
ô !8¸Ó AÐÜ 7¸Ó AÐØ Ô=Ü#ØˆiÐCØ(Ð)¨Ð.GÐ-HðJó
ð 	
ñ >r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   Úfuncr   ÚidxÚintÚeÚ	Exceptionr   r   r   )r   s   "r   r   r   Z   s(   € ÷ ñ ˜
ð ¨ð °ð ¸tñ r   c                óÈ  € V \         P                  P                  J g   V \         P                  P                  J d   VR9   d   R\	        V4      9   d   R# V \         P
                  P                  J g   V \         P                  P                  J d   VR9   d   R\	        V4      9   d   R# V \         P                  P                  J d   VR9   d   R\	        V4      9   d   R# R# )é   ÚDevicesTF)rV   é   )r   é   )ÚatenÚ#_scaled_dot_product_flash_attentionÚdefaultÚ_flash_attention_forwardÚreprÚ'_scaled_dot_product_efficient_attentionÚ_efficient_attention_forwardÚ#_scaled_dot_product_cudnn_attention)rP   rQ   rS   s   &&&r   Úis_sdpa_errorrb   Z   s¯   € ð ”D×<Ñ<×DÑDÓDØ”t×4Ñ4×<Ñ<Ó<à�6ŒMØœ˜a›Ô áð ”D×@Ñ@×HÑHÓHØ”t×8Ñ8×@Ñ@Ó@à�6ŒMØœ˜a›Ô áà”×8Ñ8×@Ñ@Ó@Ø�6ŒMØœ˜a›Ô áÙr   c               ó    € V ^8„  d   QhRRRR/# )r   Úten_listzlist[FakeTensor | Any]r   z%list[FakeTensor | torch.Tensor | Any]r   )r   s   "r   r   r   v   s    € ÷ Dñ DØ$ðDà*ñDr   c                ó~  a€ \        R V  4       R4      pVf   V # \        V4      pVf   V # VP                  P                  pVP                  pVP
                  P                  4        UUu/ uF  w  rVWebK	  	  pppVP                  P                  4        UUu/ uF  w  rVWebK	  	  ppp. p	V  EFv  p
\        V
4      '       d    V
P                  \        P                  8w  d   V	P                  V
4       KG  VP                  V
P                  4       4      pVf   RMVP                  V4      pVf   V	P                  V
4       K”  RoR V3R llpV! V
P                  4       4      pV
P                    Uu. uF
  qý! V4      NK  	  ppV
P#                  4        Uu. uF
  qý! V4      NK  	  ppS'       d   V	P                  V
4       EK  \        P$                  ! . V
P&                  V
P(                  R7      pVP+                  VVVVR7       V	P                  VP-                  4       4       EKy  	  V	# u uppi u uppi u upi u upi )aU  
Attempt to convert fake tensors to a corresponding real tensor with the correct underlying storage by looking up
the FakeTensorMode meta to real storage mapping. On failure to find the storage mapping, the FakeTensor will
remain in the list.

Note: this is not currently optimized (makes copies of the meta converter internal dictionaries)
c              3  óL   "  € T F  p\        V4      '       g   K  Vx € K  	  R # 5ir!   )r   )r'   Úitems   & r   r*   Ú+try_convert_fake_to_real.<locals>.<genexpr>�   s   é € ÐJ© ´^ÀD×5IŸš«ùs   ‚$š
$NFc               ó    € V ^8„  d   QhRRRR/# )r   Úsztorch.SymInt | intr   rR   r   )r   s   "r   r   Ú.try_convert_fake_to_real.<locals>.__annotate__›   s   € ÷ 	ñ 	Ð,ð 	°ñ 	r   c                ót   <€ \        V \        P                  4      '       g   V # V P                  pVf   Ro^ # V# )NT)Ú
isinstancer"   ÚSymIntÚhint)rj   ro   Úcontains_unhinteds   & €r   Ú
map_symintÚ,try_convert_fake_to_real.<locals>.map_symint›   s5   ø€ ä˜a¤§¡×.Ò.Ø�Ø—6‘6ˆDØŠ|Ø$(Ð!ÙØˆKr   )ÚdtypeÚdevice)Ústorage_offsetÚsizeÚstride)Únextr	   Úfake_tensor_converterÚmeta_converterÚ	describerÚstorage_memoÚitemsÚlookup_storager   Úlayoutr"   ÚstridedÚappendÚgetÚuntyped_storageru   Úshaperw   Úemptyrs   rt   Úset_Úclone)rd   Úfake_tensorÚ	fake_moderz   ÚdescÚkÚvÚstorage_to_keyÚkey_to_real_storager(   ÚtÚkeyÚreal_storagerq   Ústor_offsetrj   rv   rw   Ú
new_tensorrp   s   &                  @r   Útry_convert_fake_to_realr”   v   s  ø€ ô ÑJ©ÓJÈDÓQ€KØÒØˆä# KÓ0€IØÒØˆØ×4Ñ4×CÑC€NØ×#Ñ#€Dà'5×'BÑ'B×'HÑ'HÔ'JÔKÑ'J™t˜q�a’dÑ'J€NÑKØ,0×,?Ñ,?×,EÑ,EÔ,GÔHÑ,G¡D A˜1š4Ñ,GÐÑHØ
€CÜˆÜ˜a× Ò  A§H¡H´·±Ô$=Ø�J‰J�qŒMÙà× Ñ  ×!2Ñ!2Ó!4Ó5ˆØ"š{‘tÐ0C×0GÑ0GÈÓ0LˆØÒØ�J‰J�qŒMÙà!Ð÷	ð 	ñ ! ×!1Ñ!1Ó!3Ó4ˆØ'(§w¢wÓ/¡w !�
˜1–¡wˆÐ/Ø)*¯©¬Ó4© A�*˜Q–-©ˆÐ4çØ�J‰J�qŒMÚä—[’[ØØ—'‘'Ø—8‘8ô
ˆ
ð
 	�‰ØØ&ØØð	 	ô 	
ð 	�
‰
�:×#Ñ#Ó%×&ñU ðX €Jùó_ LùÛHùò4 0ùÚ4s   Á+H)ÂH/Å/H5ÆH:c               ó8   € V ^8„  d   QhRRRRRRRRR	RR
RRRRR/# )r   rA   ztorch.TensorrC   r   r?   r@   Úsizesr   Ústridesru   Úrequires_gradr   rE   r   )r   s   "r   r   r   ½   sX   € ÷ ñ Øðàðð ðð ð	ð
 ðð ðð ðð 
ñr   c                óv  € V'       d*   V P                   VP                   8w  d   \        V R 24      h\        P                  P	                  V 4      '       d5   V P                  4       pVP                  4       pWx8w  d   \        V R24      h\        P                  P                  P                  V VVVRR7       R# )z· mismatched requires_grad-ness of outputs. This usually means that you have added autograd support for your operator at a dispatch key other than Autograd, which will lead to problemsz mismatched storage offsetT)Úcheck_sizesÚcheck_stridesÚallow_rhs_unbackedN)	r˜   r
   r"   r#   r$   ru   Ú_primsÚutilsÚcompare_tensor_meta)	rA   rC   r?   r–   r—   ru   r˜   Úr_offsetÚf_offsets	   &&&&&&&  r   Ú_check_fake_real_tensorsr¢   ½   s¯   € ÷ Ø×!Ñ! X×%;Ñ%;Ô;Ü'Ø�)ð .ð /óð ô ‡x�x×Ñ˜X×&Ò&Ø×*Ñ*Ó,ˆØ×*Ñ*Ó,ˆØÔÜ'¨7¨)Ð3MÐ(NÓOÐOä	‡L�L×Ñ×*Ñ*ØØØØØð +ö r   c                  óR   a € ] tR t^ÞtR
RRRRRR/R V 3R lllltRR R lltR	tV ;t# )ÚCrossRefFakeModer›   TÚcheck_aliasingÚonly_check_ops_with_metac          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r   Úignore_op_fnz#Callable[[OpOverload], bool] | Noner›   r   r¥   r¦   r   rE   r   )r   s   "r   r   ÚCrossRefFakeMode.__annotate__ß   sC   € ÷ Añ Aà9ðAð ð	Að
 ðAð #'ðAð 
ñAr   c               	ód   <€ \         SV `  4        Ve   TMR V n        W n        W0n        W@n        R # )Nc                ó   € R # )Fr   )Úfns   &r   Ú<lambda>Ú+CrossRefFakeMode.__init__.<locals>.<lambda>é   s   € ÁUr   )ÚsuperÚ__init__r¨   r›   r¥   r¦   )Úselfr¨   r›   r¥   r¦   Ú	__class__s   &&$$$€r   r°   ÚCrossRefFakeMode.__init__ß   s7   ø€ ô 	‰ÑÔà(Ò4‰LÑ:Jð 	Ôð +ÔØ,ÔØ(@Ö%r   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r   rP   r   ÚtypeszSequence[type]ÚargszSequence[object]ÚkwargszMapping[str, object] | Noner   Úobjectr   )r   s   "r   r   r©   ï   sC   € ÷ \ñ \àð\ð ð\ð ð	\ð
 ,ð\ð 
ñ\r   c           
     	óŠ  € T;'       g    / pR pRp/ pV\         P                  P                  \         P                  P                  \         P                  P
                  39  Edv   V P                  V4      '       Eg^   V P                  '       d1   \        P                  P                  P                  V4      '       Ed   \        P                  P                  VP                  9  dó   \        P                  P                  VP                  9  dÊ   \        P                  P                   VP                  9  d¡   ^ RIHp  \'        V! 4       R7      ;_uu_ 4       p	\(        P*                  ! \        P,                  \.        P0                  ! V	P2                  RR7      W434      w  rg\4        P6                  ! 4       ;_uu_ 4        V! V/ VB pR R R 4       R R R 4       RV R2p
V! V/ VB pVEeD   \(        P:                  ! V4      p\(        P:                  ! V4      p\=        V4      \=        V4      8w  d&   \?        V
 R\=        V4       R\=        V4       24      hV P@                  '       d   \C        W«W43WVV34       \E        \G        \(        P:                  ! V4      \(        P:                  ! V4      4      4       Fv  w  pw  pp\I        V\        P,                  4      pV\I        V\        P,                  4      8w  d   \?        V
 R	24      hV'       g   KZ   \K        VVRV PL                  RRR
7       Kx  	  V#   + '       g   i     ELq; i  + '       g   i     EL}; i  \8         d     ELŽi ; i  \N         dK   p\Q        YT4      '       d    R p?KÙ  \=        T4      ^8X  d   T
 RT 2M	T
 RT RT 2p\S        T4      ThR p?ii ; i)N)ÚShapeEnv)Ú	shape_envT)Ústatic_shapeszWhen comparing the output of z* on FakeTensor and concrete Tensors, foundz mismatch in number of returns rG   z$ mismatched number of tensor outputs)r–   r—   ru   r˜   z mismatched tensor metadata: z' mismatched tensor metadata for output[z]: r   )*rZ   Ú
lift_freshr\   Úlift_fresh_copyr†   Úsource_Storage_storage_offsetr¨   r¦   r"   Ú_subclassesÚ
fake_implsÚhas_metaÚTagÚdynamic_output_shapeÚtagsÚinplace_viewÚdata_dependent_outputÚ%torch.fx.experimental.symbolic_shapesrº   r   ÚpytreeÚtree_map_onlyr,   Ú	functoolsÚpartialÚfrom_tensorÚwarningsÚcatch_warningsr   Útree_leavesÚlenÚAssertionErrorr¥   rN   Ú	enumerateÚziprm   r¢   r›   rT   rb   r
   )r±   rP   rµ   r¶   r·   Úfake_rÚ	fake_argsÚfake_kwargsrº   r‰   r?   ÚrÚr_flatÚf_flatrQ   Úr_outÚf_outÚr_is_tenrS   Úerror_messages   &&&&&               r   Ú__torch_dispatch__Ú#CrossRefFakeMode.__torch_dispatch__ï   sE  € ð —�˜2ˆàˆØ&(ˆ	Ø,.ˆð
 ä—‘×'Ñ'Ü×$Ñ$×,Ñ,Ü—	‘	×7Ñ7ðõð ×%Ñ% d×+Ó+à×1×1Ð1Ü×$Ñ$×/Ñ/×8Ñ8¸×>Ó>ä—	‘	×.Ñ.°d·i±iÔ?Ü—	‘	×&Ñ&¨d¯i©iÔ7Ü—	‘	×/Ñ/°t·y±yÔ@õ Gðä#©h«j×9Õ9¸YÜ-3×-AÒ-AÜŸ™Ü!×)Ò)¨)×*?Ñ*?ÈtÔTØ˜ó.Ñ*�Iô
 "×0Ò0×2Õ2Ù!% yÐ!@°KÑ!@˜÷ 3÷ :ð ,¨D¨6ð 2ð ð 	ñ �$Ð!˜&Ñ!ˆØÓÜ×'Ò'¨Ó*ˆFÜ×'Ò'¨Ó/ˆFÜ�6‹{œc &›kÔ)Ü$Ø�iÐ>¼sÀ6»{¸mÈ4ÔPSÐTZÓP[È}Ð]óð ð ×"×"Ð"Ü!Ø  °ÀKÐ8Pôô (1Ü”F×&Ò& qÓ)¬6×+=Ò+=¸fÓ+EÓFö(Ñ#�‘^�e˜Uô & e¬U¯\©\Ó:�Øœz¨%´·±Ó>Ô>Ü(Ø"˜)Ð#GÐHóð ÷ ‘8ðJÜ0Ø!Ø!Ø"&Ø$(×$6Ñ$6Ø+/Ø*.÷ñ(ð6 ˆ÷e 3×2Ð2ú÷ :×9Ð9ûô 2ô ÚðûôN %ô JÜ(¨°A×6Ò6Ý$ô  # 6›{¨aÔ/ð  '˜iÐ'DÀQÀCÑHà$+ 9Ð,SÐTWÐSXÐX[Ð\]Ð[^Ð!_ð &ô
 4°MÓBÈÐIûðJúsg   ÅM ÅA'MÇ	L3	ÇMÇM ÌM-Ì3MÌ>	MÍM	ÍM ÍM ÍM*Í)M*Í-OÍ8N=Î-N=Î=O)r¥   r›   r¨   r¦   r!   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r°   rß   Ú__static_attributes__Ú__classcell__)r²   s   @r   r¤   r¤   Þ   s<   ø† ñAð #ð	Að
  $ðAð *.÷Aó A÷ \õ \r   r¤   )Ú TFTT)(Ú
__future__r   rË   rÎ   Útypingr   r   r"   Útorch.utils._pytreerž   Ú_pytreerÉ   Útorch._subclasses.fake_tensorr   r   r   r	   r
   r   r   Útorch.utils._python_dispatchr   Úcollections.abcr   r   r   Ú
torch._opsr   r   Ú_opsÚopsrZ   r/   r6   r=   rN   rb   r”   r¢   r¤   r   r   r   Ú<module>rò      sŠ   ðÝ "ã Û ß %ã ß $Ð $÷÷ ñ õ ;÷ ß;Ñ;å%Ý*ð ‡z�z‡~�~×Ñ€õ	õYõ
	õ
õ<õ8D÷NôBmÐ(ö mr   