Ë
    P/æj@Ø  ã                   ó†  — U 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m	Z	m
Z
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mZ d dlmZ d dlmZ  eed«      xr	  eed«      Zej>                  d	„ «       Z  G d
„ d«      Z!de!defd„Z"i Z#e
e$df   e%d<   ejL                  ejN                  ejP                  ejR                  ejT                  ejV                  gZ, G d„ de!e jZ                  «      Z.d„ Z/d„ Z0d„ Z1d„ Z2 G d„ d«      Z3 e3«       a4d7d„Z5d„ Z6d„ Z7d„ Z8d„ Z9d„ Z:d„ Z; e<«       a=ed   e%d <   d!„ Z>d"„ Z?d#„ Z@ G d$„ de!«      ZA G d%„ d&eA«      ZBd'„ ZCd(ejˆ                  d)eEfd*„ZF G d+„ d,«      ZGdeGfd-„ZH G d.„ d/ej’                  «      ZJd0„ ZKd1„ ZL G d2„ d3eJ«      ZM G d4„ d5ej’                  «      ZN eN«       ZOeNe%d6<   y)8é    N)ÚAnyÚCallableÚDictÚListÚSetÚTypeÚUnion)Ú_utils_internal)Ú_dispatch_is_included_in_aliasÚDispatchKey)Údispatch_functorch)ÚTorchDispatchModeÚgetdlopenflagsÚsetdlopenflagsc               #   óþ   K  — t         sd–— yt        j                  «       } t        j                  | t        j
                  z  «       	 d–— t        j                  | «       y# t        j                  | «       w xY w­w)z�
    Context manager to set the RTLD_GLOBAL dynamic linker flag while we open a
    shared library to load custom operators.
    N)Ú_SET_GLOBAL_FLAGSÚsysr   r   ÚctypesÚRTLD_GLOBAL)Ú	old_flagss    úM/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/_ops.pyÚdl_open_guardr      s\   è ø€ õ ÛØÜ×"Ñ"Ó$€IÜ×Ñ�y¤6×#5Ñ#5Ñ5Ô6ð&Ûä×Ñ˜9Õ%øŒ×Ñ˜9Õ%üs   ‚AA=Á	A# ÁA=Á#A:Á:A=c                   ó:   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚOperatorBasez·
    Base class for OpOverload (which represents C++ ATen operators) and HigherOrderOperator
    (which represents Python-only operators that are unrepresentable in TorchScript).
    c                 ó<   — i | _         i | _        i | _        i | _        y ©N)Ú_dispatch_cacheÚ
py_kernelsÚpython_key_tableÚfunctorch_table©Úselfs    r   Ú__init__zOperatorBase.__init__.   s1   € ð$ ð 	Ôð BDˆŒð ð 	Ôð  "ˆÕó    c                 ó   — t         ‚r   ©ÚNotImplementedError©r"   ÚargsÚkwargss      r   Ú__call__zOperatorBase.__call__Z   ó   € Ü!Ð!r$   c                 ó   — || j                   v S r   )r   )r"   Úks     r   Úhas_kernel_for_dispatch_keyz(OperatorBase.has_kernel_for_dispatch_key]   s   € Ø�D—O‘OÐ#Ð#r$   c                 óŒ   — | j                   D ]5  }t        j                  j                  |«      rŒ#|j	                  |«      sŒ5 y y)NTF)r   ÚtorchÚ_CÚ_dispatch_is_alias_keyÚhas)r"   Úksr.   s      r   Úhas_kernel_for_any_dispatch_keyz,OperatorBase.has_kernel_for_any_dispatch_key`   s9   € Ø—‘ò 	ˆAÜ—8‘8×2Ñ2°1Õ5¸"¿&¹&À½)Ùð	ð r$   c                 ó   ‡ ‡— ˆˆ fd„}|S )Nc                 óž  •— t        j                  ‰«      ret        ‰t        «      st        ‰t        j
                  «      r;‰‰j                  vsJ ‚| ‰j                  ‰<   ‰j                  j                  «        | S t        ‰t        j                  j                  j                  «      r!‰‰j                  vsJ ‚| ‰j                  ‰<   | S t        ‰t        «      sJ ‚‰t        j                  k7  sJ d«       ‚‰‰j                   v rt#        d‰› d‰j%                  «       › �«      ‚| ‰j                   ‰<   ‰j                  j                  «        | S )NzGPlease register a mode for the torch._C.DispatchKey.Python key instead.z%Trying to override a python impl for z on operator )ÚinspectÚisclassÚ
issubclassr   r1   ÚTensorr   r   ÚclearÚ
isinstancer2   Ú
_functorchÚTransformTyper    r   ÚPythonr   ÚRuntimeErrorÚname)Úfnr.   r"   s    €€r   Úinnerz#OperatorBase.py_impl.<locals>.innerg   s-  ø€ Ü�‰˜qÔ!Ü˜1Ô/Ô0´J¸qÄ%Ç,Á,Ô4Oà × 5Ñ 5Ñ5Ð5Ð5à+-�×%Ñ% aÑ(Ø×$Ñ$×*Ñ*Ô,Ø�	ä˜!œUŸX™X×0Ñ0×>Ñ>Ô?Ø × 4Ñ 4Ñ4Ð4Ð4Ø*,�×$Ñ$ QÑ'Ø�	ä˜a¤Ô-Ð-Ð-à”[×'Ñ'Ò'ðYàXóYØ'ð �D—O‘OÑ#Ü"Ø;¸A¸3¸mÈDÏIÉIËKÈ=ÐYóð ð "$ˆD�O‰O˜AÑØ× Ñ ×&Ñ&Ô(ØˆIr$   © )r"   r.   rE   s   `` r   Úpy_implzOperatorBase.py_implf   s   ù€ õ	ð8 ˆr$   c                 óˆ  ‡‡‡‡— ddl mŠmŠmŠ ˆˆfd„}ˆˆfd„}ˆˆfd„} | j	                  t
        j                  «      |«        | j	                  t        j                  j                  j                  «      |«        | j	                  t        j                  j                  j                  j                  «      |«       ‰S )Nr   )ÚCppFunctionalizeAPIÚFunctorchFunctionalizeAPIÚPythonFunctionalizeAPIc                  ó&   •—  ‰ ‰«       g| ¢­i |¤ŽS r   rF   )r)   r*   Ú_CppFunctionalizeAPIrD   s     €€r   Úfunctionalize_dk_fnz?OperatorBase.py_functionalize_impl.<locals>.functionalize_dk_fn™   s   ø€ ÙÑ*Ó,Ð>¨tÒ>°vÑ>Ð>r$   c                 ó(   •—  ‰ ‰| «      g|¢­i |¤ŽS r   rF   )Úmoder)   r*   Ú_PythonFunctionalizeAPIrD   s      €€r   Úfunctionalize_dispatch_mode_fnzJOperatorBase.py_functionalize_impl.<locals>.functionalize_dispatch_mode_fnœ   s   ø€ ÙÑ-¨dÓ3ÐE°dÒE¸fÑEÐEr$   c                 ó(   •—  ‰ ‰| «      g|¢­i |¤ŽS r   rF   )Úinterpreterr)   r*   Ú_FunctorchFunctionalizeAPIrD   s      €€r   Úfunctionalize_functorch_fnzFOperatorBase.py_functionalize_impl.<locals>.functionalize_functorch_fnŸ   s   ø€ ÙÑ0°Ó=ÐOÀÒOÈÑOÐOr$   )Ú#torch._subclasses.functional_tensorrI   rJ   rK   rG   r   ÚFunctionalizer1   Ú_subclassesÚfunctional_tensorÚFunctionalTensorModer2   r?   r@   )r"   rD   rN   rR   rV   rM   rU   rQ   s    `   @@@r   Úpy_functionalize_implz"OperatorBase.py_functionalize_impl�   s˜   û€ ÷	
