Ë
    g^(h*�  ã                   óÚ  — d dl Z d dlZd dlZd dlmZmZ d dl mZ d dlmZm	Z	m
Z
mZ d dlZd dlmc mZ d dlmZ d dlmZ d dlmZ d dlmZmZmZmZ ej:                  j=                  ed	«      Z d
„ Z! G d„ dejD                  «      Z# G d„ de«      Z$e jJ                  d„ «       Z& e$«       fde$fd„Z' G d„ de«      Z( G d„ de(«      Z) G d„ de(«      Z* G d„ de(«      Z+dejD                  fd„Z,y)é    N)ÚABCÚabstractmethod)ÚAbstractContextManager)ÚAnyÚCallableÚOptionalÚUnion)Ú$_functionalization_reapply_views_tls)Ú_get_dispatch_mode_pre_dispatch)Úis_sparse_any)Ú_detect_infra_modeÚ_disable_infra_modeÚreturn_and_correct_aliasingÚTorchDispatchModeÚnot_implementedc                  ó   ‡ — ˆ fd„}|S )Nc                 ó0   •—  | j                   |i i |¥‰¥¤ŽS ©N)Úto)ÚselfÚargsÚkwargsÚextra_kwargss      €úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_subclasses/functional_tensor.pyÚ_z&_conversion_method_template.<locals>._(   s$   ø€ Øˆt�w‰w˜Ð;Ð : 6Ð :¨\Ð :Ñ;Ð;ó    © )r   r   s   ` r   Ú_conversion_method_templater   '   s   ø€ ô<ð €Hr   c                   ó°  ‡ — e Zd ZU dZej
                  ed<   ej                  j                  j                  Z
ej                  j                  j                  ej                  j                  j                  «      Zej                   j"                  j$                  j&                  ej                   j"                  j$                  j(                  ej                   j"                  j*                  j&                  ej                   j"                  j,                  j&                  ej                   j"                  j.                  j&                  ej                   j"                  j0                  j&                  ej                   j"                  j2                  j&                  ej                   j"                  j4                  j&                  ej                   j"                  j6                  j&                  ej                   j"                  j8                  j&                  ej                   j"                  j:                  j&                  ej                   j"                  j<                  j&                  ej                   j"                  j>                  j&                  ej                   j@                  jB                  j&                  gZ"dZ#e$d    ed<   d„ Z%dd„Z&de'fd„Z(e)d	„ «       Z*d
„ Z+de,fd„Z-dd„Z.dd„Z/dd„Z0dd„Z1de2fd„Z3ˆ fd„Z4dd„Z5 e6ejn                  ¬«      Z8 e6 ejB                  d«      ¬«      Z9 e6ejt                  ¬«      Z: e6ejv                  ¬«      Z< e6ejz                  ¬«      Z> e6ej~                  ¬«      Z@ e6ejX                  ¬«      Z, e6ej‚                  ¬«      ZB e6ej†                  ¬«      ZD e6ejŠ                  ¬«      ZFd„ ZGeHd„ «       ZId„ ZJˆ xZKS )ÚFunctionalTensoraF  
    Functional tensors represent tensors that will remove mutations
    from a program. If you perform a mutable operation on a functional tensor,
    it will re-dispatch to the functional variant of that operation.

    Historically, functionalization is implemented in C++ in the dispatcher.
    This class is a lightweight python shim around the C++ functionalization logic.

    FunctionalTensor is required to be used with a corresponding
    FunctionalTensormode active, because it relies
    on using the mode for dispatch (which can properly handle factory functions).
    ÚelemNÚ_inference_mode_basec                 ó„  — t        j                  |«      sJ ‚t        j                  t         j                  j                  |«      z  }t         j                  j                  | |j                  t        |«      s|j                  «       nd t        |«      s|j                  «       nd d |j                  |j                  |j                  d|j                  d dd|«      }t         j                  j!                  |«       ||_        |j$                  s²t        j&                  «       ržt         j(                  j*                  j,                  rz|j/                  «       r0d |_        ||j2                  |j"                  j5                  «       <   |S |j2                  |j"                  j5                  «          |_        |j0                  €J ‚|S ©NF)ÚtorchÚ_is_functional_tensorr    Ú_extra_dispatch_keysÚ_CÚ_dispatch_keysÚTensorÚ_make_wrapper_subclassÚshaper   ÚstrideÚstorage_offsetÚdtypeÚlayoutÚdeviceÚrequires_gradÚ_set_throw_on_mutable_data_ptrr!   ÚexportÚis_inference_mode_enabledÚ	_inductorÚconfigÚenable_auto_functionalized_v2Úis_base_tensorr"   Ú_storage_to_baseÚuntyped_storage)Úclsr!   ÚmodeÚextra_dispatch_keysÚouts        r   Ú__new__zFunctionalTensor.__new__b   sp  € Ü×*Ñ*¨4Ô0Ð0Ð0ô& ×1Ñ1´E·H±H×4KÑ4KÈDÓ4QÑQð 	ô �l‰l×1Ñ1ð
 Ø�J‰JÜ!.¨tÔ!4ˆD�K‰KŒM¸$ä-:¸4Ô-@�×#Ñ#Ô%ÀdàØ�J‰JØ�K‰KØ�K‰KØØ×ÑØØØØó)
