ó
    „ñ:i™œ  ã                   ó   • S SK r S SKrS SKrS SKrS SKJrJr  S SKJ	r	J
r
JrJrJr  S SKJrJrJrJrJr  S SKJr  S SKJrJr  S SKJr  S SKJr  S S	KJrJr  S S
K J!r!  S SKJ"r"  S SK#J$r$  S SK%J&r&  S SK'J(r(  S SK)J*r*   " S S5      r+S r, " S S\5      r- " S S\R\                  \R^                  \5      r0\!Rb                  Re                  \05        g)é    N)ÚjitÚtypeof)ÚcgutilsÚtypesÚ	serializeÚsigutilsÚerrors)Ú	is_jittedÚoverload_attributeÚoverload_methodÚregister_jitableÚ	intrinsic)Únpydecl)ÚAbstractTemplateÚ	signature)Útuple_setitem)Ú	_internal)Ú	UfuncBaseÚUfuncLowererBase)Úarray_analysis)Úufuncbuilder)Únumpy_support)ÚCallable)Úir)Úglobal_compiler_lockc                   óN   • \ rS rSrSS jrS rS rS rS rS r	S	 r
S
 rS rSrg)ÚUfuncAtIteratoré   Nc                 óX   • Xl         X l        X0l        X@l        XPl        X`l        Xpl        g ©N)ÚufuncÚaÚa_tyÚindicesÚ
indices_tyÚbÚb_ty)Úselfr!   r"   r#   r$   r%   r&   r'   s           ÚX/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numba/np/ufunc/dufunc.pyÚ__init__ÚUfuncAtIterator.__init__   s%   € ØŒ
ØŒØŒ	ØŒØ$ŒØŒØ�	ó    c                 ó¶   • U R                  X5        U R                  R                  5       u  p4U R                  XU5        U R                  R	                  5         g r    )Ú_prepareÚindexerÚbegin_loopsÚ_call_ufuncÚ	end_loops)r(   ÚcontextÚbuilderÚloop_indicesÚ_s        r)   ÚrunÚUfuncAtIterator.run$   sB   € Ø�‰�gÔ'ØŸ,™,×2Ñ2Ó4‰ˆØ×Ñ˜¨<Ô8Ø�‰×ÑÕ r,   c                 óJ   • [        U R                  [        R                  5      $ r    )Ú
isinstancer%   r   Ú	BaseTuple©r(   s    r)   Úneed_advanced_indexingÚ&UfuncAtIterator.need_advanced_indexing*   s   € Ü˜$Ÿ/™/¬5¯?©?Ó;Ð;r,   c                 ó@  • SSK JnJn  U R                  U R                  peU R
                  U R                  p‡UR                  [        R                  5      " S5      n	U R                  b  [        R                  " X)5      U l        U R                  5       (       a6  [        R                  " X&[!        U5      S9nUR                  n
U" XX¦5      u  p¦OU4nU4n
U" XX¦5      u  p¦U" XXuX¦5      U l        U R"                  R%                  5         U R'                  X5      U l        g )Nr   )Únormalize_indicesÚFancyIndexer)Úcount)Únumba.np.arrayobjr@   rA   r"   r$   r#   r%   Úget_value_typer   Úintpr&   r   Úalloca_once_valueÚb_indicer=   Úunpack_tupleÚlenr/   ÚprepareÚ_compile_ufuncÚcres)r(   r3   r4   r@   rA   r"   r$   r#   r%   ÚzeroÚindex_typess              r)   r.   ÚUfuncAtIterator._prepare-   sû   € ßEà—V‘V˜TŸ\™\ˆ7ØŸ9™9 d§o¡oˆjà×%Ñ%¤e§j¡jÔ1°!Ó4ˆà�6‰6ÑÜ#×5Ò5°gÓDˆDŒMà×&Ñ&×(Ñ(Ü×*Ò*¨7Ü14°Z³ñBˆGà$×*Ñ*ˆKÙ#4°WØ5@ó$KÑ ˆK˜ð �jˆGØ%˜-ˆKÙ#4°WØ5@ó$KÑ ˆKñ $ G°dØ$/ó:ˆŒà�‰×ÑÔØ×'Ñ'¨Ó9ˆ�	r,   c           	      ó  • SSK Jn  [        R                  " X$R                  5      n[        R                  " X$R
                  5      nUR                  n	[        R                  " XX—UUR                  U5      n
U" XXZ5      nX«4$ )Nr   )Ú	load_item)	rC   rQ   r   rH   ÚshapeÚstridesÚdataÚget_item_pointer2Úlayout)r(   r3   r4   r5   ÚarrayÚarray_tyrQ   ÚshapesrS   rT   ÚptrÚvals               r)   Ú	_load_valÚUfuncAtIterator._load_valI   si   € Ý/Ü×%Ò% g¯{©{Ó;ˆÜ×&Ò& w·±Ó>ˆØ�z‰zˆä×'Ò'¨¸$ÈØ(0¯©¸óGˆá˜¨(Ó8ˆØˆxˆr,   c                 óN  • UR                  U5      nUR                  U[        R                  5      nUR	                  [
        R                  U5      nU" X$U45      n	UR                  [        R                  5      " S5      n
UR                  Xj5      nUR                  Xc5        S U	4$ )Né   )
ÚloadÚdtyper   rE   Úget_functionÚoperatorÚgetitemrD   ÚaddÚstore)r(   r3   r4   r$   rW   rX   ÚidxÚsigÚimplr[   Úones              r)   Ú
_load_flatÚUfuncAtIterator._load_flatT   s‰   € Ø�l‰l˜7Ó#ˆØ�n‰n˜X¤u§z¡zÓ2ˆØ×#Ñ#¤H×$4Ñ$4°cÓ:ˆÙ�7 C˜LÓ)ˆð ×$Ñ$¤U§Z¡ZÔ0°Ó3ˆØ�k‰k˜#Ó#ˆØ�‰�cÔ#à�SˆyÐr,   c                 ó    • SSK Jn  U R                  R                  R                  nUR
                  n	UR                  X&X‰5      nU" XXFU5        g )Nr   )Ú
store_item)rC   rn   rL   r   Úreturn_typera   Úcast)
r(   r3   r4   rW   rX   rZ   r[   rn   ÚfromtyÚtotys
             r)   Ú
_store_valÚUfuncAtIterator._store_vala   s?   € Ý0Ø—‘×$Ñ$×0Ñ0ˆØ�~‰~ˆØ�l‰l˜7¨Ó6ˆÙ�7 X°CÕ8r,   c                 ó4  • U R                   R                  S   nU R                  c  U R                  R                  4nO,U R                  R                  U R
                  R                  4nUR                  U5      nUR                  UR                  45        U$ ©Nr   )	r!   Úkeyr&   r#   ra   r'   re   Úadd_linking_libsÚlibrary)r(   r3   r4   r!   rh   rL   s         r)   rK   ÚUfuncAtIterator._compile_ufunch   sm   € Ø—
‘
—‘˜qÑ!ˆà�6‰6‰>Ø—9‘9—?‘?Ð$‰Cà—9‘9—?‘? D§I¡I§O¡OÐ4ˆCà�y‰y˜‹~ˆØ× Ñ  $§,¡, Ô1Øˆr,   c                 ó€  • U R                   nU R                  U R                  peU R                  XX5U5      u  pxU R                  c  U4n	O;U R                  U R
                  U R                  pËn
U R                  XXÊU5      u  pÞXŽ4n	UR                  X$R                  UR                  U	5      nU R                  XXVX5        g r    )rL   r"   r#   r\   r&   r'   rG   rk   Úcall_internalÚfndescr   rs   )r(   r3   r4   r5   rL   r"   r#   rZ   r[   Úargsr&   r'   Úb_idxr6   Úval_bÚress                   r)   r1   ÚUfuncAtIterator._call_ufunct   sŸ   € Ø�y‰yˆØ—&‘&˜$Ÿ)™)ˆ4à—>‘> '°LÀTÓJ‰ˆà�6‰6‰>Ø�6‰Dà!ŸV™V T§Y¡Y°·±�UˆAØ—‘ w¸À4ÓH‰HˆAØ�<ˆDà×#Ñ# G¯[©[¸$¿.¹.Ø$(ó*ˆà�‰˜¨!°3Õ<r,   )
r"   r#   r&   rG   r'   rL   r/   r$   r%   r!   ©NN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r*   r7   r=   r.   r\   rk   rs   rK   r1   Ú__static_attributes__© r,   r)   r   r      s/   † ôò!ò<ò:ò8	òò9ò
õ=r,   r   c                 ó–   ^ • SSK Jn   " U 4S jSUR                  5      nU=R                  T R                  R                  -  sl        U$ )Nr   ©Únpyimplc                   ó4   >^ • \ rS rSrSr YrU 4S jrSrU =r$ )Ú(make_dufunc_kernel.<locals>.DUFuncKernelé‰   z©
npyimpl._Kernel subclass responsible for lowering a DUFunc kernel
(element-wise function) inside a broadcast loop (which is
generated by npyimpl.numpy_ufunc_kernel()).
c                 óŠ   >• [         TU ]  XU5        U R                  R                  UR                  5      u  U l        U l        g r    )Úsuperr*   ÚdufuncÚfind_ewise_functionr~   Ú	inner_sigrL   )r(   r3   r4   Ú	outer_sigÚ	__class__s       €r)   r*   Ú1make_dufunc_kernel.<locals>.DUFuncKernel.__init__‘   s6   ø€ Ü‰GÑ˜W¨yÔ9Ø(,¯©×(GÑ(GØ—‘ó) Ñ%ˆDŒN˜D�Ir,   )rL   r”   )	r„   r…   r†   r‡   Ú__doc__r’   r*   rˆ   Ú__classcell__)r–   Ú_dufuncs   @€r)   ÚDUFuncKernelrŽ   ‰   s   ù† ñ	ñ
 ˆ÷	 ó 	 r,   r›   )Únumba.nprŒ   Ú_Kernelr„   r!   )rš   rŒ   r›   s   `  r)   Úmake_dufunc_kernelrž   †   s9   ø€ Ý ÷ �w—‘ô  ð ×Ò˜WŸ]™]×3Ñ3Ñ3ÕØÐr,   c                   ó,   ^ • \ rS rSrSrU 4S jrSrU =r$ )ÚDUFuncLowereréš   zHCallable class responsible for lowering calls to a specific DUFunc.
    c                 óP   >• SSK Jn  [        TU ]  U[        UR
                  5        g )Nr   r‹   )rœ   rŒ   r‘   r*   rž   Únumpy_ufunc_kernel)r(   r’   rŒ   r–   s      €r)   r*   ÚDUFuncLowerer.__init__�   s!   ø€ Ý$Ü‰Ñ˜Ü+Ø ×3Ñ3õ	5r,   r‰   )r„   r…   r†   r‡   r˜   r*   rˆ   r™   ©r–   s   @r)   r    r    š   s   ø† ñ÷5ó 5r,   r    c                   ór  ^ • \ rS rSrSr\" S5      rS!S jrU 4S jrS r	\
S 5       rS r\S	 5       r\S
 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rS rS rU 4S jrS r\S"S j5       rS rS#S jrS#S jrS#S jrS#S jr S#S jr!S"U 4S jjr"S"S jr#S r$S r%S r&U =r'$ )$ÚDUFuncé¤   z©