ñ 	
õ	?õ	Fõ	Pð 	0ˆ�‰”[×.Ñ.Ó/Ð0CÔDØNˆ�‰”U×&Ñ&×8Ñ8×MÑMÓNØ*ô	
ð 	Fˆ�‰”U—X‘X×(Ñ(×6Ñ6×DÑDÓEØ&ô	
ð ˆ	r$   c                 ó   — t         ‚r   r&   r!   s    r   rC   zOperatorBase.name¬   r,   r$   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r#   r+   r/   r6   rG   r\   rC   rF   r$   r   r   r   (   s,   „ ñò
*"òX"ò$òòòTó8"r$   r   Úopr.   c                 óŒ  — | j                  |«      r|S t        j                  }|t        j                  k(  st	        ||«      r| j                  |«      r|S t        j
                  }|t        j                  k(  st	        ||«      r| j                  |«      r|S | j                  t        j                  j                  |«      «      xs | j                  t        j
                  «      }t        j                  }|t        j                  k7  r!t	        ||«      r| j                  |«      r|s|S t        j                  }|t        j                  k(  st	        ||«      r\| j                  |«      rK|t        j                  k(  r4| j                  t        j                  j                  «      rt        d«      ‚|s|S t        j                  }t	        ||«      r| j                  |«      r|S t        j                   }t	        ||«      r| j                  |«      r|S t        j                  j#                  |«      r|S t%        d| › d|› �«      ‚)Nzambiguous autogradother kernelzcould not find kernel for ú at dispatch key )r/   r   Ú&CompositeExplicitAutogradNonFunctionalÚ	UndefinedÚis_included_in_aliasÚCompositeExplicitAutogradr6   r1   r2   Ú*_dispatch_get_backend_keyset_from_autogradÚ%CompositeImplicitAutogradNestedTensorÚCompositeImplicitAutogradÚAutogradOtherÚ _dispatch_autogradother_backendsrB   ÚAutogradÚFuncTorchBatchedDecompositionÚ_dispatch_has_backend_fallbackr'   )rb   r.   ÚcandÚhas_backend_kernels       r   Úresolve_keyrs   ±   sì  € à	×%Ñ% aÔ(Øˆä×=Ñ=€Dà	Œ[×"Ñ"Ò"Ô&:¸1¸dÔ&CØ
×
(Ñ
(¨Ô
.Øˆä×0Ñ0€Dà	Œ[×"Ñ"Ò"Ô&:¸1¸dÔ&CØ
×
(Ñ
(¨Ô
.ØˆØ×;Ñ;Ü�‰×;Ñ;¸AÓ>óò Oà	×	'Ñ	'¬×(MÑ(MÓ	Nð ô ×<Ñ<€Dà	
Œk×#Ñ#Ò	#Ô(<¸QÀÔ(EØ×*Ñ*¨4Ô0Ù"àˆÜ×0Ñ0€Dà	Œ[×"Ñ"Ò"Ô&:¸1¸dÔ&CØ
×
(Ñ
(¨Ô
.Ø”×)Ñ)Ò)¨b×.PÑ.PÜ�H‰H×5Ñ5ô/
ô Ð?Ó@Ð@Ù#ØˆKä×Ñ€DÜ˜A˜tÔ$¨×)GÑ)GÈÔ)MØˆä×4Ñ4€DÜ˜A˜tÔ$¨×)GÑ)GÈÔ)MØˆä‡x�x×.Ñ.¨qÔ1ð ˆÜ
Ð :¸2¸$Ð>OÐPQÈsÐSÓ
TÐTr$   ÚHigherOrderOperatorÚ_higher_order_opsc                   ót   ‡ — e Zd Zˆ fd„Zˆ fd„Zed„ «       Zd„ Zd„ Ze	j                  d„ «       Zd„ Zd„ Zˆ xZS )	rt   c                 ó"  •— t         ‰| �  «        t        | «      t        u rt	        d«      ‚|| _        || _        | t        |<   d| _        d| _	        t        j                  j                  «       | _        t        D ]  }| j                  |«       Œ y )NzODirect instantiation of HigherOrderOperator is not allowed. Please subclass it.Úhigher_orderútorch.ops.higher_order)Úsuperr#   Útypert   rB   Ú_namer^   ru   Ú_nsr_   r1   r2   Ú_dispatch_keyset_fullÚnon_fallthrough_keysÚ2_HIGHER_ORDER_OP_DEFAULT_FALLTHROUGH_DISPATCH_KEYSÚfallthrough)r"   rC   Údispatch_keyÚ	__class__s      €r   r#   zHigherOrderOperator.__init__ø   sˆ   ø€ Ü‰ÑÔÜ�‹:Ô,Ñ,ÜØaóð ð ˆŒ
ð ˆŒØ"&Ô˜$ÑØ!ˆŒØ2ˆŒä$)§H¡H×$BÑ$BÓ$DˆÔ!äNò 	+ˆLØ×Ñ˜\Õ*ñ	+r$   c                 ó¸   •— t        |t        «      r;| j                  j                  |«      s | j                  j	                  |«      | _        t
        ‰| �  |«      S r   )r>   r   r   r4   Úaddrz   rG   ©r"   r.   rƒ   s     €r   rG   zHigherOrderOperator.py_impl  sH   ø€ Ü�aœÔ%¨d×.GÑ.G×.KÑ.KÈAÔ.NØ(,×(AÑ(A×(EÑ(EÀaÓ(HˆDÔ%Ü‰w‰˜qÓ!Ð!r$   c                 ó   — | j                   S r   )r}   r!   s    r   Ú	namespacezHigherOrderOperator.namespace  ó   € à�x‰xˆr$   c                 óD   — | j                   j                  |«      | _         y r   )r   Úremove)r"   r‚   s     r   r�   zHigherOrderOperator.fallthrough  s   € Ø$(×$=Ñ$=×$DÑ$DÀ\Ó$RˆÕ!r$   c                ó\  ‡‡— ddl m} || j                  v r)| j                  |   }t        |t        «      rJ ‚ ||i |¤ŽS |t        j
                  k(  rt        | ||«      S |t        j                  k(  �r®g Šd„ Šˆˆfd„}g |¢|j                  «       ¢­D ]0  } ||«       t        |t        t        f«      sŒ"|D ]
  } ||«       Œ Œ2 t        ‰«      }	t        d„ |	D «       «      }
ddl m}  |«       }|�rt        |«      | j                  v r5| j                  t        |«         } |«       5 } ||g|¢­i |¤Ž}d d d «       nt        d| j                  › d|› d	�«      ‚t         ur|S |	D ]ƒ  }t        |«      }|j"                  t$        j&                  j(                  k(  rŒ6|| j                  v r| j                  |   } ||i |¤Ž}nt        d| j                  › d
|› d	�«      ‚|t         usŒ�|c S  t+        d| j                  › d|› d|	D �cg c]  }t        |«      ‘Œ c}› �«      ‚t$        j&                  j-                  |«      }|t        j.                  k(  r«ddl m} t1        «       dkD  r˜t$        j&                  j3                  t        j                  «      skt5        «       }|€J d«       ‚t        |«      | j                  v sJ d|› d�«       ‚| j                  t        |«         } ||«      5 } ||g|¢­i |¤Žcd d d «       S t7        | |«      }|| j8                  vrt        d| j                  › d|› d|› d�«      ‚|t        j.                  k7  r| j8                  |   | j                  |<   | j8                  |   }t        |t        «      rJ ‚ ||i |¤ŽS # 1 sw Y   �Œ?xY wc c}w # 1 sw Y   Œ¬xY w)Nr   ©Ú_get_current_dispatch_modec                 ó^   — t         j                  j                  | «      j                  d«      S )NrA   )r1   r2   Ú_dispatch_keysr4   )Útensors    r   Úhas_python_keyz4HigherOrderOperator.dispatch.<locals>.has_python_key2  s"   € Ü—x‘x×.Ñ.¨vÓ6×:Ñ:¸8ÓDÐDr$   c                 óp   •— t        | t        j                  «      r ‰| «      r‰j                  | «       y y y r   )r>   r1   r<   Úappend)Úargr’   Úoverloaded_args_lists    €€r   Úcheck_overloadedz6HigherOrderOperator.dispatch.<locals>.check_overloaded5  s/   ø€ Ü˜c¤5§<¡<Ô0±^ÀCÔ5HØ(×/Ñ/°Õ4ð 6IÐ0r$   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr   )r{   ©Ú.0r•   s     r   ú	<genexpr>z/HigherOrderOperator.dispatch.<locals>.<genexpr>@  s   è ø€ Ò$J°3¤T¨#§YÑ$Jùó   ‚)Ú_pop_mode_temporarilyz%There was no rule registered for HOP z
 and mode z. We recommend filing an issue.z and subclass zMultiple dispatch failed for zl. There was no registered that did not return NotImplemented. Use HOP.py_impl to register some. Tried mode: z) and subclasses: zRIllegal invocation of dispatch on torch._C.DispatchKey.PreDispatch without a mode.zCurrent active mode z not registeredz.could not find kernel for HigherOrderOperator rd   z (resolved from ú))Útorch.utils._python_dispatchrŽ   r   r>   r   ÚFuncTorchDynamicLayerFrontModer   rA   ÚvaluesÚlistÚtupler�   r{   r   r'   r|   ÚNotImplementedÚ__torch_dispatch__r1   r2   Ú_disabled_torch_dispatch_implÚ	TypeErrorÚ_to_functionality_keyÚPreDispatchÚ&_len_torch_dispatch_stack_pre_dispatchÚ&_dispatch_tls_is_dispatch_key_excludedÚ'_get_current_dispatch_mode_pre_dispatchrs   r   )r"   r‚   r)   r*   rŽ   Úkernelr—   r•   ÚaÚoverloaded_argsÚoverloaded_typesr�   Ú	curr_modeÚhandlerrP   ÚresultÚsubclass_typeÚfunctionality_keyÚ	final_keyr’   r–   s                      @@r   ÚdispatchzHigherOrderOperator.dispatch!  s  ù€ ÝKà˜4×/Ñ/Ñ/Ø×)Ñ)¨,Ñ7ˆFÜ! &¬+Ô6Ð6Ð6Ù˜4Ð* 6Ñ*Ð*àœ;×EÑEÒEÜ% d¨D°&Ó9Ð9àœ;×-Ñ-Ó-ð $&Ð òEõ5ð 1˜Ð0 §¡£Ñ0ò ,�Ù  Ô%Ü˜c¤D¬% =Õ1Ø ò ,˜Ù(¨Õ+ñ,ð,ô $Ð$8Ó9ˆOÜ$Ñ$J¸/Ô$JÓJÐõ Ká2Ó4ˆIØÐ$Ü˜	“? d×&;Ñ&;Ñ;Ø"×3Ñ3´D¸³OÑD�GÙ.Ó0ð @°Dñ ")¨Ð!?°Ò!?¸Ñ!?˜÷@ð @ô
 .Ø?ÀÇ