ˆô, 	�‰×/Ñ/°Ô4ØˆŒð —’Ü×/Ñ/Ô1Ü—‘×&Ñ&×DÒDà×!Ñ!Ô#Ø+/�Ô(ð EH�×%Ñ% c§h¡h×&>Ñ&>Ó&@ÑAð ˆ
ð	 ,0×+@Ñ+@Ø—H‘H×,Ñ,Ó.ñ,�Ô(ð ×/Ñ/Ð;Ð;Ð;Øˆ
r   c                 ó  — |D �cg c]5  }|t         j                  t         j                  j                  t        fvr|‘Œ7 }}|rt
        j                  d|«       t        S |€i }|t        j                  v �rt        |«      dk(  sJ ‚|t         j                  j                  j                  j                  t         j                  j                  j                  j                  fv rOt        |«      dk(  rt!        |d   t        «      sJ ‚ |t        j"                  |d   j$                  «      |d   «      S t        |«      dk(  rt!        |d   t        «      sJ ‚ |t        j"                  |d   j$                  «      «      S t'        d«      ‚c c}w )Nú.FunctionalTensor unrecognized subclass(es): %sr   é   é   zqAttempting to use FunctionalTensor on its own. Instead, please use it with a corresponding FunctionalTensorMode())r%   r*   Ú_subclassesÚ
FakeTensorr    Únot_implemented_logÚdebugÚNotImplementedÚmetadata_fnsÚlenÚopsÚatenÚis_strides_like_formatÚdefaultÚis_contiguousÚmemory_formatÚ
isinstanceÚ_from_functional_tensorr!   ÚRuntimeError)r   ÚfuncÚtypesr   r   ÚtÚunrecognized_typess          r   Ú__torch_dispatch__z#FunctionalTensor.__torch_dispatch__£   sg  € ð ö
àØœŸ™¤u×'8Ñ'8×'CÑ'CÔEUÐVÑVò ð
Ðð 
ñ
 Ü×%Ñ%Ø@ÐBTôô "Ð!àˆ>ØˆFð
 Ô#×0Ñ0Ò0ô �v“; !Ò#Ð#Ð#ØÜ—	‘	—‘×5Ñ5×=Ñ=Ü—	‘	—‘×,Ñ,×:Ñ:ðñ ô ˜4“y A’~¬*°T¸!±WÔ>NÔ*OÐOÐOÙœE×9Ñ9¸$¸q¹'¿,¹,ÓGÈÈaÉÓQÐQÜ�t“9 ’>¤j°°a±Ô:JÔ&KÐKÐKáœ×5Ñ5°d¸1±g·l±lÓCÓDÐDô Øó
ð 	
ùòM
s   …:F	Úreturnc                 ó4   — dt        | j                  «      › d�S )NzFunctionalTensor(ú))Úreprr!   ©r   s    r   Ú__repr__zFunctionalTensor.__repr__Î   s   € Ø"¤4¨¯	©	£?Ð"3°1Ð5Ð5r   c                 ó`  — t        j                  | «      rJ ‚t        j                  | «      }t        t         j                  j
                  j                  «      }|€J ‚|5  t        j                  | |«       t        ||«      }t        j                  ||«       d d d «       |S # 1 sw Y   S xY wr   )	r%   r&   Ú_to_functional_tensorr   r(   Ú_TorchDispatchModeKeyÚ
FUNCTIONALÚ_mirror_autograd_meta_tor    )ÚxÚx_functionalÚfunctional_moder?   s       r   Úto_functionalzFunctionalTensor.to_functionalÑ   sŸ   € ô ×.Ñ.¨qÔ1Ð1Ð1ô
 ×2Ñ2°1Ó5ˆô -¬U¯X©X×-KÑ-K×-VÑ-VÓWˆØÐ*Ð*Ð*àñ 	>Ü×*Ñ*¨1¨lÔ;Ü" <°ÓAˆCÜ×*Ñ*¨<¸Ô=÷	>ð ˆ
÷		>ð ˆ
ús   Á 9B#Â#B-c                 ój   — t        j                  | «       t        j                  | j                  «      S r   )r%   Ú_syncrS   r!   r^   s    r   Úfrom_functionalz FunctionalTensor.from_functionalê   s#   € Ü�‰�DÔÜ×,Ñ,¨T¯Y©YÓ7Ð7r   c                 ó@   — t        j                  | j                  «      S r   )r%   Ú_is_functional_tensor_baser!   r^   s    r   r9   zFunctionalTensor.is_base_tensorî   s   € Ü×/Ñ/°·	±	Ó:Ð:r   c                 óD   — t        j                  | j                  |«       y r   )r%   Ú_functionalize_replacer!   )r   Úoutputs     r   Úreplace_zFunctionalTensor.replace_ñ   s   € Ü×$Ñ$ T§Y¡Y°Õ7r   c                 óB   — t        j                  | j                  «       y r   )r%   Ú_functionalize_commit_updater!   r^   s    r   Úcommit_updatezFunctionalTensor.commit_updateô   s   € Ü×*Ñ*¨4¯9©9Õ5r   c                 óB   — t        j                  | j                  «       y r   )r%   Ú_functionalize_syncr!   r^   s    r   ÚsynczFunctionalTensor.sync÷   s   € Ü×!Ñ! $§)¡)Õ,r   c                 óB   — t        j                  | j                  «       y r   )r%   Ú1_functionalize_mark_mutation_hidden_from_autogradr!   r^   s    r   Ú"mark_mutation_hidden_from_autogradz3FunctionalTensor.mark_mutation_hidden_from_autogradú   s   € Ü×?Ñ?ÀÇ	Á	ÕJr   c                 ó^  — | j                   j                  «       dk(  r| j                   j                  «       S | j                   j                  «       dk(  r(| j                   D �cg c]  }|j                  «       ‘Œ c}S | j                   D �cg c]  }|j                  «       ‘Œ c}S c c}w c c}w )Nr   rD   )r!   ÚdimÚitemÚtolist)r   r!   s     r   r~   zFunctionalTensor.tolistý   su   € Ø�9‰9�=‰=‹?˜aÒØ—9‘9—>‘>Ó#Ð#Ø�Y‰Y�]‰]‹_ Ò!Ø,0¯I©IÖ6 D�D—I‘I•KÒ6Ð6à.2¯i©iÖ8 d�D—K‘K•MÒ8Ð8ùò 7ùâ8s   Á#B%ÂB*c           	      ó  •— t        t        j                  j                  j                  «      j
                  rBt        |D �cg c]  }t        |t        «      sŒ|‘Œ c}«      dk  rt        ‰| �(  |i i |¥ddi¥¤ŽS t        ‰| �(  |i |¤ŽS c c}w )NrD   ÚcopyT)r   r%   r(   rb   rc   r4   rK   rR   ÚboolÚsuperr   )r   r   r   ÚargÚ	__class__s       €r   r   zFunctionalTensor.to  s}   ø€ ÜœeŸh™h×<Ñ<×GÑGÓH×OÒOä 4ÖA˜C¬:°c¼4Õ+@’CÒAÓBÀaÒGÜ‘w‘z 4ÐDÐ+C¨fÐ+C°f¸dÑ+CÑDÐDÜ‰w‰z˜4Ð* 6Ñ*Ð*ùò Bs   ÁB
ÁB
c                 ó¶   — |xs t         j                  j                  «       }t        |«      dkD  r | j                  |g|¢­i |¤ŽS  | j                  dd|i|¤ŽS )Nr   r1   r   )r%   ÚcudaÚcurrent_devicerK   r   )r   r1   r   r   s       r   r†   zFunctionalTensor.cuda  sX   € ØÒ6œ5Ÿ:™:×4Ñ4Ó6ˆÜˆt‹9�qŠ=Ø�4—7‘7˜6Ð3 DÒ3¨FÑ3Ð3à�4—7‘7Ñ3 &Ð3¨FÑ3Ð3r   ©r/   Úcpu)r1   c                 ó6   — | j                   j                  «       S r   )r!   Úto_denser^   s    r   r‹   zFunctionalTensor.to_dense  s   € Ø�y‰y×!Ñ!Ó#Ð#r   c                 ó.   — | j                   j                  S r   )r!   r0   r^   s    r   r0   zFunctionalTensor.layout"  s   € à�y‰y×ÑÐr   c                 ó4   — t        | j                  «       «      S r   )r�   r}   r^   s    r   Ú__bool__zFunctionalTensor.__bool__&  s   € Ü�D—I‘I“KÓ Ð r   ©r   N©rZ   Nr   )LÚ__name__Ú
__module__Ú__qualname__Ú__doc__r%   r*   Ú__annotations__r(   rb   rc   Ú	_mode_keyÚ,_additional_keys_to_prop_for_wrapper_tensorsÚaddÚDispatchKeyÚ
ZeroTensorr'   rL   rM   rP   rO   rQ   rN   Úis_non_overlapping_and_denseÚsizeÚsym_sizer-   Ú
sym_strider.   Úsym_storage_offsetÚnumelÚ	sym_numelr|   Úprimr1   rJ   r"   r   r@   rY   Ústrr_   Ústaticmethodrh   rk   r�   r9   rq   rt   rw   rz   r   r~   r   r†   r   Úint8Úcharr‰   Úbfloat16Úuint8ÚbyteÚfloat64ÚdoubleÚfloat32ÚfloatÚfloat16ÚhalfÚint32ÚintÚint64Úlongr‹   Úpropertyr0   rŽ   Ú__classcell__©r„   s   @r   r    r    .   sÔ  ø… ñð �,‰,Óð —‘×.Ñ.×9Ñ9€Ið !Ÿ8™8×PÑP×TÑTØ�‰×Ñ×'Ñ'óÐð 	�	‰	�‰×$Ñ$×,Ñ,Ø�	‰	�‰×$Ñ$×2Ñ2Ø�	‰	�‰×-Ñ-×5Ñ5Ø�	‰	�‰×3Ñ3×;Ñ;Ø�	‰	�‰×Ñ×#Ñ#Ø�	‰	�‰×Ñ×'Ñ'Ø�	‰	�‰×Ñ×%Ñ%Ø�	‰	�‰×!Ñ!×)Ñ)Ø�	‰	�‰×%Ñ%×-Ñ-Ø�	‰	�‰×)Ñ)×1Ñ1Ø�	‰	�‰×Ñ×$Ñ$Ø�	‰	�‰× Ñ ×(Ñ(Ø�	‰	�‰×Ñ×"Ñ"Ø�	‰	�‰×Ñ×%Ñ%ð€Lð$ :>Ð˜(Ð#5Ñ6Ó=ò?óB)
ðV6˜#ó 6ð ñó ðò08ð; ó ;ó8ó6ó-óKð9˜ó 9ô+ó4ñ '¨U¯Z©ZÔ8€DÙ
%¨\¨U¯\©\¸%Ó-@Ô
A€CÙ*°·±Ô@€HÙ&¨U¯[©[Ô9€DÙ(¨u¯}©}Ô=€FÙ'¨e¯m©mÔ<€EÙ&¨U¯Z©ZÔ8€DÙ&¨U¯]©]Ô;€DÙ
%¨E¯K©KÔ
8€CÙ&¨U¯[©[Ô9€Dò$ð ñ ó ð ö!r   r    c                   óR   ‡ — e Zd Zdˆ fd„	Zˆ fd„Zˆ fd„Zdd„Zedefd„«       Z	ˆ xZ
S )	ÚFunctionalTensorModec                 ób  •— t         ‰| �  «        || _        d| _        g | _        t
        j                  j                  j                  | _	        || _
        |r$t
        j                  j                  j                  nd | _        i | _        i | _        || _        t#        j$                  «       | _        y r$   )r‚   Ú__init__r4   Úis_on_stackÚenter_stackr%   r(   rb   rc   r–   Úpre_dispatchr™   ÚPreDispatchÚ_dispatch_keyÚ_tokensÚ_tokens_forward_outputÚ_allow_token_discoveryÚweakrefÚWeakKeyDictionaryr:   )r   r½   r4   rÂ   r„   s       €r   rº   zFunctionalTensorMode.__init__+  s˜   ø€ Ü‰ÑÔØˆŒØ ˆÔØˆÔô Ÿ™×7Ñ7×BÑBˆŒØ(ˆÔáAMœUŸX™X×1Ñ1×=Ò=ÐSWˆÔð 13ˆŒð @BˆÔ#ð '=ˆÔ#ô ×%Ñ%Ó'ð 	Õr   c                 óª   •‡ — ˆ fd„} |«       €)‰ j                   j                  d«       t        ‰‰ �  «       S ‰ j                   j                  d«       ‰ S )Nc                  óB  •— ‰ j                   t        j                  j                  j                  k(  r-t        t        j                  j                  j                  «      S t        j                  j                  t        j                  j                  j                  «      S r   )	r¿   r%   r(   r™   r¾   r   rb   rc   Ú_get_dispatch_moder^   s   €r   Ú_get_prev_modez6FunctionalTensorMode.__enter__.<locals>._get_prev_modeL  sm   ø€ Ø×!Ñ!¤U§X¡X×%9Ñ%9×%EÑ%EÒEÜ6Ü—H‘H×2Ñ2×=Ñ=óð ô —8‘8×.Ñ.Ü—‘×.Ñ.×9Ñ9óð r   TF)r¼   Úappendr‚   Ú	__enter__)r   rÈ   r„   s   ` €r   rÊ   zFunctionalTensorMode.__enter__K  sN   ù€ ô	ñ ÓÐ#Ø×Ñ×#Ñ# DÔ)Ü‘7Ñ$Ó&Ð&à×Ñ×#Ñ# EÔ*ØˆKr   c                 ób   •— | j                   j                  «       }|rt        ‰| �  |||«       y y r   )r¼   Úpopr‚   Ú__exit__)r   ÚaÚbÚcr»   r„   s        €r   rÍ   zFunctionalTensorMode.__exit__\  s0   ø€ Ø×&Ñ&×*Ñ*Ó,ˆÙÜ‰GÑ˜Q  1Õ%ð r   c                 ód  ‡ ‡‡‡— ‰€i Š‰ j                   �rN‰t        j                  j                  j                  j
                  k(  rR‰j                  dd «       ‰ j                  t        j                  j                  j                  j                  ||‰«      S ‰t        j                  j                  j                  j                  k(  ršt        d„ ‰j                  j                  D «       «      }t        |dd  |dd  «      D ]
  \  }}|‰|<   Œ ‰j                  dd «       ‰ j                  t        j                  j                  j                  j                  ||d d ‰«      S |D �cg c]@  }t        |t        j                   j"                  «      s|t        j$                  t&        fvr|‘ŒB }	}|	rt(        j+                  d|	«       t,        S ˆ fd„}