Dynamic universal function (DUFunc) intended to act like a normal
Numpy ufunc, but capable of call-time (just-in-time) compilation
of fast loops specialized to inputs.
)ÚidentityÚ
_keepaliveÚninÚnoutc                 ó  • Uc  0 n[        U5      (       a  UR                  n[        R                  " 5          [	        SSUS.UD6" U5      nS S S 5        U R                  WU5        [        R                  " X5        g ! , (       d  f       N7= f)NÚnpyufunc)Ú_targetÚcacher‰   )r
   Úpy_funcr   Ú3_suppress_deprecation_warning_nopython_not_suppliedr   Ú_initializeÚ	functoolsÚupdate_wrapper)r(   r±   r©   r°   ÚtargetoptionsÚ
dispatchers         r)   r*   ÚDUFunc.__init__®   s�   € ØÑ ØˆMÜ�W×ÑØ—o‘oˆGÜ×MÒMÕOÜð . ZØ#(ñ.à,ò.à.5ó7ˆJ÷ Pð 	×Ñ˜ XÔ.Ü× Ò  Õ/÷ PÕOús   ·A=Á=
Bc                 óP  >• [         R                  " U5      n[        [        U ]  XS9  U[
        R                  :g  U l        UR                  R                  U l	        UR                  R                  U l
        [        U 5      U l        U R                  5         U R                  5         g )N)r©   )r   Úparse_identityr‘   r§   r*   r   ÚPyUFunc_NoneÚreorderabler±   r„   r˜   r    Ú	_lower_meÚ_install_cgÚ_install_type)r(   r·   r©   r–   s      €r)   r³   ÚDUFunc._initializeº   s„   ø€ Ü×.Ò.¨xÓ8ˆÜŒf�dÑ$ ZÐ$ÑCð %¬	×(>Ñ(>Ñ>ˆÔØ"×*Ñ*×3Ñ3ˆŒØ!×)Ñ)×1Ñ1ˆŒÜ& tÓ,ˆŒØ×ÑÔØ×ÑÕr,   c                 ó°   • [        U R                  R                  R                  5       5      n[	        U R                  U R
                  U R                  US9$ )ú$
NOTE: part of ReduceMixin protocol
)r·   r©   ÚfrozenÚsiglist)ÚlistÚ_dispatcherÚ	overloadsÚkeysÚdictr©   Ú_frozen)r(   rÄ   s     r)   Ú_reduce_statesÚDUFunc._reduce_statesÆ   sJ   € ô �t×'Ñ'×1Ñ1×6Ñ6Ó8Ó9ˆÜØ×'Ñ'Ø—]‘]Ø—<‘<Øñ	
ð 	
r,   c                 óÈ   • [         R                  R                  U 5      nUR                  X5        U H  nUR	                  U5        M     U(       a  UR                  5         U$ )rÂ   )r   Ú_DUFuncÚ__new__r³   re   Údisable_compile)Úclsr·   r©   rÃ   rÄ   r(   rh   s          r)   Ú_rebuildÚDUFunc._rebuildÒ   sQ   € ô
 × Ñ ×(Ñ(¨Ó-ˆØ×Ñ˜Ô.ãˆCØ�H‰H�SŽMñ æØ× Ñ Ô"Øˆr,   c                 ó   • U $ )z;
For compatibility with the various *UFuncBuilder classes.
r‰   r<   s    r)   Úbuild_ufuncÚDUFunc.build_ufuncà   s	   € ð ˆr,   c                 ó.   • U R                   R                  $ r    )rÆ   r¶   r<   s    r)   r¶   ÚDUFunc.targetoptionsæ   s   € à×Ñ×-Ñ-Ð-r,   c                 ó.   • U R                   R                  $ r    )r!   r«   r<   s    r)   r«   Ú
DUFunc.ninê   s   € à�z‰z�~‰~Ðr,   c                 ó.   • U R                   R                  $ r    )r!   r¬   r<   s    r)   r¬   ÚDUFunc.noutî   s   € à�z‰z�‰Ðr,   c                 ó.   • U R                   R                  $ r    )r!   Únargsr<   s    r)   rÞ   ÚDUFunc.nargsò   ó   € à�z‰z×ÑÐr,   c                 ó.   • U R                   R                  $ r    )r!   Úntypesr<   s    r)   râ   ÚDUFunc.ntypesö   s   € à�z‰z× Ñ Ð r,   c                 ó.   • U R                   R                  $ r    )r!   r   r<   s    r)   r   ÚDUFunc.typesú   rà   r,   c                 ó.   • U R                   R                  $ r    )r!   r©   r<   s    r)   r©   ÚDUFunc.identityþ   s   € à�z‰z×"Ñ"Ð"r,   c                 ó.   • U R                   R                  $ r    )r!   r   r<   s    r)   r   ÚDUFunc.signature  s   € à�z‰z×#Ñ#Ð#r,   c                 ó\   • [        U R                  R                  5      S:”  d   eSU l        g)z9
Disable the compilation of new signatures at call time.
r   TN)rI   rÆ   rÇ   rÊ   r<   s    r)   rÐ   ÚDUFunc.disable_compile  s*   € ô
 �4×#Ñ#×-Ñ-Ó.°Ó2Ð2Ð2Øˆ�r,   c                 óT   • [         R                  " U5      u  p#U R                  X#5      $ )z-