Á
¸|È:ÐV_ÐU`ð a8ð 9óð ð ¤Ñ/Ø!�Mð 'ò "�Ü $ S£	�à!×4Ñ4Ü—x‘x×=Ñ=ò>ð Ø  D×$9Ñ$9Ñ9Ø"×3Ñ3°MÑB�Gñ % dÐ5¨fÑ5‘Fä-Ø?ÀÇ
Á
¸|È>ÐZgÐYhð i8ð 9óð ð ¤Ò/Ø!’Mð%"ô* Ø/°·
±
¨|ð <à(˜kÐ);Ø%4Ö5 ”D˜•GÒ5Ð6ð8óð ô "ŸH™H×:Ñ:¸<ÓHÐØ¤× 7Ñ 7Ò7ÝJô
 7Ó8¸1Ò<Ü—h‘h×EÑEÜ×"Ñ"ôô DÓE�	àÐ)ðhàgóhØ)ô ˜“O t×'<Ñ'<Ñ<ðEà)¨)¨°OÐDóEØ<à×/Ñ/´°Y³Ñ@�Ù*Ð+<Ó=ð :ÀÙ" 4Ð9¨$Ò9°&Ñ9÷:ñ :ô    lÓ3ˆ	ð ˜DŸO™OÑ+Ü%Ø@ÀÇÁÀð M#Ø#, +Ð-=¸l¸^È1ðNóð ð œ;×2Ñ2Ò2Ø15·±ÀÑ1KˆD× Ñ  Ñ.Ø—‘ Ñ+ˆô ˜f¤kÔ2Ð2Ð2Ù�tÐ&˜vÑ&Ð&÷g@ñ @üòL 6÷,:ð :ús   Ä)NÈNË)N"ÎNÎ"N+c                ó:   ‡ ‡‡— ddl m} |ˆˆˆ fd„«       } |«       S )Nr   )Údisablec                  ó  •— t        ‰‰«      } t        j                  j                  | «      r$t        j                  j                  ‰| g‰¢­i ‰¤ŽS t        ‰‰‰j                  «      } ‰j                  |j                  «       g‰¢­i ‰¤ŽS r   )	Ú_to_flat_tupler1   Ú	overridesÚhas_torch_functionÚhandle_torch_functionÚ_compute_keysetr   r·   ÚhighestPriorityTypeId)Ú	flat_argsÚdispatch_key_setr)   r*   r"   s     €€€r   Úwrapperz-HigherOrderOperator.__call__.<locals>.wrapper¤  s“   ø€ ä& t¨VÓ4ˆIÜ�‰×1Ñ1°)Ô<Ü—‘×<Ñ<Ø˜)ðØ&*òØ.4ñð ô  /¨t°V¸T×=VÑ=VÓWÐØ �4—=‘=Ø ×6Ñ6Ó8ðØ;?òØCIñð r$   )Útorch._dynamor¹   )r"   r)   r*   r¹   rÃ   s   ```  r   r+   zHigherOrderOperator.__call__ž  s$   ú€ õ 	*à	õ
	ó 
ð
	ñ ‹yÐr$   c                 ó$   — | j                  «       › S r   )rC   r!   s    r   Ú__str__zHigherOrderOperator.__str__³  s   € Ø—)‘)“+�Ðr$   c                 ó   — | j                   S r   ©r|   r!   s    r   rC   zHigherOrderOperator.name¶  ó   € Ø�z‰zÐr$   )r^   r_   r`   r#   rG   Úpropertyrˆ   r�   r·   ÚabcÚabstractmethodr+   rÆ   rC   Ú__classcell__©rƒ   s   @r   rt   rt   ò   sR   ø„ ô+ô6"ð
 ñó ðòSò
{'ðz 	×Ññó ðò( ör$   c                 ó,   — t        j                  | i |¤ŽS r   )ÚpytreeÚarg_tree_leaves©r)   r*   s     r   r»   r»   º  s   € Ü×!Ñ! 4Ð2¨6Ñ2Ð2r$   c                 ó2   — t        | |«      }t        ||«      S r   )Ú_get_tensorsÚkey_extractor)r)   r*   r   Útensorss       r   r¿   r¿   ¾  s   € Ü˜4 Ó(€GÜ˜Ð"6Ó7Ð7r$   c                 óŽ   — t        | |«      }|D �cg c]  }t        |t        j                  «      sŒ|‘Œ! }}t	        |«      S c c}w r   )r»   r>   r1   r<   r£   )r)   r*   Úflat_allÚtÚtensor_argss        r   rÔ   rÔ   Ã  s?   € Ü˜d FÓ+€HØ&ÖF˜¬*°Q¼¿¹Õ*E’1ÐF€KÐFÜ�ÓÐùò Gs
   ‘A±Ac                 óà   — t         j                  j                  «       }| D ]$  }|t         j                  j                  |«      z  }Œ& |t         j                  j	                  «       z
  }||z  }|S r   )r1   r2   Ú_dispatch_tls_local_include_setr�   Ú_dispatch_tls_local_exclude_set)rÖ   Úkey_maskÚkey_setr‘   s       r   rÕ   rÕ   Ë  sb   € Ü�h‰h×6Ñ6Ó8€GØò <ˆØœEŸH™H×3Ñ3°FÓ;Ñ;‰ð<àœŸ™×@Ñ@ÓBÑB€GØ˜Ñ €GØ€Nr$   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)Ú_ModeStackStateForPreDispatchc                 ó$   — d d g| _         d | _        y r   )Ú*_ModeStackStateForPreDispatch__infra_modesÚ_schema_check_moder!   s    r   r#   z&_ModeStackStateForPreDispatch.__init__â  s   € Ø" D˜\ˆÔØ"&ˆÕr$   c                 óV   — |t        | j                  «      k  sJ ‚|| j                  |<   y r   ©Úlenrã   )r"   ÚindexrP   s      r   Úsetz!_ModeStackStateForPreDispatch.setæ  s+   € Ø”s˜4×-Ñ-Ó.Ò.Ð.Ð.Ø$(ˆ×Ñ˜5Ò!r$   c                 óT   — |t        | j                  «      k  sJ ‚| j                  |   S r   ræ   )r"   rè   s     r   Úgetz!_ModeStackStateForPreDispatch.getê  s,   € Ø”s˜4×-Ñ-Ó.Ò.Ð.Ð.Ø×!Ñ! %Ñ(Ð(r$   c                 óˆ   — t        | j                  D �cg c]  }|€Œ|‘Œ	 c}«      t        | j                  d u«      z   S c c}w r   )rç   rã   Úinträ   )r"   Úis     r   Úcountz#_ModeStackStateForPreDispatch.countî  sB   € Ü˜t×1Ñ1ÖC˜!°Q±]’AÒCÓDÄsØ×#Ñ#¨4Ð/óH
ñ 
ð 	
ùÒCs   ”?œ?N)r^   r_   r`   r#   ré   rë   rï   rF   r$   r   rá   rá   á  s   „ ò'ò)ò)ó
r$   rá   c                 óZ  ‡ ‡— t        «       Š‰ �L‰ t        j                  j                  j                  t        j                  j                  j
                  fv sJ ‚|r‰ �J ‚ˆˆ fd„} |«       }t        «       }|dk(  r.t        j                  j                  t        j                  d«       |S )Nc                  óž  •— ‰t         j                  j                  j                  k(  r-‰j	                  d«      } t        «       j                  dd «       | S ‰t         j                  j                  j                  k(  r-‰j	                  d«      } t        «       j                  dd «       | S t        «       j                  } d t        «       _        | S ©Nr   é   )	r1   r2   Ú_TorchDispatchModeKeyÚPROXYrë   Ú!mode_stack_state_for_pre_dispatchré   Ú