‰t&        j.                  vrf |
‰«      r^t        j0                  j3                  ‰j5                  «       «      r1‰ 5   ‰j6                  |i ‰¤Ž}|t,        ur|cd d d «       S 	 d d d «       ˆ fd„}d„ }dd	lm}m}m}  |‰«      r‡t        j0                  jA                  ‰j5                  «       t        j0                  jB                  jD                  «      s7dd l#m$c m%} ‰ j                   s|jL                  s |‰ ‰|‰«      S  |‰ ‰|‰«      S dd
l'm(}m)}  |‰|‰«      rrt        j0                  jA                  ‰j5                  «       t        j0                  jB                  jD                  «      rJ ‚ |‰ jT                  ‰ jV                  ‰|‰«      S tY        jZ                  t&        ||‰f«      \  Š}t        j0                  j]                  t        j0                  jB                  jD                  «      }t        j0                  j_                  t        j0                  jB                  jD                  «      }|s|rJ ‚t        j0                  ja                  «       t        j0                  jc                  t        j0                  jB                  jD                  «      z  }t        j0                  je                  «       jg                  t        j0                  jB                  jD                  «      t&        jh                  z
  }t        j0                  jk                  ||«      5  	 t        jl                  d«      }‰t&        j.                  v r/ ‰‰i |¤Ž}tY        jZ                  t        j$                  ||«      }�n[ ‰jn                  t        j0                  jB                  jD                  g‰¢­i |¤Ž}‰ j                   rò‰t        j                  j                  jp                  j                  t        j                  j                  j                  j                  fv r”ˆˆˆfd„} |«       rqt        jr                  ‰d   «      rYt        j                  j                  jt                  j                  t        jv                  ‰d   «      ‰d   j                  ¬«       nt        jx                  |«       tY        jZ                  t        j$                  ||«      }t        jz                  «        t        jl                  |«       	 d d d «       t        j0                  j]                  t        j0                  jB                  jD                  «      }t        j0                  j_                  t        j0                  jB                  jD                  «      }|s|rJ ‚t}        d„ tY        j~                  «      D «       «      r1‰t        j                  j                  j€                  j                  k(  r|S t        j‚                  j„                  ‰j†                  v ri‰t        j                  j                  jˆ                  jŠ                  ur9t        jŒ                  jŽ                  j‘                  «       5   ‰|i ‰¤Ž d d d «       t“        ‰|‰|«      S c c}w # 1 sw Y   �ŒxY w# t        jz                  «        t        jl                  «       w xY w# 1 sw Y   �ŒÇxY w# 1 sw Y   ŒdxY w)Nr€   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   )Úname©Ú.0rƒ   s     r   ú	<genexpr>z:FunctionalTensorMode.__torch_dispatch__.<locals>.<genexpr>n  s   è ø€ ÒJ¨C˜sŸx�xÑJùó   ‚rD   rB   c                 óÀ  •— ‰j                   r2| t        j                  j                  j                  j
                  k(  ryddlm}  || «      ryt        d„ | j                  j                  D «       «      }|s| j                  j                  ry‰j                   rE‰j                  r8| j                  dvr)| j                  «       rt        j                   d| › d�«       yyy)	NFr   )Ú#_should_decompose_because_unsafe_opTc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   )Ú