Compile the DUFunc for the given signature.
)r   Únormalize_signatureÚ_compile_for_argtys)r(   rh   r~   ro   s       r)   re   Ú
DUFunc.add  s(   € ô %×8Ò8¸Ó=ÑˆØ×'Ñ'¨Ó:Ð:r,   c                 ó0  >• [         R                  R                  R                  nU[	        UR                  5       5      -    HB  n[        [        U5      SU5      ULd  M  UR                  " U S/UQ70 UD6nU[        Ld  M@  Us  $    [        TU ](  " U0 UD6$ )ze
Allow any argument that has overridden __array_ufunc__ (NEP-18)
to take control of DUFunc.__call__.
Ú__array_ufunc__Ú__call__)r   ÚnpÚndarrayrñ   ÚtupleÚvaluesÚgetattrÚtypeÚNotImplementedr‘   rò   )r(   r~   ÚkwsÚdefaultÚargÚoutputr–   s         €r)   rò   ÚDUFunc.__call__  sŒ   ø€ ô
  ×"Ñ"×*Ñ*×:Ñ:ˆàœ% §
¡
£Ó-Ô-ˆCÜ”t˜C“yÐ"3°WÓ=ÀWÔLØ×,Ò,¨T°:ÐLÀÒLÈÑL�Ø¤Ô/Ø!’Mñ	 .ô ‘7Ò# TÐ1¨SÑ1Ð1r,   c           	      óV  • U R                   R                  nU(       aP  SU;   a  UR                  S5      nX4-  nU(       a-  [        SSR	                  S [        U5       5       5      -  5      e[        U5      nXS:X  d  XSU R                   R                  -   :X  d   eU(       a   e/ nUS U  Ha  n[        U5      n[        U[        R                  5      (       a  UR                  nO[        R                  " U5      nUR                  U5        Mc     U R!                  [#        U5      5      $ )NÚoutz)unexpected keyword arguments to ufunc: %sz, c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr    )Úrepr)Ú.0Úks     r)   Ú	<genexpr>Ú+DUFunc._compile_for_args.<locals>.<genexpr>,  s   é € Ð+Iº[¸¬D°¯G¨Gº[ùó   ‚)r!   r«   ÚpopÚ	TypeErrorÚjoinÚsortedrI   r¬   r   r:   r   ÚArrayra   r   Úmap_arrayscalar_typeÚappendrî   rõ   )	r(   r~   rú   r«   r   Úargs_lenÚargtysrü   Úargtys	            r)   Ú_compile_for_argsÚDUFunc._compile_for_args$  sü   € Ø�j‰j�n‰nˆÞØ˜‹|Ø—g‘g˜e“n�Ø˜‘�ÞÜÐ KØ"&§)¡)Ñ+I¼VÀC¼[Ó+IÓ"Iñ!Jó Kð Kô �t“9ˆØ“ X°t·z±z·±Ñ1FÓ%FÐGÐGÞˆˆwØˆØ˜˜“:ˆCÜ˜3“KˆEÜ˜%¤§¡×-Ñ-ØŸ™‘ô &×:Ò:¸3Ó?�Ø�M‰M˜%Ö ñ ð ×'Ñ'¬¨f«Ó6Ð6r,   c                 ó   • U R                   (       a  [        SU < 35      e[        U[        5      (       d   eUc  UnOU" U6 nU R                  R
                  R                  5        HC  u  pEXR                  :X  d  M  SU S3n[        R                  " U[        R                  5        Us  $    [        R                  " U R                  U R                  U5      u  pQn[        R                  " XQU5      n[        R                   " XW5      u  p‰n
U R#                  [%        U	5      U5        U R&                  R)                  X•R*                  U
45        U R,                  R.                  R)                  UR*                  5        U$ )zÿ
Given a tuple of argument types (these should be the array
dtypes, and not the array types themselves), compile the
element-wise function for those inputs, generate a UFunc loop
wrapper, and register the loop with the Numpy ufunc object for
this DUFunc.
úcompilation disabled for z>Compilation requested for previously compiled argument types (z~). This has no effect and perhaps indicates a bug in the calling code (compiling a ufunc more than once for the same signature)rÊ   ÚRuntimeErrorr:   rõ   rÆ   rÇ   Úitemsr~   ÚwarningsÚwarnr	   ÚNumbaWarningr   Ú_compile_element_wise_functionr¶   Ú_finalize_ufunc_signatureÚ!_build_element_wise_ufunc_wrapperÚ	_add_loopÚintrª   r  ry   r½   Úlibs)r(   r  ro   rh   r  rL   ÚmsgÚ
actual_sigÚ	dtypenumsrZ   Úenvs              r)   rî   ÚDUFunc._compile_for_argtysC  sD  € ð �<�<ÝÂÐFÓGÐGÜ˜&¤%×(Ñ(Ð(Ð(ØÑØ‰Cá˜vÐ&ˆCà×'Ñ'×1Ñ1×7Ñ7Ö9‰GˆAØŸ™Õð"Ø"( ð *EðE�ô —’˜c¤6×#6Ñ#6Ô7Ø’ñ :ô %1×$OÒ$OØ×Ñ˜d×0Ñ0°#ó%7Ñ!ˆ�kä!×;Ò;Ø˜+ó'ˆ
ä*×LÒLØóÑˆ	˜à�‰”s˜3“x Ô+Ø�‰×Ñ §\¡\°3Ð7Ô8Ø�‰×Ñ×"Ñ" 4§<¡<Ô0Øˆr,   c                 ó    • UR                   U:H  $ r    )r~   )r(   Úewise_typesrh   s      r)   Úmatch_signatureÚDUFunc.match_signatureh  s   € Ø�x‰x˜;Ñ&Ð&r,   c                 óš   • S[         S[        4S jn[        R                  " U5      nSnU H  nU" U5      n[	        X55      " U5        M     g )NÚattrÚreturnc                 ó   ^ • U 4S jnU$ )Nc                 óD   >^• [        U R                  S   T5      mU4S j$ )Nr   c                 ó   >• T$ r    r‰   )r!   r[   s    €r)   Ú<lambda>ÚUDUFunc._install_ufunc_attributes.<locals>.get_attr_fn.<locals>.impl.<locals>.<lambda>q  s   ø€ ¡Sr,   )r÷   rw   )r!   r[   r+  s    @€r)   ri   ÚCDUFunc._install_ufunc_attributes.<locals>.get_attr_fn.<locals>.implo  s   ù€ Ü˜eŸi™i¨™l¨DÓ1�Ü(Ð(r,   r‰   )r+  ri   s   ` r)   Úget_attr_fnÚ5DUFunc._install_ufunc_attributes.<locals>.get_attr_fnm  s   ø€ õ)ð ˆKr,   )r«   r¬   rÞ   r©   r   )Ústrr   r   ÚFunctionr   )r(   Útemplater3  ÚatÚ
attributesr+  Úattr_fns          r)   Ú_install_ufunc_attributesÚ DUFunc._install_ufunc_attributesk  sM   € ð	œcð 	¤hô 	ô �^Š^˜HÓ%ˆð/ˆ
ãˆDÙ! $Ó'ˆGÜ˜rÔ(¨Ö1ò r,   c                 ój   • U R                  U5        U R                  U5        U R                  U5        g r    )Ú_install_ufunc_reduceÚ_install_ufunc_reduceatÚ_install_ufunc_at)r(   r7  s     r)   Ú_install_ufunc_methodsÚDUFunc._install_ufunc_methods€  s,   € Ø×"Ñ" 8Ô,Ø×$Ñ$ XÔ.Ø×Ñ˜xÕ(r,   c                 ó`   ^ • [         R                  " U5      n[        US5      SU 4S jj5       ng )Nr8  c                 óÖ  >^ ^^^^• [         R                  " S[        R                  S9  [	        U[
        R                  5      (       d  Sn[        R                  " U5      e[	        U[
        R                  5      n[	        U[
        R                  5      n[	        U[
        R                  5      n[	        U[
        R                  5      nU=(       d    U=(       d    U(       + n	U=(       a    [        U5      S:H  n
[	        U[
        R                  [
        R                  [
        R                  [
        R                  45      n[        R                  " U5      mU=(       d    T(       + n[        U/5      nTR                   R"                  nUS:X  a1  [        R                  " U5      (       a  [        R$                  " S5      eUS:X  a3  [        R                  " U5      (       d  Sn[        R$                  " U5      e[        R                  " U5      (       a  TR'                  UR(                  45        OLU(       a  TR'                  UR(                  U45        O'TR'                  UR(                  UR(                  45        U 4S	 jm[*        U4S
 j5       m[*        U4S j5       mSU4S jjnSUUU4S jjnSS jnSU4S jjnU(       a  U$ U
(       a	  U(       a  U$ U	(       a	  U(       a  U$ U$ )Nz ufunc.at feature is experimental©Úcategoryz)The first argument "a" must be array-liker   é   zsecond operand needed for ufuncr_   z+second operand provided when ufunc is unaryc           	      óê   >• SSK Jn  [        U5      S:X  a  UR                  u  pVpxUu  pYp«OUR                  S-   u  pVpxUS-   u  pYp«U" U5      " XU	5      n	[	        TX–X§X¸5      nUR                  X5        g )Nr   )Ú
make_arrayé   r    )rC   rI  rI   r~   r   r7   )r3   r4   rh   r~   rI  r6   ÚatyÚidxtyÚbtyr"   r$   r&   Úat_iterr!   s                €r)   Úapply_ufunc_codegenÚDDUFunc._install_ufunc_at.<locals>.ol_at.<locals>.apply_ufunc_codegen¯  sx   ø€ Ý8ä�t“9 “>Ø),¯©Ñ&�A˜EØ'+Ñ$�A˜' 1à),¯©°GÑ);Ñ&�A˜EØ'+¨g¡~Ñ$�A˜'á˜s”O G°aÓ8�Ü)¨%°¸ÈÓP�Ø—‘˜GÕ-r,   c                 ó:   >• [         R                  " XX45      nUT4$ r    ©r   Únone)Ú	typingctxr!   r"   r$   r&   rh   rO  s         €r)   Úapply_a_b_ufuncÚ@DUFunc._install_ufunc_at.<locals>.ol_at.<locals>.apply_a_b_ufunc½  s   ø€ ä—j’j ¨7Ó6�ØÐ/Ð/Ð/r,   c                 ó:   >• [         R                  " XU5      nUT4$ r    rR  )rT  r!   r"   r$   rh   rO  s        €r)   Úapply_a_ufuncÚ>DUFunc._install_ufunc_at.<locals>.ol_at.<locals>.apply_a_ufuncÂ  s   ø€ ä—j’j ¨7Ó3�ØÐ/Ð/Ð/r,   c                 óÔ   >• T(       a&  U R                  U[        R                  " U5      5      $ U R                  U[        R                  " U5      [        R                  " U5      5      $ r    )r8  ró   Úasarray©r!   r"   r$   r&   Úb_nones       €r)   Ú	impl_castÚ:DUFunc._install_ufunc_at.<locals>.ol_at.<locals>.impl_castÇ  sJ   ø€ ÞØ Ÿ8™8 A¤r§z¢z°'Ó':Ó;Ð;à Ÿ8™8 AÜ$&§J¢J¨wÓ$7Ü$&§J¢J¨q£Mó3ð 3r,   c                 óÂ   >• T(       a
  T" XU5        g [         R                  " U5      nX   n[         R                  " XER                  5      nT" XX$R                  5        g r    )ró   r[  Úbroadcast_torR   Úflat)	r!   r"   r$   r&   Úb_Úa_rU  rX  r]  s	         €€€r)   Úimpl_genericÚ=DUFunc._install_ufunc_at.<locals>.ol_at.<locals>.impl_genericÏ  sD   ø€ ÞÙ! %¨GÕ5äŸš A›�BØ™�BÜŸš¨¯X©XÓ6�BÙ# E¨g·w±wÕ?r,   c                 ó"   • U " US   U5      US'   g )Nr‰   r‰   )r!   r"   r$   r&   s       r)   Úimpl_indices_empty_b_scalarÚLDUFunc._install_ufunc_at.<locals>.ol_at.<locals>.impl_indices_empty_b_scalarØ  s   € Ù˜a ™e Q›��"’r,   c                 óH   >• T(       a  U " X   5      X'   g U " X   U5      X'   g r    r‰   r\  s       €r)   Úimpl_scalar_scalarÚCDUFunc._install_ufunc_at.<locals>.ol_at.<locals>.impl_scalar_scalarÛ  s$   ø€ ÞÙ!& q¡zÓ!2�A’Já!& q¡z°1Ó!5�A’Jr,   r    )r  r  r	   ÚNumbaExperimentalFeatureWarningr:   r   r  ÚNumbaTypeErrorÚListÚTupleÚ	SliceTyperI   ÚSequencer   Úis_nonelikeÚanyr!   r«   ÚTypingErrorre   ra   r   )r!   r"   r$   r&   r!  Úindices_arrÚindices_listÚindices_tupleÚindices_sliceÚindices_scalarÚindices_empty_tupleÚb_arrayÚb_scalarÚ	need_castr«   r^  re  rh  rk  rU  rX  rO  r]  r(   s   `                  @@@@€r)   Úol_atÚ'DUFunc._install_ufunc_at.<locals>.ol_atˆ  s'  ý€ ä�MŠMÐ<Ü#)×#IÑ#IòKô ˜a¤§¡×-Ñ-ØA�Ü×+Ò+¨CÓ0Ð0ä$ W¬e¯k©kÓ:ˆKÜ% g¬u¯z©zÓ:ˆLÜ& w´·±Ó<ˆMÜ& w´·±Ó@ˆMØ"-×"O°×"OÀ-ÔPˆNØ"/×"E´C¸³LÀAÑ4EÐÜ  ¤U§[¡[´%·.±.Ä%Ç*Á*Ü%*§[¡[ð%2ó 3ˆGä×(Ò(¨Ó+ˆFØ#×- vÔ.ˆHÜ˜\˜NÓ+ˆIà—*‘*—.‘.ˆCð �a‹xœG×/Ò/°×2Ñ2Ü×(Ò(Ð)JÓKÐKð �a‹x¤× 3Ò 3°A× 6Ñ 6ØC�Ü×(Ò(¨Ó-Ð-ä×"Ò" 1×%Ñ%Ø—‘˜!Ÿ'™'˜Õ$ÞØ—‘˜!Ÿ'™' 1˜Õ&à—‘˜!Ÿ'™' 1§7¡7Ð+Ô,õ.ô ô0ó ð0ô ô0ó ð0÷3÷@ñ @ô(÷6ö Ø Ð Þ$®Ø2Ð2Þ¦HØ)Ð)à#Ð#r,   r    ©r   r6  r   )r(   r7  r8  r  s   `   r)   r@  ÚDUFunc._install_ufunc_at…  s,   ø€ Ü�^Š^˜HÓ%ˆä	˜˜TÓ	"ö_	$ó 
#ñ_	$r,   c                 ó`   ^ • [         R                  " U5      n[        US5      SU 4S jj5       ng )NÚreducec                 ó   >^^^^^^^^^^^^^^• [         R                  " S[        R                  S9  [	        U[
        R                  5      (       d  Sn[        R                  " U5      e[	        U[
        R                  5      =(       a$    [	        UR                  [
        R                  5      n[	        U[
        R                  5      =(       a    [        U5      S:H  n[        R                  " U5      nTR                  R                   S L mTR                  R"                  mTR$                  (       d2  U(       a+  [        U5      S:”  a  ST S3n[        R                  " U5      eSUR&                  -  mSUR&                  S-
  -  m[        R                  " U5      (       a  UR                  OUmTR                   m[        R                  " T5      m[        R                  " U5      m[(        U4S	 j5       m[(        U4S
 j5       m[*        S 5       m[(        S 5       m[(        S 5       mSUUUUU4S jjn	   SUUUUUUU4S jjn
   SUUU4S jjn   SS jn   SU4S jjnUR&                  S:X  a	  U(       d  U	$ U(       a  U$ U(       a   [-        [/        UR&                  5      5      mU$ U(       a  S[        U5      S-
  -  mU$ US:X  d>  [	        U[
        R                  [
        R0                  [
        R2                  45      (       a  U
$ g )Nz$ufunc.reduce feature is experimentalrE  ú-The first argument "array" must be array-liker   r_   zreduction operation 'z:' is not reorderable, so at most one axis may be specified©r   c                 óh   >• TnSn[        U 5       H  u  pEXA:X  a  M  [        X#U5      nUS-  nM     U$ ©Nr   r_   )Ú	enumerater   )ÚtupÚposÚsÚiÚjÚeÚtup_init_m1s         €r)   Útuple_sliceÚDDUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.tuple_slice  sC   ø€ ð  �Ø�Ü% cžN‘D�AØ“xÙ Ü% a¨AÓ.�AØ˜‘F’Añ	 +ð
 �r,   c                 ó˜   >• TnSS[        U5      penXV:  a3  XQ:X  a  [        X5U5      nOX   n[        X5U5      nUS-  nUS-  nXV:  a  M3  U$ r‰  ©rI   r   )	r‹  rŒ  r[   r�  rŽ  r�  Úszr�  Útup_inits	           €r)   Útuple_slice_appendÚKDUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.tuple_slice_append  sb   ø€ ð �Ø˜a¤ Q£�b�Ø“fØ“xÜ)¨!°Ó4™à™F˜Ü)¨!°Ó2˜Ø˜Q™˜Ø˜‘F�Að •fð �r,   c                 ój   ^^• [         R                  " XX45      n[        U5      mU4S jmUU4S jnXV4$ )Nc                 óô  >• Uu  pVpvU R                  US9nU R                  U5         [        R                  " S5      " S5      n	U	n
US:X  a\  [	        ST5       HJ  nU R                  X[S-
  5      nU R                  X{5      nU R                  XÍ5      nU R                  X®5      n
ML     GO"SUs=:  a	  TS-
  :  a¸  O  Oµ[	        SU5       HG  nU R                  X[5      nU R                  X{5      nU R                  XÍ5      nU R                  X®5      n
MI     [	        US-   T5       HJ  nU R                  X[S-
  5      nU R                  X{5      nU R                  XÍ5      nU R                  X®5      n
ML     OZ[	        STS-
  5       HG  nU R                  X[5      nU R                  X{5      nU R                  XÍ5      nU R                  X®5      n
MI     U R                  U5        S S S 5        XŠ4$ ! , (       d  f       UW
4$ = f)N©Únameé@   r   r_   )	Úappend_basic_blockÚ
goto_blockr   ÚIntTypeÚrangeÚextract_valueÚmulre   Úbranch)r4   Ú	block_posÚ
block_nameÚbb_endr~   rS   r6   rg   ÚbbrM   Úflat_idxrŽ  ÚstrideÚidx_iÚmÚlen_idxs                  €r)   Ú	gen_blockÚ\DUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.compute_flat_idx.<locals>.gen_block0  sÚ  ø€ Ø)-Ñ&�G Ø ×3Ñ3¸Ð3ÐD�Bà ×+Ñ+¨BÕ/Ü!Ÿzšz¨"œ~¨aÓ0˜Ø#'˜à$¨›>Ü%*¨1¨gÖ%6 Ø)0×)>Ñ)>¸wÈAÉÓ)N Ø(/×(=Ñ(=¸cÓ(E Ø$+§K¡K°Ó$> Ø+2¯;©;°xÓ+C¢ó	 &7ð
  Õ8¨W°q©[Ö8Ü%*¨1¨iÖ%8 Ø)0×)>Ñ)>¸wÓ)J Ø(/×(=Ñ(=¸cÓ(E Ø$+§K¡K°Ó$> Ø+2¯;©;°xÓ+C¢ñ	 &9ô &+¨9°q©=¸'Ö%B Ø)0×)>Ñ)>¸wÈAÉÓ)N Ø(/×(=Ñ(=¸cÓ(E Ø$+§K¡K°Ó$> Ø+2¯;©;°xÓ+C¢ò	 &Cô &+¨1¨g¸©kÖ%: Ø)0×)>Ñ)>¸wÓ)J Ø(/×(=Ñ(=¸cÓ(E Ø$+§K¡K°Ó$> Ø+2¯;©;°xÓ+C¢ñ	 &;ð  Ÿ™ vÔ.÷; 0ð> ˜<Ð'÷? 0Ô/ð> ˜x˜<Ð'ús   §F4G&Ç&
G7c                 óF  >• Uu  pEpgUR                   nUR                  SS9n	/ n
[        T5       H$  nT" XSU 3X“5      u  pÍU
R                  XÍ45        M&     UR	                  U5         UR                  XzS   S   5      n[        T5       H  nUR                  XºU   S   5        M     S S S 5        UR                  U	5        UR                  U
S   S   R                  5      nU
 H  u  nnUR                  UU5        M     UR                  Xõ5      $ ! , (       d  f       No= f)NÚaxis_endrœ  Úaxis_éÿÿÿÿr   r_   )Úbasic_blockrŸ  r¢  r  r   ÚswitchÚadd_caseÚposition_at_endÚphirø   Úadd_incomingÚsdiv)r3   r4   rh   r~   rS   Úitemsizerg   Úaxisr©  Ú
switch_endÚlrŽ  Úblockrª  r¶  r¹  Úvaluer¯  r®  s                    €€r)   ÚcodegenÚZDUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.compute_flat_idx.<locals>.codegenU  s  ø€ Ø37Ñ0�G sà ×,Ñ,�BØ!(×!;Ñ!;ÀÐ!;Ð!L�JØ�AÜ" 7ž^˜Ù*3°GÀ%ÈÀsÀØ4>ó+F™˜àŸ™ %Ð!2Ö3ñ ,ð
 !×+Ñ+¨BÕ/Ø!(§¡°¸±e¸A±hÓ!?˜Ü!& w¦˜AØ"ŸO™O¨A°©t°A©wÖ7ñ "0÷ 0ð
 ×+Ñ+¨JÔ7Ø!Ÿ+™+ a¨¡d¨1¡g§l¡lÓ3�CÛ()™˜˜uØ×(Ñ(¨°Ö6ñ )*à"Ÿ<™<¨Ó6Ð6÷ 0Õ/ús   Á(ADÄ
D )r   rE   rI   )	rT  rS   r¼  rg   r½  rh   rÂ  r¯  r®  s	          @@r)   Úcompute_flat_idxÚIDUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.compute_flat_idx+  s1   ù€ ä—j’j °CÓ>�Ü˜c›(�õ#(öJ7ð, �|Ð#r,   c                 ó~   • U n[        [        U 5      5       H"  nX   S:  a  X   U-   OX   n[        X#U5      nM$     U$ rv   )r¢  rI   r   )r½  ÚndimÚaxrŽ  r[   s        r)   Ú
fixup_axisÚCDUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.fixup_axism  sD   € à�Üœs 4›yÖ)�AØ,0©G°a«K˜$™' Dš.¸T¹W�CÜ& r¨cÓ2’Bñ *ð �	r,   c                 óh   • SU S   p![        [        U 5      5       H  nX   U:  d  M  X0U   p!M     X4$ rv   )r¢  rI   )r‹  rg   r�  rŽ  s       r)   Úfind_minÚADUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.find_minu  s:   € à˜C ™F�QÜœs 3›xž�AØ‘v •zØ!"¨¡FšQñ )ð �v�r,   c                 óü   >• T(       a#  Uc   [        U5      S:X  a  ST S3n[        U5      eSnT(       a  T
(       a  SnUS   nOT(       a  TnOUnUR                  S   n[        Xh5       H  n	U " XqU	   5      nM     U$ )Nr   ú'zero-size array to reduction operation ú which has no identityr_   )rI   Ú
ValueErrorrR   r¢  )r!   rW   r½  ra   Úinitialr!  ÚstartÚrr–  rŽ  Úid_noner©   Úidentity_noneÚ	init_noneÚ
ufunc_names             €€€€€r)   Úimpl_1dÚ@DUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.impl_1d}  s…   ø€ Þ  W¡_¼¸U»Àq»ØDØ(˜\Ð)?ðA�Cä$ S›/Ð)à�Þ¦Ø�EØ˜a™‘AÞØ ‘Aà�Aà—[‘[ ‘^�Ü˜uÖ)�AÙ˜a q¡Ó*’Añ *à�r,   c                 óš  >• Uc  [        S5      eUS:  a  X!R                  -  nUS:  d  X!R                  :¼  a  [        S5      eT(       a'  Uc$  UR                  U   S:X  a  ST S3n[        U5      eT" UR                  U5      nUcG  TcD  [        R                  " UTS9n[        R
                  " U5       H  u  p‰T" X‚S5      n
X   Xx'   M     O2Uc  Tb  [        R                  " UTTS9nO[        R                  " XdTS9nUR                  5       nUc[  TcX  [        R
                  " U5       H<  u  pŒX‚   S:X  a  M  T" UR                  UR                  X‚5      nX½   UpþU " Xï5      X½'   M>     U$ [        R
                  " U5       HB  u  pŒUc  Tc
  X‚   S:X  a  M  T" UR                  UR                  X‚5      nX½   UpþU " Xï5      X½'   MD     U$ )Nz'axis' must be specifiedr   úInvalid axisrÏ  rÐ  ©ra   )Ú
fill_valuera   )
rÑ  rÇ  rR   ró   ÚemptyÚndenumerateÚfullÚravelrS   r¼  )r!   rW   r½  ra   rÒ  r!  rR   rÔ  rg   r6   Ú
result_idxÚviewr[   Úflat_posÚlhsÚrhsrÄ  r©   rÖ  Únb_dtyper’  r˜  rØ  s                   €€€€€€€r)   Úimpl_nd_axis_intÚIDUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.impl_nd_axis_int‘  sÍ  ø€ ð
 ‘<Ü$Ð%?Ó@Ð@à˜!“8ØŸJ™JÑ&�Dà˜!“8˜t§z¡zÓ1Ü$ ^Ó4Ð4æ  W¡_¸¿¹ÀTÑ9JÈaÓ9OØDØ(˜\Ð)?ðA�Cä$ S›/Ð)ñ $ E§K¡K°Ó6�à‘? xÑ'7ÜŸš ¨hÑ7�AÜ"$§.¢.°Ö"3™˜á%7¸À1Ó%E˜
Ø!&Ñ!2˜›ò #4ð ‘_¨Ñ)=ô Ÿš °(À(ÑK‘AäŸš ÀÑJ�Að —w‘w“y�Ø‘? xÑ'7Ü$&§N¢N°5Ö$9™˜Ø™9¨›>Ù$á'7¸¿	¹	À1Ç:Á:Ø8;ó(C˜Hà'+¡~°s Ù-2°3«_˜D›Nñ %:ð" �ô %'§N¢N°5Ö$9™˜Ø"™?¨xÑ/?Ø #¡	¨Q£Ù$Ù#3°A·I±I¸q¿z¹zØ47ó$?˜à#'¡>°3˜SÙ).¨s«˜›ñ %:ð �r,   c                 óB  >• T" X!R                   5      n[        S[        U5      5       H\  nXV   S:  d  XV   UR                   :¼  a  [        S5      e[        US-   [        U5      5       H  nXV   XW   :X  d  M  [        S5      e   M^     T" U5      u  p‰U R	                  UU	UUS9n
[        U5      S:X  a  U
$ [        U5      S:X  a  U R	                  X¥US-   S-     S-
  S9$ Tn[        [        U5      5       H  nXh:w  d  M
  [        X¶XV   5      nM     U R	                  X«S9$ )Nr   rÜ  r_   zduplicate value in 'axis')r½  ra   rÒ  rG  ©r½  )rÇ  r¢  rI   rÑ  r„  r   )r!   rW   r½  ra   rÒ  r³  rŽ  r�  Úmin_idxÚmin_elemrÔ  rÈ  Úaxis_tuprÌ  rÉ  s               €€€r)   Úimpl_nd_axis_tupleÚKDUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.impl_nd_axis_tupleÏ  s$  ø€ ñ
 # 4¯©Ó4�Ü˜q¤# e£*Ö-�AØ‘x !“| u¡x°5·:±:Ó'=Ü(¨Ó8Ð8ä" 1 q¡5¬#¨e«*Ö5˜Ø ™8 u¡xÕ/Ü",Ð-HÓ"IÐIó 6ñ	 .ñ %-¨U£OÑ!�Ø—L‘L Ø&.Ø',Ø)0ð !ð 2�ô �t“9 “>Ø�HÜ˜“Y !“^Ø Ÿ<™<¨°wÀ±{ÀaÑ6GÑ0HÈ1Ñ0L˜<ÐMÐMà!�BÜ"¤3 r£7ž^˜Ø�<Ü!.¨r°e±hÓ!?šBñ ,ð !Ÿ<™<¨˜<Ð3Ð3r,   c                 ó   • U$ r    r‰   )r!   rW   r½  ra   rÒ  s        r)   Úimpl_axis_empty_tupleÚNDUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.impl_axis_empty_tupleí  s	   € ð
 �r,   c                 ó*   >• U R                  UTX45      $ r    )r„  )r!   rW   r½  ra   rÒ  rï  s        €r)   Úimpl_axis_noneÚGDUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.impl_axis_noneô  s   ø€ ð
 —|‘| E¨8°UÓDÐDr,   ©r   NN)r  r  r	   rm  r:   r   r  rn  ÚUniTuplera   ÚIntegerrp  rI   r   rs  r!   r©   r„   r¼   rÇ  r   r   rõ   r¢  ÚOmittedÚIntegerLiteral)r!   rW   r½  ra   rÒ  r!  Úaxis_int_tupleÚaxis_empty_tupleÚ	axis_nonerÙ  ré  rð  ró  rö  rï  rÄ  rÌ  rÉ  rÕ  r©   rÖ  r×  rè  r—  r‘  r’  r˜  rØ  r(   s                 @@@@@@@@@@@@@@€r)   Ú	ol_reduceÚ/DUFunc._install_ufunc_reduce.<locals>.ol_reduceí  s¶  ÿþ€ ô �MŠMÐ@Ü#)×#IÑ#IòKô ˜e¤U§[¡[×1Ñ1ØE�Ü×+Ò+¨CÓ0Ð0ä'¨¬e¯n©nÓ=÷ 6Ü˜4Ÿ:™:¤u§}¡}Ó5ð ä)¨$´·±Ó<×OÄÀTÃÈaÁÐÜ×+Ò+¨DÓ1ˆIà ŸJ™J×/Ñ/°4Ð7ˆMØŸ™×,Ñ,ˆJð ×#×#®¼3¸t»9Àq»=Ø.¨z¨lð ;Kð K�ä×+Ò+¨CÓ0Ð0à˜uŸz™zÑ*ˆHØ %§*¡*¨q¡.Ñ1ˆKÜ&-×&9Ò&9¸%×&@Ñ&@�u—{’{ÀeˆHØ—}‘}ˆHä×)Ò)¨(Ó3ˆGÜ×+Ò+¨GÓ4ˆIäô
ó ð
ô ôó ðô ñ?$ó ð?$ôB ñó ðô ñó ð÷ó ð, '(Ø'+Ø)-÷	<õ <ð@ )*Ø)-Ø+/÷	4ñ 4ð@ ,-Ø,0Ø.2ô	ð %&Ø%)Ø'+÷	Eð �z‰z˜Q‹Ö'7Ø�Þ!à,Ð,Þä ¤ u§z¡zÓ!2Ó3�Ø%Ð%Þð  ¤3 t£9¨q¡=Ñ1�Ø)Ð)Ø˜“œj¨´·±Ü05·±Ü05×0DÑ0Dð0F÷ Gñ Gð
 (Ð'ðGr,   rø  r�  )r(   r7  r8  r   s   `   r)   r>  ÚDUFunc._install_ufunc_reduceê  s,   ø€ Ü�^Š^˜HÓ%ˆä	˜˜XÓ	&ö`	(ó 
'ñ`	(r,   c                 ó`   ^ • [         R                  " U5      n[        US5      SU 4S jj5       ng )NÚreduceatc                 óô  >^^^^^^• [         R                  " S[        R                  S9  TR                  R
                  S:w  a  Sn[        R                  " U5      e[        R                  " U5      (       d  Sn[        R                  " U5      e[        R                  " U5      (       d  Sn[        R                  " U5      e[        U[        R                  [        R                  [        R                  [        45      (       d  Sn[        R                  " U5      e[        R                   " U5      mT(       d5  [        U[        R"                  5      (       d  [        R                  " S5      e[        U[        R"                  5      nU(       a  UR$                  OS	mS
TS-
  -  m[        U[        R"                  5      n[        R                   " U5      (       a  UR&                  OUmU=(       a    U(       + n	U(       a5  UR$                  S:w  a%  SUR$                   3n[        R(                  " U5      eU	(       a  SS jn
U
$ [*        U4S j5       mS	SKJn  U" UR$                  S5      mSUUUUU4S jjnU$ )Nz&ufunc.reduceat feature is experimentalrE  rG  z,reduceat only supported for binary functionsr†  z0The second argument "indices" must be array-likez"axis" must be an integerzoutput must be an arrayr   r‡  r_   z8Expect "indices" array to have at most 1 dimension. Got c                 óx   • U R                  [        R                  " U5      [        R                  " U5      UUUS9$ )N)ra   r   )r  ró   r[  )r!   rW   r$   r½  ra   r   s         r)   r^  ÚFDUFunc._install_ufunc_reduceat.<locals>.ol_reduceat.<locals>.impl_cast<  s8   € Ø Ÿ>™>¬"¯*ª*°UÓ*;Ü*,¯*ª*°WÓ*=Ø*.Ø05Ø.1ð	 *ð 3ð 3r,   c                 óŽ   >• TnSu  p4U[        U 5      :  a.  X1:w  a  [        X$X   5      nUS-  nUS-  nU[        U 5      :  a  M.  U$ )N)r   r   r_   r•  )r‹  rŒ  r�  rŽ  r�  Útup_m1s        €r)   r’  ÚHDUFunc._install_ufunc_reduceat.<locals>.ol_reduceat.<locals>.tuple_sliceD  sS   ø€ à�Ø‘�Øœ#˜c›(“lØ“xÜ)¨!°±Ó7˜Ø˜Q™˜Ø˜‘F�Að	 œ#˜c›(•lð
 �r,   )Ú"generate_getitem_setitem_with_axisÚsetitemc                 ó  >• UR                   S   nUnUS:  a  UT-  nUS:  d  UT:¼  a  [        SU ST 35      e[        UR                   X65      nT(       d  UR                   U:w  a  Sn	[        U	5      eT(       a  [        R                  " UTS9n[        U5      S:X  a  U$ Sn
[        [        U5      S-
  5       Hå  nX+   X+S-      :  aY  [        R                  " X+   X+S-      5      nTS:”  a  [        R                  " XU5      nOX   nU R                  XÓS9nT" XZX>5        OwX+   X+S-      :¼  aO  X+   n[        R                  " XU5      nTS:”  a$  T" UR                   U5      nUR                  U5      nT" XZX=5        OX+   U:¼  d  X+   S:  a  [        S5      eU
S-  n
Mç     [        R                  " US	   UR                   U   5      nTS:”  a  [        R                  " XU5      nOX   nU R                  XÓ5      nT" XZX>5        U$ )
Nr   zaxis z) is out of bounds for array of dimension z=operands could not be broadcast together with remmaped shapesrÝ  r_   rì  zInvalid value for indicesr´  )rR   rÑ  r   ró   ÚzerosrI   r¢  ÚarangeÚtaker„  Úreshape)r!   rW   r$   r½  ra   r   r–  rÈ  rR   r!  r�  rŽ  rg   Ú	arr_sliceÚ
arr_reduceÚ_sliceÚ
array_ndimÚdtÚout_noner  r’  s                   €€€€€r)   ri   ÚADUFunc._install_ufunc_reduceat.<locals>.ol_reduceat.<locals>.implT  s  ø€ Ø—]‘] 1Ñ%�à�Ø˜!“8Ø˜JÑ&�Dà˜!“8˜t zÓ1Ü$ u¨R¨Dð 15Ø5?°Lð&Bó Cð Cô & e§k¡k°4Ó<�æ C§I¡I°Ó$6ð-�Cä$ S›/Ð)æÜŸ(š( 5°Ñ3�Cô �w“< 1Ó$Ø�Jà�Üœs 7›|¨aÑ/Ö0�AØ‘z G°©E¡NÓ2Ü Ÿiši¨©
°GÀ¹E±NÓC˜Ø%¨›>Ü(*¯ª°¸DÓ(A™Ià(-©
˜IØ%*§\¡\°) \Ð%G˜
Ù ¨Õ9Ø ™ w°1©u¡~Ó5Ø%™j˜Ü$&§G¢G¨E¸Ó$=˜	Ø%¨›>Ù%0°·±¸dÓ%C˜FØ(1×(9Ñ(9¸&Ó(A˜IÙ ¨Õ8Ø ™ rÓ)¨W©Z¸!«^Ü(Ð)DÓEÐEØ˜‘F’Añ% 1ô* —i’i ¨¡¨U¯[©[¸Ñ->Ó?�Ø “>Ü "§¢¨°DÓ 9‘Ià %¡
�IØ"Ÿ\™\¨)Ó:�
Ù˜ Ô1à�
r,   rø  )r  r  r	   rm  r!   r«   rn  r   Útype_can_asarrayr:   r   rú  rû  rü  r  r   rs  r  rÇ  ra   ÚNumbaValueErrorr   rC   r  )r!   rW   r$   r½  ra   r   r!  Ú	array_arrrv  r~  r^  r  ri   r  r  r  r  r	  r’  r(   s                @@@@@@€r)   Úol_reduceatÚ3DUFunc._install_ufunc_reduceat.<locals>.ol_reduceat  sî  þ€ ô �MŠMÐBÜ#)×#IÑ#IòKð �z‰z�~‰~ Ó"ØD�Ü×+Ò+¨CÓ0Ð0ä ×1Ò1°%×8Ñ8ØE�Ü×+Ò+¨CÓ0Ð0ä ×1Ò1°'×:Ñ:ØH�Ü×+Ò+¨CÓ0Ð0ä˜d¤U§]¡]´E·M±MÜ%*×%9Ñ%9¼3ð%@÷ Añ Aà1�Ü×+Ò+¨CÓ0Ð0ä×*Ò*¨3Ó/ˆHÞ¤J¨s´E·K±K×$@Ñ$@Ü×+Ò+Ð,EÓFÐFä" 5¬%¯+©+Ó6ˆIÞ'0˜Ÿš°aˆJØ˜Z¨!™^Ñ,ˆFÜ$ W¬e¯k©kÓ:ˆKÜ '× 3Ò 3°E× :Ñ :�—’ÀˆBà&×6¨;Ô7ˆIæ˜wŸ|™|¨qÓ0ðØ%Ÿl™l˜^ð-�ä×,Ò,¨SÓ1Ð1æô3ð !Ð äôó ðõ MÙ8¸¿¹ÀYÓOˆG÷8ó 8ðt ˆKr,   rø  r�  )r(   r7  r8  r  s   `   r)   r?  ÚDUFunc._install_ufunc_reduceat  s,   ø€ Ü�^Š^˜HÓ%ˆä	˜˜ZÓ	(öz	ó 
)ñz	r,   c                 ó|  >• [         R                  " U5      (       a  U4OX4nS U 5       n[        S U 5       5      nU R                  U5      S:X  a2  U R                  (       a  SU < S3n[        U5      eU R                  " U6   [         R                  " U5      (       a  [        TU ]!  X5      $ [        TU ]   " XU46 $ )Nc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr    )r   ©r  rü   s     r)   r  ÚDUFunc.at.<locals>.<genexpr>“  s   é € Ð.ª #”&˜—+�+ªùr  c              3   ó|   #   • U  H2  n[        U[        R                  5      (       a  UR                  OUv •  M4     g 7fr    )r:   r   r  ra   r!  s     r)   r  r"  ”  s0   é € ð /Ú'- ô *4°C¼¿¹×)EÑ)E˜CŸIšIÈ3ÔNÚ'-ùs   ‚:<rƒ   r  z.at(...))	r   rs  rõ   r“   rÊ   r  r  r‘   r8  )	r(   r"   r$   r&   r~   r  r'  r!  r–   s	           €r)   r8  Ú	DUFunc.at�  s³   ø€ ä×*Ò*¨1×-Ñ-�‰t°A°6ˆÙ.©Ó.ˆÜñ /Ù'-ó/ó /ˆð ×#Ñ# KÓ0°LÓ@à�|�|ˆ|Û?CÐE�Ü" 3Ó'Ð'à×"Ò" DÑ)ô ×Ò˜q×!Ñ!Ü‘7‘:˜aÓ)Ð)ä‘7’: ¨A˜Ð/Ð/r,   c           	      ó$  • Uc   U R                   R                  R                  n[        SU R                  R
                  -   [        4[        X R                  S95      nUR                  X5        U R                  U5        U R                  U5        g)a  Constructs and installs a typing class for a DUFunc object in the
input typing context.  If no typing context is given, then
_install_type() installs into the typing context of the
dispatcher object (should be same default context used by
jit() and njit()).
NÚDUFuncTyping_)rw   Úgeneric)rÆ   ÚtargetdescrÚtyping_contextrø   r!   r„   r   rÉ   Ú_type_meÚinsert_user_functionr;  rA  )r(   rT  Ú_ty_clss      r)   r¿   ÚDUFunc._install_type¥  sz   € ð ÑØ×(Ñ(×4Ñ4×CÑCˆIÜ�¨¯©×)<Ñ)<Ñ<Ü(Ð*Ü ¯m©mÑ<ó>ˆð 	×&Ñ& tÔ5Ø×&Ñ& wÔ/Ø×#Ñ# GÕ,r,   c                 ó:  • U R                   (       aH  [        R                  " X5      nUc  g[        UR                  UR
                  -   5      S[        U5       nU R                  R                  R                  5        H  u  p4UR                  U:X  d  M  X44s  $    g)zå
Given a tuple of element-wise argument types, find a matching
signature in the dispatcher.

Return a 2-tuple containing the matching signature, and
compilation result.  Will return two None's if no matching
signature was found.
Nrƒ   )rÊ   r   Úufunc_find_matching_looprõ   ÚinputsÚoutputsrI   rÆ   rÇ   r  r~   )r(   r'  Úlooprh   rL   s        r)   r“   ÚDUFunc.find_ewise_functionµ  s�   € ð �<�<ä ×9Ò9¸$ÓLˆDØ‰|Ø!Ü §¡¨d¯l©lÑ :Ó;Ð<M¼SÀÓ=MÐNˆKØ×)Ñ)×3Ñ3×9Ñ9Ö;‰IˆCØ�x‰x˜;Õ&Ø�yÒ ñ <ð r,   c                 óÌ  • U(       a   eU R                   n[        R                  R                  X1U5      nUu  pVpx[	        U5      n	U	S:”  a  [        US[	        U5      *  5      n
O[        U5      n
U R                  U
5      u  p¼UcX  U R                  (       a  [        R                  " SU < SU< 35      eU R                  U
5        U R                  U
5      u  p¼Uc   eU	S:”  a  [        U5      nO]UR                  S:X  a7  US:”  a#  [        R                  " UR                  Xx5      /nO$UR                  /nO[        R                   " S5      eUR#                  U5        [%        U6 $ )zÄ
Implement AbstractTemplate.generic() for the typing class
built by DUFunc._install_type().

Return the call-site signature after either validating the
element-wise signature or compiling for it.
r   Nzcannot call z with types r_   ztyping gufuncs (nout > 1))r!   r   ÚNumpy_rules_ufuncÚ_handle_inputsrI   rõ   r“   rÊ   r	   rn  rî   rÅ   r¬   r   r  ro   ÚNumbaNotImplementedErrorÚextendr   )r(   r  Úkwtysr!   Ú_handle_inputs_resultÚ
base_typesÚexplicit_outputsÚndimsrV   Úexplicit_output_countr'  rh   rL   Úouttyss                 r)   r*  ÚDUFunc._type_meÉ  sL  € ö ÐˆyØ—
‘
ˆÜ '× 9Ñ 9× HÑ HØ˜5ó!"Ðà6KÑ3ˆ
 eÜ #Ð$4Ó 5ÐØ  1Ó$Ü 
Ð+B¬SÐ1AÓ-BÐ,BÐ CÓD‰Kä 
Ó+ˆKØ×,Ñ,¨[Ó9‰	ˆØ‰;ð �|�|Ü×+Ó+Û/3²Vð-=ó >ð >à×$Ñ$ [Ô1Ø×0Ñ0°Ó=‰IˆCØ‘?Ð"�?Ø  1Ó$ÜÐ*Ó+‰FØ�Z‰Z˜1‹_Ø�q‹yÜŸ+š+ c§o¡o°uÓEÐF‘àŸ/™/Ð*‘ä×1Ò1Ð2MÓNÐNØ�‰�fÔÜ˜&Ð!Ð!r,   )r˜   r„   rÊ   r½   r¼   )NFNr    )r,  N)(r„   r…   r†   r‡   r˜   ÚsetÚ_DUFunc__base_kwargsr*   r³   rË   ÚclassmethodrÒ   rÕ   Úpropertyr¶   r«   r¬   rÞ   râ   r   r©   r   rÐ   re   rò   r  r   rî   r(  r;  rA  r@  r>  r?  r8  r¿   r“   r*  rˆ   r™   r¥   s   @r)   r§   r§   ¤   sC  ø† ññ ÐAÓB€Mô
0õ
ò

ð ñó ðòð ñ.ó ð.ð ñó ðð ñó ðð ñ ó ð ð ñ!ó ð!ð ñ ó ð ð ñ#ó ð#ð ñ$ó ð$òò;õ2ò7ð> ó"ó ð"òH'ô2ô*)ô
c$ôJd(ôL	~÷@0ô*-ò ÷(&"ð &"r,   r§   )3r´   rc   r  Únumpyró   Únumbar   r   Ú
numba.corer   r   r   r   r	   Únumba.core.extendingr
   r   r   r   r   Únumba.core.typingr   Únumba.core.typing.templatesr   r   Únumba.cpython.unsafe.tupler   Únumba.np.ufuncr   Únumba.np.ufunc.ufunc_baser   r   Únumba.parforsr   r   rœ   r   Útypingr   Úllvmliter   Únumba.core.compiler_lockr   r   rž   r    ÚReduceMixinrÎ   r§   Ú	MAP_TYPESr  r‰   r,   r)   Ú<module>rT     s›   ðÛ Û Û ã ç ß BÕ B÷-õ -õ &ß CÝ 4Ý $ß AÝ (Ý 'Ý "Ý Ý Ý 9÷j=ñ j=òZô(5Ð$ô 5ôK"ˆY×"Ñ" I×$5Ñ$5°yô K"ð\ × Ñ × Ñ  Õ 'r,   