FUNCTIONALrä   )Úcurrent_modeÚcurrent_mode_stack_pre_dispatchÚmode_keys    €€r   Ú_unset_modez,unset_mode_pre_dispatch.<locals>._unset_mode   s¥   ø€ Ø”u—x‘x×5Ñ5×;Ñ;Ò;Ø:×>Ñ>¸qÓAˆLÜ-Ó/×3Ñ3°A°tÔ<ØÐØœŸ™×7Ñ7×BÑBÒBØ:×>Ñ>¸qÓAˆLÜ-Ó/×3Ñ3°A°tÔ<ØÐä<Ó>×QÑQˆLØEIÔ-Ó/ÔBØÐr$   r   F)
rö   r1   r2   rô   rõ   r÷   rª   Ú'_dispatch_tls_set_dispatch_key_includedr   r©   )rú   Úschema_checkrû   rø   Únew_pre_dispatch_lenrù   s   `    @r   Úunset_mode_pre_dispatchrÿ   ÷  s¡   ù€ Ü&GÓ&IÐ#ØÐ˜xÜ�‰×&Ñ&×,Ñ,Ü�‰×&Ñ&×1Ñ1ð,ñ  ð ð ñ ØÐÐÐõ ñ “=€LäAÓCÐð
 ˜qÒ Ü�‰×8Ñ8¼×9PÑ9PÐRWÔXàÐr$   c                 ó<  — ddl m} ddlm} ddlm} t        | |||f«      sJ ‚t        «       }t        | |«      r4t        «       j                  }|dkD  rt        d«      ‚| t        «       _	        n{t        | |«      r8t        «       j                  d«      }|�J ‚t        «       j                  d| «       n7t        «       j                  d«      }|�J ‚t        «       j                  d| «       |dk(  r/t        j                  j                  t         j"                  d«       y y )Nr   )r[   )ÚSchemaCheckMode)ÚProxyTorchDispatchModezYSchemaCheckMode for pre-dispatch must be used exclusively, found other modes on the stackró   T)rW   r[   Ú#torch._subclasses.schema_check_moder  Ú"torch.fx.experimental.proxy_tensorr  r>   rª   rö   rä   ÚAssertionErrorrë   ré   r1   r2   rü   r   r©   )rP   r[   r  r  Úprevious_mode_stack_lenrø   s         r   Ú_set_mode_pre_dispatchr    s  € ÝHÝCÝIäØà Ø"Øð	
ôð ð ô EÓFÐÜ�$˜Ô(Ü8Ó:×MÑMˆØ" QÒ&Ü Økóð ð BFÔ)Ó+Õ>Ü	�DÐ.Ô	/Ü8Ó:×>Ñ>¸qÓAˆØÐ#Ð#Ð#Ü)Ó+×/Ñ/°°4Õ8ä8Ó:×>Ñ>¸qÓAˆØÐ#Ð#Ð#Ü)Ó+×/Ñ/°°4Ô8ð  !Ò#Ü�‰×8Ñ8¼×9PÑ9PÐRVÕWð $r$   c                  óv  — t        «       } t        «       }|dk(  rt        d«      ‚| j                  �t	        d d¬«      S | j                  d«      �-t	        t        j                  j                  j                  «      S | j                  d«      �-t	        t        j                  j                  j                  «      S y )Nr   zTrying to pop empty mode stackT)rý   ró   )rö   rª   r  rä   rÿ   rë   r1   r2   rô   r÷   rõ   )Ú
mode_stackÚpre_dispatch_lens     r   Ú_pop_mode_from_pre_dispatchr  B  s™   € Ü2Ó4€JÜ=Ó?Ðà˜1ÒÜÐ=Ó>Ð>à×$Ñ$Ð0Ü& t¸$Ô?Ð?Ø‡~�~�aÓÐ$Ü&¤u§x¡x×'EÑ'E×'PÑ'PÓQÐQØ‡~�~�aÓÐ$Ü&¤u§x¡x×'EÑ'E×'KÑ'KÓLÐLð %r$   c                  ó2   — t        «       j                  «       S r   )rö   rï   rF   r$   r   rª   rª   Q  s   € Ü,Ó.×4Ñ4Ó6Ð6r$   c                 óL  — | t         j                  j                  j                  t         j                  j                  j                  fv sJ ‚| t         j                  j                  j                  k(  rt        «       j                  d«      S t        «       j                  d«      S rò   )r1   r2   rô   rõ   r÷   rö   rë   )rú   s    r   Ú_get_dispatch_mode_pre_dispatchr  U  s�   € ØÜ�‰×&Ñ&×,Ñ,Ü�‰×&Ñ&×1Ñ1ðñ ð ð ð ”5—8‘8×1Ñ1×7Ñ7Ò7Ü0Ó2×6Ñ6°qÓ9Ð9ä0Ó2×6Ñ6°qÓ9Ð9r$   c                  ó`  — t        «       j                  �t        «       j                  S t        «       j                  «       } | dk(  rt        «       j                  d«      S | dk(  rKt        «       j                  d«      �t        «       j                  d«      S t        «       j                  d«      S y )Né   ró   r   )rö   rä   rï   rë   )Ú	stack_lens    r   r¬   r¬   `  sž   € Ü(Ó*×=Ñ=ÐIÜ0Ó2×EÑEÐEä5Ó7×=Ñ=Ó?ˆ	Ø˜Š>Ü4Ó6×:Ñ:¸1Ó=Ð=Ø˜Š>ô 5Ó6×:Ñ:¸1Ó=ÐIô 2Ó3×7Ñ7¸Ó:ðô 7Ó8×<Ñ<¸QÓ?ðð
 r$   c                  ó   — t         S r   )Ú"_mode_stack_state_for_pre_dispatchrF   r$   r   rö   rö   p  s   € ä-Ð-r$   Ú