alias_inforÔ   s     r   rÖ   zRFunctionalTensorMode.__torch_dispatch__.<locals>._can_decompose.<locals>.<genexpr>“  s   è ø€ Ò$V¸ S§^¥^Ñ$Vùr×   )rM   r¢   z˜At pre-dispatch tracing, we assume that any custom op marked with CompositeImplicitAutograd and have functional schema are safe to not decompose. Found z to be one such op.)r4   r%   rL   rM   ÚdropoutrO   Útorch._decomprÙ   ÚanyÚ_schemaÚ	argumentsÚ
is_mutabler½   Ú	namespaceÚ_can_decomposeÚwarningsÚwarn)rU   rÙ   Úalias_info_presentr   s      €r   rã   z?FunctionalTensorMode.__torch_dispatch__.<locals>._can_decomposeƒ  s¿   ø€ ð �{Š{˜t¤u§y¡y§~¡~×'=Ñ'=×'EÑ'EÒEØõ Já2°4Ô8Øô "%Ñ$V¸t¿|¹|×?UÑ?UÔ$VÓ!VÐÙ! T§\¡\×%<Ò%<Øð �{Š{Ø×$Ò$à—~‘~Ð-=Ñ=À$×BUÑBUÔBWÜ Ÿ™ð%à%) FÐ*=ð?ôð
 !Øð r   c                 ó¢   •— t        | t        «      rJ ‚t        | t        j                  «      r!t        j                  | «      rt        | ‰«      S | S r   )rR   r    r%   r*   r&   )re   r   s    €r   Úwrapz5FunctionalTensorMode.__torch_dispatch__.<locals>.wrap¸  sC   ø€ ô " !Ô%5Ô6Ð6Ð6Ü˜!œUŸ\™\Ô*¬u×/JÑ/JÈ1Ô/MÜ'¨¨4Ó0Ð0ØˆHr   c                 ó   — | j                   S r   )r!   )re   s    r   Úunwrapz7FunctionalTensorMode.__torch_dispatch__.<locals>.unwrapÁ  s   € Ø—6‘6ˆMr   r   )Úcan_auto_functionalizeÚdo_auto_functionalizeÚdo_auto_functionalize_v2)Úhandle_effectsÚhas_effectsTc                  ó    •— ‰t         j                  j                  j                  j                  k(  xr d‰v xr ‰d   ‰ d   j
                  k7  S )z‚
                                Return True if the output of the op must be copied, not an alias
                                r/   r   )r%   rL   rM   Ú_to_copyrO   r/   )Úargs_unwrappedrU   r   s   €€€r   Ú	must_copyz:FunctionalTensorMode.__torch_dispatch__.<locals>.must_copy  sQ   ø€ ð %)¬E¯I©I¯N©N×,CÑ,C×,KÑ,KÑ$Kò %SØ(/°6Ð(9ò%Sà(.¨w©¸>È!Ñ;L×;RÑ;RÑ(Rð!"r   rˆ   c              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr   )rR   r    )rÕ   re   s     r   rÖ   z:FunctionalTensorMode.__torch_dispatch__.<locals>.<genexpr>A  s    è ø€ ò àô ˜1Ô.×/ñùs   ‚)Jr4   r%   rL   rM   r   Údtype_layoutrÌ   rY   rñ   rO   r/   Útuplerß   rà   ÚzipÚ
issubclassrE   rF   r*   r    rG   rH   rI   rJ   r(   Ú_dispatch_has_kernelrÓ   Ú	decomposeÚ*torch._higher_order_ops.auto_functionalizerë   rì   rí   Ú%_dispatch_has_kernel_for_dispatch_keyr™   ÚFunctionalizeÚtorch._inductor.configr6   r7   r8   Útorch._higher_order_ops.effectsrî   rï   rÂ   rÀ   ÚpytreeÚtree_map_onlyÚ&_dispatch_tls_is_dispatch_key_includedÚ&_dispatch_tls_is_dispatch_key_excludedÚ_dispatch_tls_local_include_setÚDispatchKeySetÚ_dispatch_tls_local_exclude_setÚremover'   Ú_ForceDispatchKeyGuardÚ#_functionalize_enable_reapply_viewsÚ_op_dkrÜ   r&   Ú_assert_tensor_metadatarS   Ú_freeze_functional_tensorÚ_disable_functionalizationrÞ   Útree_leavesÚ
lift_freshÚTagÚinplace_viewÚtagsÚset_Úsource_TensorÚutilsÚ_mode_utilsÚno_dispatchr   )r   rU   rV   r   r   Úschemarƒ   rÓ   rW   rX   rã   Úrrè   rê   rë   rì   rí   Úinductor_configrî   rï   Úkwargs_unwrappedÚis_includedÚis_excludedÚinclude_to_setÚexclude_to_setÚold_apply_viewsÚouts_unwrappedÚouts_wrappedró   rò   s   ``  `                        @r   rY   z'FunctionalTensorMode.__torch_dispatch__a  sî  û€ Øˆ>ØˆFà�;‹;ð ”u—y‘y—~‘~×(Ñ(×5Ñ5Ò5Ø—
‘
˜6 4Ô(Ø×.Ñ.Ü—I‘I—N‘N×+Ñ+×3Ñ3°U¸DÀ&óð ð ”u—y‘y—~‘~×(Ñ(×.Ñ.Ò.ÜÑJ°4·<±<×3IÑ3IÔJÓJ�Ü!$ T¨!¨" X¨v°a°b¨zÓ!:ò '‘I�C˜Ø#&�F˜4’Lð'à—
‘
˜6 4Ô(Ø×.Ñ.Ü—I‘I—N‘N×+Ñ+×3Ñ3°U¸DÀÀ!¸HÀfóð ð ö
àÜ˜a¤×!2Ñ!2×!=Ñ!=Ô>Øœ%Ÿ,™,Ô(8Ð9Ñ9ò ð
Ðð 
ñ Ü×%Ñ%Ø@ÐBTôô "Ð!ô'	ðT Ô(×5Ñ5Ñ5Ù˜tÔ$ô —‘×-Ñ-¨d¯i©i«kÔ:àñ Ø"�D—N‘N DÐ3¨FÑ3�ØœNÑ*Ø÷ñ à*÷ô
	ò	÷	
ñ 	
ñ "Øô
ä—(‘(×@Ñ@Ø�I‰I‹KœŸ™×-Ñ-×;Ñ;ô
÷ =Ð<à�{Š{ /×"OÒ"OÙ,¨T°4¸¸vÓFÐFá/°°d¸DÀ&ÓIÐIçOá�t˜T 6Ô*Ü—x‘x×EÑEØ—	‘	“œUŸX™X×1Ñ1×?Ñ?ôð ð ñ "Ø×+Ñ+¨T¯\©\¸4ÀÀvóð ô ,2×+?Ñ+?Ü˜f t¨V nó,
Ñ(ˆÐ(ô —h‘h×EÑEÜ�H‰H× Ñ ×.Ñ.ó
ˆô —h‘h×EÑEÜ�H‰H× Ñ ×.Ñ.ó
ˆñ ¡+Ð-Ð-ä�H‰H×4Ñ4Ó6Ü�h‰h×%Ñ%¤e§h¡h×&:Ñ&:×&HÑ&HÓIñJð 	ô
 �H‰H×4Ñ4Ó6×=Ñ=Ü—‘×$Ñ$×2Ñ2óô ×3Ñ3ñ4ð 	ô �X‰X×,Ñ,¨^¸^ÓLñ :	Kð9Kä"'×"KÑ"KÈDÓ"Q�ð Ô+×8Ñ8Ñ8Ù%)¨>Ð%NÐ=MÑ%N�NÜ#)×#7Ñ#7ÜŸ™ d¨Nó$’Lð &1 T§[¡[ÜŸ™×,Ñ,×:Ñ:ð&à'ò&ð +ñ&�Nð —{’{ØÜ!ŸI™IŸN™N×2Ñ2×:Ñ:Ü!ŸI™IŸN™N×3Ñ3×;Ñ;ð$ñ ö
	"ñ  )œ{¬u×/JÑ/JØ .¨qÑ 1ô0ô
 !&§	¡	§¡× FÑ F× NÑ NÜ$)×$AÑ$AÀ.ÐQRÑBSÓ$TØ*8¸Ñ*;×*AÑ*Að !Oõ !"ô
 !&× ?Ñ ?ÀÔ OÜ#)×#7Ñ#7ÜŸ™ d¨Nó$�Lô ×0Ñ0Ô2Ü×9Ñ9¸/ÕJ÷u:	Kôx —h‘h×EÑEÜ�H‰H× Ñ ×.Ñ.ó
ˆô —h‘h×EÑEÜ�H‰H× Ñ ×.Ñ.ó
ˆñ ¡+Ð-Ð-ô ñ ä×+Ñ+¨LÓ9ôô ð ”u—y‘y—~‘~×0Ñ0×8Ñ8Ò8àÐô �I‰I×"Ñ" d§i¡iÑ/ØœEŸI™IŸN™N×/Ñ/×=Ñ=Ñ=ä—‘×(Ñ(×4Ñ4Ó6ñ &Ù�dÐ%˜fÒ%÷&ô +¨4°°v¸|ÓLÐLùòC
÷zñ ûôB ×0Ñ0Ô2Ü×9Ñ9¸/ÕJú÷u:	Kñ :	Kú÷l&ð &úsD   Å(AaÈaÓ7bÓ9F1a+Ú*)bà:	b&áa(á++bâbâb#â&b/rZ   c                  ó   — y)NTr   )r<   s    r   Úis_infra_modez"FunctionalTensorMode.is_infra_modeY  s   € àr   )FFFr�   )r‘   r’   r“   rº   rÊ   rÍ   rY   Úclassmethodr�   r$  rµ   r¶   s   @r   r¸   r¸   *  s6   ø„ õ(ô@ô"&ó
vMðp ð˜dò ó ôr   r¸   c                  ó\   — t        t        j                  j                  j                  «      S r   )r   r%   r(   rb   rc   r   r   r   Údisable_functional_moder'  ^  s   € äœuŸx™x×=Ñ=×HÑHÓIÐIr   r=   c                 ó*   ‡ ‡‡‡— d„ Šd„ Šˆˆ ˆˆfd„}|S )Nc                 ód   — t        | t        j                  «      rt        j	                  | «      S | S r   )rR   r%   r*   r    rh   ©rW   s    r   Úto_funz&dispatch_functionalize.<locals>.to_funm  s&   € Ü�aœŸ™Ô&Ü#×1Ñ1°!Ó4Ð4Øˆr   c                 óð   — t        | t        «      s3t        | t        j                  «      rt        j                  | «      rJ ‚| S t        j
                  | «       t        j                  | j                  «      S r   )rR   r    r%   r*   r&   rj   rS   r!   r*  s    r   Úfrom_funz(dispatch_functionalize.<locals>.from_funr  sT   € Ü˜!Ô-Ô.ä˜!œUŸ\™\Ô*Ü ×6Ñ6°qÔ9Ð9Ð9ØˆHÜ�‰�AŒÜ×,Ñ,¨Q¯V©VÓ4Ð4r   c                  ó  •— t         j                  j                  t         j                  j                  t         j                  j                  j
                  «      «      }|5  ‰	5  t        j                  t         j                  ‰
| «      }t        j                  t         j                  ‰
|«      } ‰|i |¤Ž}t        j                  t        ‰|«      }|cd d d «       cd d d «       S # 1 sw Y   nxY wd d d «       y # 1 sw Y   y xY wr   )
r%   r(   Ú_ExcludeDispatchKeyGuardr  r™   rý   r   r  r*   r    )r   r   Údisable_aboveÚ	func_argsÚfunc_kwargsÚfunc_outputsÚoutputsr-  rU   r=   r+  s          €€€€r   Úinnerz%dispatch_functionalize.<locals>.inner{  sÆ   ø€ ÜŸ™×9Ñ9Ü�H‰H×#Ñ#¤E§H¡H×$8Ñ$8×$FÑ$FÓGó
ˆð ñ 	˜Dñ 	Ü×,Ñ,¬U¯\©\¸6À4ÓHˆIÜ ×.Ñ.¬u¯|©|¸VÀVÓLˆKÙ Ð:¨kÑ:ˆLÜ×*Ñ*Ô+;¸XÀ|ÓTˆGà÷	÷ 	÷ 	ó 	ú÷ 	÷ 	ñ 	ús%   Á"C<Á%A/C'Ã	C<Ã'C0	Ã,C<Ã<Dr   )rU   r=   r5  r-  r+  s   `` @@r   Údispatch_functionalizer6  k  s   û€ òò
5÷
ð €Lr   c                   ó   — e Zd Zedee   dee   fd„«       Zedeej                  eej                  df   f   defd„«       Z
ededefd„«       Zedefd„«       Zedd
„«       Zedd„«       Zedd„«       Zedd„«       Zy	)ÚBaseFunctionalizeAPIr   rZ   c                  ó   — y r   r   ©r   r   s     r   Úwrap_tensorsz!BaseFunctionalizeAPI.wrap_tensors‹  ó   € àr   .c                  ó   — y r   r   r:  s     r   Úunwrap_tensorsz#BaseFunctionalizeAPI.unwrap_tensors�  s   € ð 	r   Úinner_fc                  ó   — y r   r   ©r   r?  s     r   Úfunctionalizez"BaseFunctionalizeAPI.functionalize•  r<  r   c                  ó   — y r   r   r^   s    r   Úredispatch_to_nextz'BaseFunctionalizeAPI.redispatch_to_next™  r<  r   Nc                  ó   — y r   r   ©r   Úinput_tensorÚoutput_tensors      r   ÚreplacezBaseFunctionalizeAPI.replace�  r<  r   c                  ó   — y r   r   ©r   Útensors     r   rt   z"BaseFunctionalizeAPI.commit_update¡  r<  r   c                  ó   — y r   r   rK  s     r   rw   zBaseFunctionalizeAPI.sync¥  r<  r   c                  ó   — y r   r   rK  s     r   rz   z7BaseFunctionalizeAPI.mark_mutation_hidden_from_autograd©  r<  r   r�   )r‘   r’   r“   r   rö   r   r;  r	   r%   r*   r>  r   rB  r   rD  rI  rt   rw   rz   r   r   r   r8  r8  Š  sø   „ Øð  s¡ð °°c±
ò ó ðð ðØ˜%Ÿ,™,¨¨e¯l©l¸CÐ.?Ñ(@Ð@ÑAðà	òó ðð
 ð Xð °(ò ó ðð ðÐ$:ò ó ðð òó ðð òó ðð òó ðð òó ñr   r8  c                   óö   ‡ — e Zd Z	 ddee   deddfˆ fd„Zdee   dee   fd„Z	de
ej                  eej                  df   eej                     f   defd	„Zd
edefd„Zdefd„Zdd„Zdd„Zdd„Zdd„Zˆ xZS )ÚPythonFunctionalizeAPINr=   r½   rZ   c                 óV   •— t         ‰| �  «        |r|n	t        «       | _        || _        y r   )r‚   rº   r¸   r=   r½   )r   r=   r½   r„   s      €r   rº   zPythonFunctionalizeAPI.__init__¯  s'   ø€ ô 	‰ÑÔÙ ‘DÔ&:Ó&<ˆŒ	Ø(ˆÕr   r   c                 óÔ   — | j                   5  t        j                  j                  j	                  t        j
                  t        j                  |«      cd d d «       S # 1 sw Y   y xY wr   )r=   r%   r  Ú_pytreer  r*   r    rh   r:  s     r   r;  z#PythonFunctionalizeAPI.wrap_tensors¶  sH   € Ø�Y‰Yñ 	Ü—;‘;×&Ñ&×4Ñ4Ü—‘Ô.×<Ñ<¸dó÷	÷ 	ò 	ús   �AAÁA'.c                 ó|   — t         j                  j                  j                  t        t        j
                  |«      S r   )r%   r  rS  r  r    rk   r:  s     r   r>  z%PythonFunctionalizeAPI.unwrap_tensors¼  s/   € ô �{‰{×"Ñ"×0Ñ0ÜÔ.×>Ñ>Àó
ð 	
r   r?  c                 ó.   — t        || j                  «      S r   )r6  r=   rA  s     r   rB  z$PythonFunctionalizeAPI.functionalizeÃ  s   € Ü% g¨t¯y©yÓ9Ð9r   c                 ó*   — t        j                  «       S r   )Ú
contextlibÚnullcontextr^   s    r   rD  z)PythonFunctionalizeAPI.redispatch_to_nextÆ  s   € ô ×%Ñ%Ó'Ð'r   c                 ón   — t        |t        «      sJ ‚t        |t        «      rJ ‚|j                  |«       y r   )rR   r    rq   rF  s      r   rI  zPythonFunctionalizeAPI.replaceÎ  s2   € Ü˜,Ô(8Ô9Ð9Ð9Ü˜mÔ-=Ô>Ð>Ð>Ø×Ñ˜mÕ,r   c                 óH   — t        |t        «      sJ ‚|j                  «        y r   )rR   r    rt   rK  s     r   rt   z$PythonFunctionalizeAPI.commit_updateÓ  s   € Ü˜&Ô"2Ô3Ð3Ð3Ø×ÑÕr   c                 óH   — t        |t        «      sJ ‚|j                  «        y r   )rR   r    rw   rK  s     r   rw   zPythonFunctionalizeAPI.sync×  s   € Ü˜&Ô"2Ô3Ð3Ð3Ø�‰�r   c                 óH   — t        |t        «      sJ ‚|j                  «        y r   )rR   r    rz   rK  s     r   rz   z9PythonFunctionalizeAPI.mark_mutation_hidden_from_autogradÛ  s   € Ü˜&Ô"2Ô3Ð3Ð3Ø×1Ñ1Õ3r   r$   r�   )r‘   r’   r“   r   r¸   r�   rº   rö   r   r;  r	   r%   r*   Úlistr>  r   rB  r   rD  rI  rt   rw   rz   rµ   r¶   s   @r   rP  rP  ®  s´   ø„ àPUñ)ØÐ1Ñ2ð)ØIMð)à	õ)ð  s¡ð °°c±
ó ð
Ø˜%Ÿ,™,¨¨e¯l©l¸CÐ.?Ñ(@À$ÀuÇ|Á|ÑBTÐTÑUð
à	ó
ð: Xð :°(ó :ð(Ð$:ó (ó-ó
ó÷4r   rP  c                   óì   — e Zd Zdee   dee   fd„Zdeej                  eej                  df   f   deej                  eej                  df   f   fd„Z	de
de
fd„Zdefd„Zdd
„Zdd„Zdd„Zdd„Zy	)ÚCppFunctionalizeAPIr   rZ   c                 ó"   — ddl m}  ||d¬«      S ©Nr   )Ú_wrap_all_tensors_to_functional)Úlevel)Ú!torch._functorch.eager_transformsrb  ©r   r   rb  s      r   r;  z CppFunctionalizeAPI.wrap_tensorsá  s   € ÝUá.¨t¸1Ô=Ð=r   .c                 ó2   — ddl m}  ||t        «       ¬«      S ©Nr   )Ú#_unwrap_all_tensors_from_functional)Úreapply_views)rd  rh  Ú_reapply_views©r   r   rh  s      r   r>  z"CppFunctionalizeAPI.unwrap_tensorsæ  s   € õ	
ñ 3°4Ä~ÓGWÔXÐXr   r?  c                 ó@   — t         j                  j                  |«      S r   )r%   rU   rB  rA  s     r   rB  z!CppFunctionalizeAPI.functionalizeï  s   € Ü�z‰z×'Ñ'¨Ó0Ð0r   c                 ó¾   — t         j                  j                  t         j                  j                  t         j                  j                  j
                  «      «      S r   )r%   r(   r/  r  r™   rý   r^   s    r   rD  z&CppFunctionalizeAPI.redispatch_to_nextò  s;   € Ü�x‰x×0Ñ0Ü�H‰H×#Ñ#¤E§H¡H×$8Ñ$8×$FÑ$FÓGó
ð 	
r   Nc                 ó0   — t        j                  ||«       y r   ©r%   ro   rF  s      r   rI  zCppFunctionalizeAPI.replace÷  ó   € Ü×$Ñ$ \°=ÕAr   c                 ó.   — t        j                  |«       y r   ©r%   rs   rK  s     r   rt   z!CppFunctionalizeAPI.commit_updateú  ó   € Ü×*Ñ*¨6Õ2r   c                 ó.   — t        j                  |«       y r   ©r%   rv   rK  s     r   rw   zCppFunctionalizeAPI.syncý  ó   € Ü×!Ñ! &Õ)r   c                 ó.   — t        j                  |«       y r   ©r%   ry   rK  s     r   rz   z6CppFunctionalizeAPI.mark_mutation_hidden_from_autograd   ó   € Ü×?Ñ?ÀÕGr   r�   )r‘   r’   r“   rö   r   r;  r	   r%   r*   r>  r   rB  r   rD  rI  rt   rw   rz   r   r   r   r_  r_  à  s£   „ ð>  s¡ð >°°c±
ó >ð
YØ˜%Ÿ,™,¨¨e¯l©l¸CÐ.?Ñ(@Ð@ÑAðYà	ˆu�|‰|˜U 5§<¡<°Ð#4Ñ5Ð5Ñ	6óYð1 Xð 1°(ó 1ð
Ð$:ó 
ó
Bó3ó*ôHr   r_  c                   óò   — e Zd Zd„ Zdee   dee   fd„Zdeej                  eej                  df   f   deej                  eej                  df   f   fd„Z
dedefd„Zdefd	„Zdd„Zdd„Zdd„Zdd„Zy
)ÚFunctorchFunctionalizeAPIc                 ó   — || _         y r   )Úinterpreter)r   r}  s     r   rº   z"FunctorchFunctionalizeAPI.__init__  s
   € Ø&ˆÕr   r   rZ   c                 óR   — ddl m}  ||| j                  j                  «       ¬«      S ra  )rd  rb  r}  rc  re  s      r   r;  z&FunctorchFunctionalizeAPI.wrap_tensors  s!   € ÝUá.¨t¸4×;KÑ;K×;QÑ;QÓ;SÔTÐTr   .c                 óR   — ddl m}  ||| j                  j                  «       ¬«      S rg  )rd  rh  r}  Úfunctionalize_add_back_viewsrk  s      r   r>  z(FunctorchFunctionalizeAPI.unwrap_tensors  s*   € õ	
ñ 3Ø × 0Ñ 0× MÑ MÓ Oô
ð 	
r   r?  c                 ó†   — t         j                  j                  || j                  j	                  «       rd¬«      S d¬«      S )NÚmutations_and_viewsÚ	mutations)r  )r%   rU   rB  r}  r€  rA  s     r   rB  z'FunctorchFunctionalizeAPI.functionalize  sN   € Ü�z‰z×'Ñ'Øð ×#Ñ#×@Ñ@ÔBð &ð (ó 
ð 	
ð
 !ð (ó 
ð 	
r   c                 ó6   — | j                   j                  «       S r   )r}  Úlowerr^   s    r   rD  z,FunctorchFunctionalizeAPI.redispatch_to_next"  s   € Ø×Ñ×%Ñ%Ó'Ð'r   Nc                 ó0   — t        j                  ||«       y r   ro  rF  s      r   rI  z!FunctorchFunctionalizeAPI.replace%  rp  r   c                 ó.   — t        j                  |«       y r   rr  rK  s     r   rt   z'FunctorchFunctionalizeAPI.commit_update(  rs  r   c                 ó.   — t        j                  |«       y r   ru  rK  s     r   rw   zFunctorchFunctionalizeAPI.sync+  rv  r   c                 ó.   — t        j                  |«       y r   rx  rK  s     r   rz   z<FunctorchFunctionalizeAPI.mark_mutation_hidden_from_autograd.  ry  r   r�   )r‘   r’   r“   rº   rö   r   r;  r	   r%   r*   r>  r   rB  r   rD  rI  rt   rw   rz   r   r   r   r{  r{    s¨   „ ò'ðU  s¡ð U°°c±
ó Uð
	
Ø˜%Ÿ,™,¨¨e¯l©l¸CÐ.?Ñ(@Ð@ÑAð	
à	ˆu�|‰|˜U 5§<¡<°Ð#4Ñ5Ð5Ñ	6ó	
ð
 Xð 
°(ó 
ð(Ð$:ó (óBó3ó*ôHr   r{  rL  c                 ód   — t        | t        «      rt        j                  | j                  «      S | S r   )rR   r    r%   rS   r!   )rL  s    r   Úmb_unwrap_functional_tensorr‹  2  s'   € Ü�&Ô*Ô+Ü×,Ñ,¨V¯[©[Ó9Ð9Ø€Mr   )-rW  rä   rÃ   Úabcr   r   r   Útypingr   r   r   r	   r%   Útorch.utils._pytreer  rS  r   Útorch._Cr
   rj  Ú
torch._opsr   Útorch._subclasses.meta_utilsr   Útorch.utils._python_dispatchr   r   r   r   Ú_loggingÚgetArtifactLoggerr‘   rG   r   r*   r    r¸   Úcontextmanagerr'  r6  r8  rP  r_  r{  r‹  r   r   r   ú<module>r–     sõ   ðã Û Û ß #Ý -ß 1Ó 1ã ß $Ð $Ý KÝ 6Ý 6÷ó ð —n‘n×6Ñ6°xÐARÓSÐ ò"ôy!�u—|‘|ô y!ôxqÐ,ô qðh	 ×ÑñJó ðJñ ?SÓ>Tñ Ð';ó ô>!˜3ô !ôH/4Ð1ô /4ôd!HÐ.ô !HôH+HÐ 4ô +Hð\¨¯©ô r   