OpOverloadÚ
cached_opsc                 ó.   — t         j                  | «       y r   )r  r…   )Úop_overloads    r   Úadd_cached_opr  x  s   € ä‡N�N�;Õr$   c                  ó,   — t         j                  «        y r   )r  r=   rF   r$   r   Úreset_cached_opsr  }  s   € ä×ÑÕr$   c                  ó   — t         S r   )r  rF   r$   r   Úget_cached_opsr  ‚  s   € äÐr$   c                   óæ   ‡ — e Zd Zˆ fd„Zed„ «       Zed„ «       Zed„ «       Zdd„Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zˆ fd„Zˆ fd„Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zed„ «       Zed„ «       Zˆ xZS )r  c                 ód  •— t         ‰| �  «        || _        || _        || _        || _        || _        |j                  dk(  rdn|j                  | _        | j                  j                  | _
        |j                  r"| xj                  d|j                  z   z  c_
        | j                  j                  j                  d«      d   › d| j                  › �| _        |j                  | _        |j                  |_        | j                  | _        i | _        d | _        | j                  t"        j$                  j&                  v | _        d }| j                  j*                  D ]B  }|j,                  €Œ|€|j,                  j.                  }Œ)|j,                  j.                  xs |}ŒD |d uxr | | _        y )NÚ Údefaultú.ú::ró   )rz   r#   Ú_opÚ_op_dkÚ_schemaÚ_overloadpacketÚ_tagsÚoverload_nameÚ_overloadnamerC   r|   Úsplitr^   r_   r`   Ú__annotations__Ú_lazy_handler1   ÚlibraryÚ_defsÚ_defined_in_pythonÚ	argumentsÚ
alias_infoÚis_writeÚis_view)	r"   Úoverloadpacketrb   Úop_dkÚschemaÚtagsr2  r®   rƒ   s	           €r   r#   zOpOverload.__init__Š  s  ø€ Ü‰ÑÔØˆŒØˆŒØˆŒØ-ˆÔØˆŒ
à×-Ñ-°Ò3‰I¸×9MÑ9Mð 	Ôð —\‘\×&Ñ&ˆŒ
Ø×ÒØ�JŠJ˜# × 4Ñ 4Ñ4Ñ4�JØŸ<™<×,Ñ,×2Ñ2°4Ó8¸Ñ;Ð<¸A¸d×>PÑ>PÐ=QÐRˆŒØ(×3Ñ3ˆŒØ&×1Ñ1ˆŒØ ŸJ™JˆÔØ!ˆÔð !ˆÔð #'×"3Ñ"3´u·}±}×7JÑ7JÐ"JˆÔð ˆØ—‘×'Ñ'ò 	=ˆAØ�|‰|Ð#ØØÐØŸ<™<×0Ñ0‘ð Ÿ<™<×0Ñ0Ò<°H‘ð	=ð   tÐ+Ò<°H°ˆ�r$   c                 óR   — | j                   j                  j                  d«      d   S ©Nr"  r   ©r%  rC   r*  r!   s    r   Ú
_namespacezOpOverload._namespace°  ó"   € à�|‰|× Ñ ×&Ñ& tÓ,¨QÑ/Ð/r$   c                 óR   — | j                   j                  j                  d«      d   S )Nr"  ró   r:  r!   s    r   Ú_opnamezOpOverload._opname´  r<  r$   c                 óÌ   — | j                   €Mt        j                  j                  | j                  j
                  | j                  j                  «      | _         | j                   S r   )r,  r1   r2   Ú_dispatch_find_schema_or_throwr%  rC   r(  r!   s    r   Ú_handlezOpOverload._handle¸  sL   € à×ÑÐ$Ü %§¡× GÑ GØ—‘×!Ñ! 4§<¡<×#=Ñ#=ó!ˆDÔð × Ñ Ð r$   c                 ó   — | S r   rF   ©r"   Úmemos     r   Ú__deepcopy__zOpOverload.__deepcopy__Á  ó   € Øˆr$   c                 ó„   —  dj                   g | j                  j                  j                  d«      ¢| j                  ‘­Ž S )Nz'<OpOverload(op='{}.{}', overload='{}')>r"  ©Úformatr%  rC   r*  r)  r!   s    r   Ú__repr__zOpOverload.__repr__Ä  sC   € Ø?Ð8×?Ñ?ð 
Ø�\‰\×Ñ×$Ñ$ TÓ*ð
Ø,0×,>Ñ,>ò
ð 	
r$   c                ó&   —  | j                   |i |¤ŽS r   ©r#  r(   s      r   r+   zOpOverload.__call__Ë  s   € Øˆt�x‰x˜Ð( Ñ(Ð(r$   c                óB   —  | j                   j                  |g|¢­i |¤ŽS r   )rA  Úredispatch_boxed)r"   Úkeysetr)   r*   s       r   Ú
redispatchzOpOverload.redispatchÐ  s#   € Ø,ˆt�|‰|×,Ñ,¨VÐE°dÒE¸fÑEÐEr$   c                 ó,   — t        | j                  «      S r   ©Úhashr#  r!   s    r   Ú__hash__zOpOverload.__hash__Ó  ó   € Ü�D—H‘H‹~Ðr$   c                 ó„   —  dj                   g | j                  j                  j                  d«      ¢| j                  ‘­Ž S )Nz{}.{}.{}r"  rH  r!   s    r   rÆ   zOpOverload.__str__×  s8   € Ø ˆz× Ñ ÐT $§,¡,×"3Ñ"3×"9Ñ"9¸$Ó"?ÐTÀ×ASÑASÒTÐTr$   c                 ó‚   •— t         ‰| �  |«      xs. t        j                  j	                  | j                  «       |«      S r   )rz   r/   r1   r2   Ú%_dispatch_has_kernel_for_dispatch_keyrC   r†   s     €r   r/   z&OpOverload.has_kernel_for_dispatch_keyÚ  s9   ø€ Ü‰wÑ2Øó
ò Lä�X‰X×;Ñ;¸D¿I¹I»KÈÓKð	Lr$   c                 ó‚   •— t         j                  j                  | j                  «       |«      xs t        ‰| �  |«      S r   )r1   r2   Ú)_dispatch_has_kernel_for_any_dispatch_keyrC   rz   r6   )r"   r5   rƒ   s     €r   r6   z*OpOverload.has_kernel_for_any_dispatch_keyß  s7   ø€ Ü�x‰x×AÑAØ�I‰I‹K˜ó
ò 9ä‰WÑ4°RÓ8ð	9r$   c                 óR   — | j                   j                  j                  d«      d   S r9  r:  r!   s    r   rˆ   zOpOverload.namespaceä  r<  r$   c                 óž   — t         j                  }|| j                  v xs. t        j                  j                  | j                  «       |«      S r   )r   rk   r   r1   r2   rX  rC   )r"   Údks     r   Ú_can_decomposezOpOverload._can_decomposeè  s?   € Ü×2Ñ2ˆØ�T—_‘_Ð$ò 
¬¯©×(VÑ(VØ�I‰I‹K˜ó)
ð 	
r$   c                 óü   — t         j                  }|| j                  v r | j                  |   |i |¤ŽS t        j                  j                  | j                  «       |«      r | j                  |g|¢­i |¤ŽS t        S r   )	r   rk   r   r1   r2   rX  rC   r$  r¤   )r"   r)   r*   r]  s       r   Ú	decomposezOpOverload.decomposeî  sq   € Ü×2Ñ2ˆØ�—‘Ñ ð
 '�4—?‘? 2Ñ&¨Ð7°Ñ7Ð7Ü�X‰X×;Ñ;¸D¿I¹I»KÈÔLØ�4—;‘;˜rÐ3 DÒ3¨FÑ3Ð3ä!Ð!r$   c                 ó<   — | j                   j                  |d «       y r   )r   Úpop)r"   Úkeys     r   Ú_uncache_dispatchzOpOverload._uncache_dispatch  s   € Ø×Ñ× Ñ   dÕ+r$   c                 ó`  ‡ ‡— ‰‰ j                   vsJ ‰ › d‰› �«       ‚‰t        j                  k(  rZt        ‰ t        «      s(‰ j
                  s‰‰ j                   ‰<   t        ‰ «       ‰S ˆˆ fd„}|‰ j                   ‰<   t        ‰ «       |S t        j                  j                  ‰«      }|t        j                  k(  rCt        «       }|dkD  r4t        j                  j                  t        j                  «      sˆ fd„}|S t        ‰ ‰«      }‰t        j                  k7  }‰t        j                  k(  rEdd lmc m} |j$                  r0|j'                  ‰ |«      }|r|‰ j                   ‰<   t        ‰ «       |S ‰ j(                  j+                  ||«      }|r|‰ j                   ‰<   t        ‰ «       |S )Nú c                  ó0  •— ddl m} t         |«       «      }|€J d«       ‚|‰j                  vr†t	        ‰t
        «      r`t        j                  j                  j                  «       5 }t        j                  j                  j                  |‰g| ¢­i |¤Žcd d d «       S  ‰j                  ‰g| ¢­i |¤ŽS t        j                  j                  j                  «       5 } ‰j                  |   |g| ¢­i |¤Žcd d d «       S # 1 sw Y   ŒTxY w# 1 sw Y   y xY w)Nr   r�   zMIllegal invocation of dispatch on torch._C.DispatchKey.Python without a mode.)rŸ   rŽ   r{   r   r>   ÚTorchBindOpOverloadr1   ÚutilsÚ_python_dispatchr�   Ú_libraryÚhandle_dispatch_moder$  )r)   r*   rŽ   r±   rP   rc  r"   s        €€r   r²   z)OpOverload._get_dispatch.<locals>.handler  s  ø€ ÝSô !Ñ!;Ó!=Ó>�	àÐ)ðcàbócØ)ð  D×$9Ñ$9Ñ9Ü! $Ô(;Ô<Ü"Ÿ[™[×9Ñ9×OÑOÓQð ÐUYÜ#(§>¡>×#7Ñ#7×#LÑ#LØ $ dð$Ø-1ò$Ø5;ñ$÷ñ ð
  +˜tŸ{™{¨3Ð@°Ò@¸Ñ@Ð@ä—[‘[×1Ñ1×GÑGÓIð SÈTØ;˜4×0Ñ0°Ñ;¸DÐRÀ4ÒRÈ6ÑR÷Sñ S÷ð ú÷Sð Sús   Á'.D ÃDÄ D	ÄDr   c                  óÆ   •— t         j                  d„ «       } |«       5 }t        j                  j                  j
                  |‰g| ¢­i |¤Žcd d d «       S # 1 sw Y   y xY w)Nc               3   ó`   K  — t        «       } 	 | –— t        | «       y # t        | «       w xY w­wr   )r  r  )Útop_modes    r   Ú(_temporarily_pop_modes_from_pre_dispatchz[OpOverload._get_dispatch.<locals>.handler.<locals>._temporarily_pop_modes_from_pre_dispatch8  s)   è ø€ ä#>Ó#@˜ð=Ø"*šNä2°8Õ<øÔ2°8Õ<üs   ‚.Ž ’.ž+«.)Ú
contextlibÚcontextmanagerr1   rk  ri  rl  )r)   r*   rp  r±   r"   s       €r   r²   z)OpOverload._get_dispatch.<locals>.handler7  sh   ø€ Ü×.Ñ.ñ=ó /ð=ñ BÓCð ÀyÜ$Ÿ~™~×3Ñ3×HÑHØ% tð Ø.2ò Ø6<ñ ÷÷ ò ús   Ÿ.AÁA )r   r   rA   r>   rh  r   r  r1   r2   r¨   r©   rª   r«   rs   rX   Útorch._dispatch.pythonÚ	_dispatchÚpythonÚCROSSREF_FUNCTIONALIZEÚmake_crossref_functionalizer   rë   )	r"   rc  r²   rµ   Úcurr_stack_lenr¶   Úcache_resultÚ
pydispatchÚrs	   ``       r   Ú_get_dispatchzOpOverload._get_dispatch  sŠ  ù€ à˜$×.Ñ.Ñ.Ð?°4°&¸¸#¸°Ó?Ð.à”+×$Ñ$Ò$Ü˜dÔ$7Ô8À×AVÒAVØ,/�×$Ñ$ SÑ)Ü˜dÔ#Ø�
õSð, )0ˆD× Ñ  Ñ%Ü˜$ÔØˆNä!ŸH™H×:Ñ:¸3Ó?ÐØ¤× 7Ñ 7Ò7ÜCÓEˆNð  Ò"ÜŸ™×GÑGÜ×&Ñ&ôô
ð& �ä  cÓ*ˆ	ð œk×5Ñ5Ñ5ˆð
 ”+×+Ñ+Ò+ß7Ð7à×0Ò0Ø$×@Ñ@ÀÀyÓQ�ÙØ07�D×(Ñ(¨Ñ-Ü! $Ô'Ø�à�O‰O×Ñ 	¨9Ó5ˆÙØ()ˆD× Ñ  Ñ%Ü˜$ÔØˆr$   c                 ó   — | j                   S r   rÈ   r!   s    r   rC   zOpOverload.named  rÉ   r$   c                 ó   — | j                   S r   )r&  r!   s    r   r4  zOpOverload.overloadpacketg  s   € à×#Ñ#Ð#r$   c                 ó   — | j                   S r   rL  r!   s    r   rb   zOpOverload.opk  r‰   r$   c                 ó   — | j                   S r   )r'  r!   s    r   r7  zOpOverload.tagso  s   € à�z‰zÐr$   r   )r^   r_   r`   r#   rÊ   r;  r>  rA  rE  rJ  r+   rP  rT  rÆ   r/   r6   rˆ   r^  r`  rd  r|  rC   r4  rb   r7  rÍ   rÎ   s   @r   r  r  ‰  sÛ   ø„ ô$=ðL ñ0ó ð0ð ñ0ó ð0ð ñ!ó ð!óò
ò)ò
FòòUôLô
9ð
 ñ0ó ð0ò
ò"ò*,ò[òzð ñ$ó ð$ð ñó ðð ñó ôr$   c                   óN   — e Zd Zdee   fd„Zej                  d„ «       Zd„ Z	d„ Z
y)rh  Úreturnc                 ó,  ‡ — t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  g}dt         fˆ fd„}|D �cg c]  } ||«      r|‘Œ c}S c c}w )Nrc  c                 ó.  •— t         j                  j                  ‰j                  «       | «      r.t         j                  j	                  ‰j                  «       | «      S | ‰j
                  vxs) ‰j
                  |    t         j                  j                  u S r   )r1   r2   rX  rC   Ú0_dispatch_kernel_for_dispatch_key_is_fallthroughr   r-  Úfallthrough_kernel)rc  r"   s    €r   Ú(_may_use_fallthrough_instead_of_fallbackzWTorchBindOpOverload._fallthrough_keys.<locals>._may_use_fallthrough_instead_of_fallbackˆ  ss   ø€ Ü�x‰x×=Ñ=¸d¿i¹i»kÈ3ÔOÜ—x‘x×PÑPØ—I‘I“K óð ð
 ˜4Ÿ?™?Ð*ò LØ—?‘? 3Ñ'¬5¯=©=×+KÑ+KÐKðr$   )r   rn   ÚAutogradCPUÚAutogradCUDAÚADInplaceOrViewÚBackendSelectÚPythonTLSSnapshotÚPythonDispatcher)r"   Ú_DEFAULT_FALLTHROUGH_KEYSr‡  rc  s   `   r   Ú_fallthrough_keysz%TorchBindOpOverload._fallthrough_keys{  s‚   ø€ ô × Ñ Ü×#Ñ#Ü×$Ñ$Ü×'Ñ'Ü×%Ñ%Ü×)Ñ)Ü×(Ñ(ð%
Ð!ð		¼+õ 		ð 1ö
àÙ7¸Ô<ò ò
ð 	
ùò 
s   Á=Bc              #   ó‚   K  — ddl m}m}m} 	 | |vr || |j                  «       d –— | |v r|| = y y # | |v r|| = w w xY w­w)Nr   )Ú_EffectTypeÚ_register_effectful_opÚSIDE_EFFECTS)Útorch._higher_order_ops.effectsr‘  r’  r“  ÚORDERED)r"   r‘  r’  r“  s       r   Ú%_register_as_effectful_op_temporarilyz9TorchBindOpOverload._register_as_effectful_op_temporarily™  sZ   è ø€ ÷	
ñ 	
ð	'Ø˜<Ñ'Ù& t¨[×-@Ñ-@ÔAÛà�|Ñ#Ø  Ñ&ð $øˆt�|Ñ#Ø  Ñ&ð $üs   ‚?Ž2 ©	?²
<¼?c                óÌ   — t        ||«      r;| j                  «       5  | j                  ||| j                  «       «      cd d d «       S  | j                  |i |¤ŽS # 1 sw Y   ŒxY wr   )Ú_must_dispatch_in_pythonr–  Ú_dispatch_in_pythonr�  r#  r(   s      r   r+   zTorchBindOpOverload.__call__«  sj   € Ü# D¨&Ô1ð ×;Ñ;Ó=ñ XØ×/Ñ/°°f¸d×>TÑ>TÓ>VÓW÷Xñ Xàˆt�x‰x˜Ð( Ñ(Ð(÷Xð Xús   �!AÁA#c           	      ó  — t         j                  j                  «       }|D ]  }|j                  |«      }Œ t	        |||«      }|j                  «       }|| j                  vr| j                  |«      n| j                  |   }t        |t        «      rZt         j                  j                  | j                  «       |«      r| j                  ||||gz   «      S t        d| › d|› d|› d�«      ‚t        |t        «      sJ ‚ ||i |¤ŽS )NzTorchbind op z4 received a FakeScriptObject input when dispatching z×. but no python implementation is found. Please file an issue on this when you encounter this error. This error can happen when you export or compile the model. It can still happpen even if a C++ implementation for zz.  has been registered. That's because FakeScriptObject purely lives in python and cannot work  with a C++ implementation.)r1   r2   r~   r‹   r¿   rÀ   r   r|  r>   r   r…  rC   r™  rB   r   )	r"   r)   r*   Úfallthrough_keysr   rc  rÂ   r‚   r²   s	            r   r™  z'TorchBindOpOverload._dispatch_in_python»  s5  € Ü$Ÿx™x×=Ñ=Ó?ÐØ#ò 	DˆCØ#7×#>Ñ#>¸sÓ#CÑ ð	Dô +¨4°Ð9MÓNÐØ'×=Ñ=Ó?ˆð  4×#7Ñ#7Ñ7ð ×Ñ˜|Ô,à×%Ñ% lÑ3ð 	ô �gœ{Ô+ô �x‰x×HÑHØ—	‘	“˜\ôð ×/Ñ/Ø˜&Ð"2°l°^Ñ"Cóð ô Ø ˜vÐ%YÐZaÐYbð cJð KWÈð X.ð	/óð ô ˜'¤8Ô,Ð,Ð,Ù˜Ð' Ñ'Ð'r$   N)r^   r_   r`   r   r   r�  rq  rr  r–  r+   r™  rF   r$   r   rh  rh  z  s7   „ ð
 4¨Ñ#4ó 
ð< ×Ññ'ó ð'ò")ó #(r$   rh  c                 ó4   — t        j                  d„ | |f«      S )Nc                 ó^   — t        | t        j                  j                  j                  «      S r   )r>   r1   rk  Úfake_class_registryÚFakeScriptObject)Úobjs    r   ú<lambda>z*_must_dispatch_in_python.<locals>.<lambda>ã  s    € ”JØ”—‘×3Ñ3×DÑDó
€ r$   )rÐ   Útree_anyrÒ   s     r   r˜  r˜  á  s!   € Ü�?‰?ñ	
ð 
ˆvˆó	ð r$   r6  r‚  c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ód   K  — | ](  }t        |j                  t        j                  «      –— Œ* y ­wr   )r>   r{   r1   Ú	ClassTyper™   s     r   r›   z)_has_script_object_arg.<locals>.<genexpr>ë  s   è ø€ ÒQ¸Œz˜#Ÿ(™(¤E§O¡O×4ÑQùs   ‚.0)Úanyr0  )r6  s    r   Ú_has_script_object_argr§  ê  s   € ÜÑQÀ×@PÑ@PÔQÓQÐQr$   c                   ód   — e Zd Zd„ Zdd„Zd„ Zd„ Zd„ Zed„ «       Z	ed„ «       Z
d	„ Zd
„ Zd„ Zd„ Zy)ÚOpOverloadPacketc                 ó¨   — || _         || _        || _        || _        g | _        t        d„ | j                  j                  «       D «       «      | _        y )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr   )r§  )rš   r6  s     r   r›   z,OpOverloadPacket.__init__.<locals>.<genexpr>ù  s   è ø€ ò .
Ø/5Ô" 6×*ñ.
ùrœ   )	Ú_qualified_op_namer^   r#  Ú_overload_namesÚ_dirr¦  Ú_schemasr¡   Ú_has_torchbind_op_overload)r"   Úqualified_op_nameÚop_namerb   Úoverload_namess        r   r#   zOpOverloadPacket.__init__ñ  sP   € ð #4ˆÔØˆŒØˆŒØ-ˆÔØˆŒ	Ü*-ñ .
Ø9=¿¹×9MÑ9MÓ9Oô.
ó +
ˆÕ'r$   Nc                 ó   — | S r   rF   rC  s     r   rE  zOpOverloadPacket.__deepcopy__þ  rF  r$   c                 óR   —  dj                   | j                  j                  d«      Ž S )Nz<OpOverloadPacket(op='{}.{}')>r"  ©rI  r¬  r*  r!   s    r   rJ  zOpOverloadPacket.__repr__  s,   € Ø6Ð/×6Ñ6Ø×$Ñ$×*Ñ*¨4Ó0ð
ð 	
r$   c                 ó,   — t        | j                  «      S r   rR  r!   s    r   rT  zOpOverloadPacket.__hash__  rU  r$   c                 óR   —  dj                   | j                  j                  d«      Ž S )Nz{}.{}r"  r¶  r!   s    r   rÆ   zOpOverloadPacket.__str__	  s$   € Øˆw�~‰~˜t×6Ñ6×<Ñ<¸TÓBÐCÐCr$   c                 ó   — | j                   S r   rL  r!   s    r   rb   zOpOverloadPacket.op  r‰   r$   c                 ó’   — | j                   D �ci c]-  }|t        j                  j                  | j                  |«      “Œ/ c}S c c}w r   )r­  r1   r2   Ú_get_schemar¬  )r"   r(  s     r   r¯  zOpOverloadPacket._schemas  sF   € ð "&×!5Ñ!5ö
àð œ5Ÿ8™8×/Ñ/°×0GÑ0GÈÓWÑWò
ð 	
ùò 
s   �2Ac           
      óØ  — |dk(  ry	 |j                  d«      rt        | j                  |«      S 	 	 |dk(  rd	n|}t
        j                  j                  | j                  |«      }|€t        d
t	        | «      › d|› d�«      ‚|\  }}}t
        j                  j                  | j                  |«      }t        |«      st        | ||||«      nt        | ||||«      }t        | ||«       | j                  j                  |«       |S # t        $ r3 t        dt	        | «      › dt	        | j                  «      › d|› d�«      d ‚w xY w# t         $ r t        d
t	        | «      › d|› d�«      d ‚w xY w)NÚ__file__ú	torch.opsÚ__ú'zH' can't have an overload name beginning with '__' and the underlying op z has no attribute z either.r   r  zThe underlying op of 'z' has no overload name ')Ú
startswithÚgetattrr#  ÚAttributeErrorÚstrr1   r2   Ú_get_operation_overloadr¬  r»  r§  r  rh  Úsetattrr®  r”   rB   )	r"   rc  Úuse_keyÚ
op_dk_tagsÚop_Úop_dk_r7  r6  Úoverloads	            r   Ú__getattr__zOpOverloadPacket.__getattr__  sŸ  € à�*ÒØð	Ø�~‰~˜dÔ#Ü˜tŸx™x¨Ó-Ð-ð $ð	à 9Ò,‘b°#ˆGäŸ™×9Ñ9Ø×'Ñ'¨óˆJð Ð!Ü$Ø,¬S°«Y¨KÐ7OÐPSÈuÐTUÐVóð ð !+ÑˆC�˜Ü—X‘X×)Ñ)¨$×*AÑ*AÀ7ÓKˆFô .¨fÔ5ô ˜4  f¨f°dÔ;ä(¨¨s°F¸FÀDÓIð ô �D˜#˜xÔ(Ø�I‰I×Ñ˜SÔ!ØˆOøôA ò 	ô
 !Ø”C˜“I�;ð !Ü!$ T§X¡X£ Ð/AÀ#ÀÀhðPóð ðð	ûôB ò 	Ü Ø(¬¨T«¨Ð3KÈCÈ5ÐPQÐRóàðð	ús   ˆ&D ±CE Ä<E Å&E)c                 ó,   — t        | j                  «      S r   ©Úiterr®  r!   s    r   Ú__iter__zOpOverloadPacket.__iter__L  ó   € Ü�D—I‘I‹Ðr$   c                óx   — | j                   rt        ||«      rt        | ||«      S  | j                  |i |xs i ¤ŽS r   )r°  r˜  Ú!_call_overload_packet_from_pythonr#  r(   s      r   r+   zOpOverloadPacket.__call__Q  s@   € ð ×*Ò*Ô/GÈÈfÔ/UÜ4°T¸4ÀÓHÐHØˆt�x‰x˜Ð0 &¢,¨BÑ0Ð0r$   c                 óH   — | j                   D �cg c]  }|r|nd‘Œ
 c}S c c}w )Nr   )r­  )r"   Úns     r   Ú	overloadszOpOverloadPacket.overloads_  s#   € Ø/3×/CÑ/CÖD¨!‘Q‘˜IÑ%ÒDÐDùÒDs   �r   )r^   r_   r`   r#   rE  rJ  rT  rÆ   rÊ   rb   r¯  rÌ  rÐ  r+   rÖ  rF   r$   r   r©  r©  ð  sZ   „ ò

óò
ò
òDð ñó ðð ñ
ó ð
ò3òjò
1óEr$   r©  c                 óÎ  — t        j                  j                  | g|¢­i |¤Ž\  }}|r|S i }d }| j                  «       D ]?  }t	        | |«      }	 t        j                  j
                  |j                  g|¢­i |¤Ž}	|} n |r ||i |¤ŽS d| › d�}t        |j                  «       «      D ]  \  }\  }}|d|› d|› d�z  }Œ t        |«      ‚# t        $ r}
|
||<   Y d }
~
Œ d }
~
ww xY w)Nz'Fail to match any TorchBindOverload of z with following exceptions:
zOverload name z:
 ú
)
r1   r2   Ú(_maybe_call_torch_function_for_op_packetrÖ  rÂ  Ú&_check_schema_allow_fake_script_objectr%  rB   Ú	enumerateÚitems)rb   r)   r*   Útorch_function_calledÚretÚ
exceptionsÚfound_opr(  r  Ú_ÚeÚerr_msgrî   rc  Úmsgs                  r   rÓ  rÓ  e  s2  € ä!&§¡×!RÑ!RØ
ð"Øò"Øñ"ÑÐ˜3ñ Øˆ
ð €JØ€HØŸ™›ò 	*ˆÜ˜b -Ó0ˆð	*Ü—‘×?Ñ?Ø×#Ñ#ðØ&*òØ.4ñˆAð #ˆHÙð	*ñ Ù˜Ð( Ñ(Ð(ð 2°"°Ð5RÐSð ô # :×#3Ñ#3Ó#5Ó6ò 5‰ˆ‰:ˆC�Ø�^ C 5¨¨S¨E°Ð4Ñ4‰ð5ä
�wÓ
Ðøô ò 	*Ø()ˆJ�}Ö%ûð	*ús   Á/CÃ	C$ÃCÃC$c                   ó.   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zˆ xZS )Ú_OpNamespacea0  
    An op namespace to dynamically bind Operators into Python.

    Say a user has created a custom Operator called "my_namespace::my_op". To
    call this op, the user will write torch.ops.my_namespace.my_op(...).
    At startup, this operation will not yet be bound into Python. Instead, the
    following sequence of magic tricks will occur:
    1. `torch.ops.my_namespace` will invoke the `__getattr__` magic method
       on the `torch.ops` object, which will create a new `_OpNamespace`
       object called `my_namespace` and set it as an attribute on the `ops`
       object.
    2. `torch.ops.my_namespace.my_op` will then invoke `__getattr__` on
       the `my_namespace` object, which will retrieve the operation via
       `torch.get_operation`, a function bound from C++, and then in a similar
       fashion bind this new object onto the `my_namespace` object.
    3. `torch.ops.my_namespace.my_op(...)` then calls this new operation
        and subsequent accesses will incur no further lookup (the namespace and
        operation will already exist).
    c                 óF   •— t         ‰| �  d|z   «       || _        g | _        y )Nz
torch.ops.)rz   r#   rC   r®  )r"   rC   rƒ   s     €r   r#   z_OpNamespace.__init__¯  s#   ø€ Ü‰Ñ˜¨Ñ,Ô-ØˆŒ	Øˆ�	r$   c                 ó,   — t        | j                  «      S r   rÎ  r!   s    r   rÐ  z_OpNamespace.__iter__´  rÑ  r$   c                 óþ  — |dk(  ry|dv rt        d|› d| j                  › d�«      ‚| j                  }|› d|› �}| j                  dz   |z   }	 t        ||«      \  }}|€t        d	| j                  › d
|› d�«      ‚	 ||_        t        ||||«      }| j                  dz   |z   |_        t        | ||«       | j                  j                  |«       |S # t        $ r"}t        d	| j                  › d
|› d�«      |‚d }~ww xY w)Nr½  r¾  )Ú
__origin__Ú__self__zInvalid attribute 'z' for '_OpNamespace' 'rÀ  r"  r!  z'_OpNamespace' 'ú' object has no attribute ')	rÃ  rC   r_   Ú_get_packetrB   r©  rÆ  r®  r”   )	r"   r²  Únamespace_namer±  Úmodule_namerb   r³  râ  Úopoverloadpackets	            r   rÌ  z_OpNamespace.__getattr__·  sI  € à�jÒ ØØÐ2Ñ2Ü Ø% g YÐ.DÀTÇYÁYÀKÈqÐQóð ð Ÿ™ˆØ-Ð.¨b°°	Ð:ÐØ—o‘o¨Ñ+¨nÑ<ˆð	Ü!,Ð->ÀÓ!LÑˆB�ØˆzÜ$Ø& t§y¡y kÐ1LÈWÈIÐUVÐWóð ð ð $ˆŒÜ+Ø˜w¨¨Nó
Ðð '+§o¡o¸Ñ&;¸nÑ&LÐÔ#ô 	��gÐ/Ô0Ø�	‰	×Ñ˜Ô!ØÐøô! ò 	ô !Ø" 4§9¡9 +Ð-HÈÈ	ÐQRÐSóàðûð	ús   Á-C Ã	C<ÃC7Ã7C<)r^   r_   r`   ra   r#   rÐ  rÌ  rÍ   rÎ   s   @r   ræ  ræ  š  s   ø„ ñô(ò
ö% r$   ræ  c                 ó´   — t         j                  j                  | «      \  }}|�1t         j                  j                  j                  || «       ||_        ||fS r   )r1   r2   Ú_jit_get_operationÚjitÚ	_builtinsÚ_register_builtinr_   )ÚqualnameÚ	op_modulerb   r³  s       r   rí  rí  ß  sN   € ÜŸ™×4Ñ4°XÓ>Ñ€BˆØ	€~ô 	�	‰	×Ñ×-Ñ-¨b°(Ô;Ø!ˆŒØˆ~ÐÐr$   c                 ó‚   — t        | j                  | j                  j                  «      \  }}|€J ‚|| _        || _        y r   )rí  r¬  r#  r_   r­  )Úpacketrb   r³  s      r   Ú_refresh_packetrú  é  s<   € Ü$ V×%>Ñ%>ÀÇ
Á
×@UÑ@UÓVÑ€BˆØˆ>Ðˆ>Ø€F„JØ+€FÕr$   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú_PyOpNamespacec                 ó2   •— t         ‰| �  |«       || _        y r   )rz   r#   Ú_ops)r"   rC   Úopsrƒ   s      €r   r#   z_PyOpNamespace.__init__ñ  s   ø€ Ü‰Ñ˜ÔØˆ�	r$   c                 ó”   — | j                   j                  |d «      }|€t        d| j                  › d|› d�«      ‚t	        | ||«       |S )Nz'_PyOpNamespace' 'rì  rÀ  )rþ  rë   rÃ  rC   rÆ  )r"   rC   rb   s      r   rÌ  z_PyOpNamespace.__getattr__õ  sS   € à�Y‰Y�]‰]˜4 Ó&ˆØˆ:Ü Ø$ T§Y¡Y KÐ/JÈ4È&ÐPQÐRóð ô 	��d˜BÔØˆ	r$   )r^   r_   r`   r#   rÌ  rÍ   rÎ   s   @r   rü  rü  ð  s   ø„ ôör$   rü  c                   ó:   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Zˆ xZ	S )Ú_Opsz_ops.pyc                 óz   •— t         ‰| �  d«       t        «       | _        t	        dt
        «      | _        g | _        y )Nr¾  ry   )rz   r#   ré   Úloaded_librariesrü  ru   Ú_higher_order_op_namespacer®  )r"   rƒ   s    €r   r#   z_Ops.__init__  s6   ø€ Ü‰Ñ˜Ô%Ü #£ˆÔÜ*8Ø$Ô&7ó+
ˆÔ'ð ˆ�	r$   c                 óŽ   — |dk(  r| j                   S t        |«      }t        | ||«       | j                  j	                  |«       |S )Nrx   )r  ræ  rÆ  r®  r”   )r"   rC   rˆ   s      r   rÌ  z_Ops.__getattr__  sF   € à�>Ò!Ø×2Ñ2Ð2ô ! Ó&ˆ	Ü��d˜IÔ&Ø�	‰	×Ñ˜ÔØÐr$   c                 ó,   — t        | j                  «      S r   rÎ  r!   s    r   rÐ  z_Ops.__iter__  rÑ  r$   c                 ó.   — t        j                  |«       y)a{  
        Imports a Python module that has torch.library registrations.

        Generally, to extend PyTorch with custom operators, a user will
        create a Python module whose import triggers registration of
        the custom operators via a torch.ops.load_library call or a call
        to one or more torch.library.* APIs.

        It is unexpected for Python modules to have side effects, so some
        linters and formatters will complain. Use this API to import Python
        modules that contain these torch.library side effects.

        Args:
            module (str): The name of the Python module to import

        N)Ú	importlibÚimport_module)r"   Úmodules     r   r
  z_Ops.import_module  s   € ô" 	×Ñ Õ'r$   c                 óö   — t        j                  «       ryt        j                  |«      }t	        «       5  t        j                  |«       ddd«       | j                  j                  |«       y# 1 sw Y   Œ%xY w)a  
        Loads a shared library from the given path into the current process.

        The library being loaded may run global initialization code to register
        custom operators with the PyTorch JIT runtime. This allows dynamically
        loading custom operators. For this, you should compile your operator
        and the static registration code into a shared library object, and then
        call ``torch.ops.load_library('path/to/libcustom.so')`` to load the
        shared object.

        After the library is loaded, it is added to the
        ``torch.ops.loaded_libraries`` attribute, a set that may be inspected
        for the paths of all libraries loaded using this function.

        Args:
            path (str): A path to a shared library to load.
        N)	r1   Ú_running_with_deployr
   Úresolve_library_pathr   r   ÚCDLLr  r…   )r"   Úpaths     r   Úload_libraryz_Ops.load_library,  sa   € ô$ ×%Ñ%Ô'Øä×3Ñ3°DÓ9ˆÜ‹_ñ 	ô �K‰K˜Ô÷		ð
 	×Ñ×!Ñ! $Õ'÷	ð 	ús   µA/Á/A8)
r^   r_   r`   r½  r#   rÌ  rÐ  r
  r  rÍ   rÎ   s   @r   r  r     s!   ø„ Ø€Hôò	òò(ö&(r$   r  rÿ  )F)PrË   rq  r   r	  r9   r   ÚtypesÚtypingr   r   r   r   r   r   r	   r1   Útorch.utils._pytreeri  Ú_pytreerÐ   r
   Útorch._Cr   rg   r   Útorch._functorch.pyfunctorchr   rŸ   r   Úhasattrr   rr  r   r   rs   ru   rÄ  r+  r�  rŒ  rŠ  r‹  ÚAutocastCPUÚAutocastCUDAr€   ÚABCrt   r»   r¿   rÔ   rÕ   rá   r  rÿ   r  r  rª   r  r¬   rö   ré   r  r  r  r  r  rh  r˜  ÚFunctionSchemaÚboolr§  r©  rÓ  Ú
ModuleTyperæ  rí  rú  rü  r  rÿ  rF   r$   r   ú<module>r     s  ðä 
Û Û Û Û Û 
Û ß >× >Ñ >ã ß $Ð $Ý !ß XÝ ;Ý :ñ ˜CÐ!1Ó2ÒU±w¸sÐDTÓ7UÐ ð ×Ññ&ó ð&÷ E"ñ E"ðR2U�Lð 2U [ó 2Uðj 79Ð �4˜Ð2Ð2Ñ3Ó 8ð × Ñ Ø×!Ñ!Ø×ÑØ×ÑØ×ÑØ×Ñð6Ð 2ôE˜,¨¯©ô EòP3ò8ò
ò÷,
ñ 
ñ& &CÓ%DÐ "ó!òH$XòNMò7ò:òò .ñ
 !$£€
ˆC�ÑÓ %ò ò
ò
ôh�ô hôbd(˜*ô d(òNðR 5×#7Ñ#7ð R¸Dó R÷pEñ pEðj# Ð*:ó # ôjB �5×#Ñ#ô B òJò,ô�\ô ô G(ˆ5×Ñô G(ñV ‹F€€TÔ r$   