+
    :iCj                     R   ^ RI Ht ^ RIt^ RIHtHt ^ RIHt ^ RI	H
t
Ht ^ RIHt ^ RIHtHt ]! R. R O4      tR	 tR
 tR tR tR tR t ! R R]4      t]! R4      t ! R R]4      t ! R R]4      tR tR t ! R R]4      t ! R R]4      t  ! R R]4      t! ! R R]!4      t"R# )!    )
namedtupleN)Constant	IRBuilder)ir)typescgutils)global_compiler_lock)make_library_cache	NullCache_wrapper_infoc           	      P   V ! 4       pVP                   P                  WCV	P                  V	P                  V4      w  rVP	                  VP
                  R R7      ;_uu_ 4       w  ppV;_uu_ 4        V! V4       RRR4       V;_uu_ 4        V
P                  4       pVP                   P                  WJV4       V
P                  V4       RRR4       RRR4       \        Wu4       FA  w  ppVP                  VP                  VP                  V4      VP                  4      V4       KC  	  VP                  VP                  VP                  V4      VP                  4      V4       VP                  #   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; iTlikelyN)	call_convcall_functionreturn_typeargsif_elseis_ok
gil_ensureraise_errorgil_releasezipstoreaddloadstepcode)r   r   contextfuncbuilderarraysoutoffsetsstore_offset	signaturepyapienvelemsstatusretvalif_okif_errorgiloffarys   &&&&&&&&&&&&        U/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/np/ufunc/wrappers.py_build_ufunc_loop_bodyr3      s3   FE &&44W5>5J5J5>^^ULNF
 
d	3	37HxU&M X""$C))'&Ac"  
4 (Sgkk',,s"3SXX>D ) MM'++gll<8#((C  ;; UX 
4	3s<   !F/	E/	8F
>F	F/E?:FFFF%	c           	         V ! 4       p\         P                  .\        V	P                  4      ,          pVP	                  R R7      ;_uu_ 4        VP
                  P                  WC\         P                  W4      w  rV F  pVP                  V4       K  	  RRR4       V! X4       \        Wu4       FA  w  ppVP                  VP                  VP                  V4      VP                  4      V4       KC  	  VP                  VP                  VP                  V4      VP                  4      V4       XP                  #   + '       g   i     L; i)T)keep_newN)r   pyobjectlenr   err_pushr   r   decrefr   r   r   r   r   r   )r   r   r    r!   r"   r#   r$   r%   r&   r'   r)   r(   r*   _objargsr+   r,   elemr0   r1   s   &&&&&&&&&&&&       r2   _build_ufunc_loop_body_objmoder<   ,   s     FE #inn"55H 
	&	& **889>9AJ DLL  
' 
&M (Sgkk',,s"3SXX>D ) MM'++gll<8#((C  ;;' 
'	&s   AD<<E	c
                 T   aaaaa VVV3R  lp
VVV3R lp\        WWSSSSSWxV	R7      # )c            	         < \        SS4       U Uu. uF%  w  rVP                  SP                  V 4      4      NK'  	  pp pV# u upp i N)r   load_directr   )r0   r1   r*   r#   r"   r%   s      r2   r   "build_slow_loop_body.<locals>.loadN   sH    !$Wf!57!5XS c!23!5 	 77s   +Ac                 J   < SP                  V SP                  S4      4       R # r?   )store_directr   )r,   r"   r$   r&   s   &r2   r   #build_slow_loop_body.<locals>.storeS   s    l!;<    r)   r3   )r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r   r   s   &&fffff&&&  r2   build_slow_loop_bodyrH   L   s0    
= "$wgv"%wi&)+ +rE   c                    aaaaaaaa V P                  SV	4      pSP                  WV	4      oVVVVVV3R  lpVVVVV3R lp\        WWSSSSSSV	S4      # )c            	        < \        SS4       U Uu. uF%  w  rVP                  SP                  V 4      4      NK'  	  pp p\        VS
P                  4       UUu. uF  w  r4S	P	                  WCS4      NK  	  pppV# u upp i u uppi r?   )r   r@   r   r   from_native_value)r0   r1   r*   vtr#   r"   env_managerr%   r(   r'   s        r2   r   !build_obj_loop_body.<locals>.load`   s     "%Wf!57!5XS c!23!5 	 7 !	797TQ (({;7 	 979s   +A:B c                 v  < \         P                  ! SV 4      pSP                  VR R7      ;_uu_ 4        SP                  SP                  V 4      pVP
                  e   Q hSP                  VP                  SP                  S4      4       SP                  V 4       RRR4       R#   + '       g   i     R# ; ir   )
r   is_not_nullif_thento_native_valuer   cleanuprC   valuer   r9   )r,   r   nativer"   r$   r(   r'   r&   s   &  r2   r   "build_obj_loop_body.<locals>.storei   s    ##GV4 __U4_00**9+@+@&IF>>)))V\\7<<+EFLL  1000s   A)B''B8	)get_env_bodyget_env_managerr<   )r    r!   r"   r#   r$   r%   r&   r'   r(   envptrr)   env_bodyr   r   rN   s   &&fffffff&&   @r2   build_obj_loop_bodyr\   [   sb    ##GV4H''v>K ! ! *$wg*0#w*3VUD DrE   c                 J   aaa VV3R  lpVV3R lp\        WWVSSWVWyV
R7      # )c                  R   < S U u. uF  p V P                  S4      NK  	  pp V# u up i r?   )load_aligned)r1   r*   r#   inds     r2   r   "build_fast_loop_body.<locals>.load}   s8    "$"S !!#&" 	 $$s   $c                 ,   < SP                  V S4       R # r?   )store_aligned)r,   r`   r$   s   &r2   r   #build_fast_loop_body.<locals>.store   s    &#&rE   rF   rG   )r    r!   r"   r#   r$   r%   r&   r'   r`   r(   r)   r   r   s   &&&ff&&&f&&  r2   build_fast_loop_bodyre   {   s.    
' "$wgv"%wi&)+ +rE   c                |   \        V\        4      '       g   Q h\        P                  ! ^4      p\        P                  ! V4      p\        P                  ! V4      pVP                  \        P                  4      p	\        P                  ! V	4      p
\        P                  ! \        P                  ! 4       WW.4      pVP                  4       P                  R4      pVP                  R4      pV'       dU   VP                  P                  \        P                  \        P                  .\!        VP"                  4      ,          4      pM0VP                  P                  VP$                  VP"                  4      p\        P&                  ! WVR7      pVP(                  P+                  R4       \        P&                  ! WRVP,                  ,           4      pVP"                  w  ppppRVn        RVn        RVn        R	Vn        \/        VP1                  R
4      4      pVP3                  VP4                  4      pVP6                  pVP9                  VP;                  VP<                  V4      4      pVP9                  VRR7      p. p\?        VP"                  4       F%  w  ppVPA                  \C        VVVVVV4      4       K'  	  \C        VVVV\!        V4      VP$                  4      p. pVPE                  \        P                  ^ 4      pV F=  p \F        PH                  ! VV	4      p!VPA                  V!4       VPK                  VV!4       K?  	  \F        PH                  ! VV	4      p"VPK                  VV"4       \F        PL                  p#V F  p$VPO                  V#V$PP                  4      p#K!  	  VPS                  V4      p%V'       dq   V%PU                  4       p&\F        PV                  ! VVV	R7      ;_uu_ 4        \Y        WVVVVV"VV%VV4       RRR4       V%P[                  V&4       VP]                  4        MVP_                  V#4      ;_uu_ 4       w  p'p(T';_uu_ 4        \F        PV                  ! VVV	R7      ;_uu_ 4       p)\a        WVVVVV"VV)Pb                  V%VR7       RRR4       RRR4       T(;_uu_ 4        \F        PV                  ! VVV	R7      ;_uu_ 4        \e        WVVVVV"VV%VR7
       RRR4       RRR4       RRR4       VP]                  4        ?VPg                  V4       VPi                  V 4       \k        VVVP,                  R7      #   + '       g   i     ELP; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i)zm
Wrap the scalar function with a loop that iterates over the arguments

Returns
-------
(library, env, name)
ufunc_wrapper namealwaysinlinez
__ufunc__.r   dimsstepsdataentry	loopcountintpNrF   libraryr)   rj   )6
isinstancestrr   IntTypePointerTypeget_value_typer   rr   FunctionTypeVoidTypecodegencreate_librarycreate_ir_moduler   get_function_typer6   r7   r   r   Function
attributesr   rj   r   append_basic_blockget_env_namefndescenvironmentr   declare_env_globalmodule	enumerateappend	UArrayArgget_constantr   alloca_oncer   true_bitand_is_unit_stridedget_python_apir   	for_ranger\   r   ret_voidr   re   indexrH   add_ir_moduleadd_linking_libraryr   )*rt   r    fnamer'   objmodecresbyte_t
byte_ptr_tbyte_ptr_ptr_tintp_t
intp_ptr_tfnty
wrapperlibwrapper_module	func_typer!   wrapperarg_argsarg_dims	arg_stepsarg_datar"   envnamer)   rZ   rp   r#   itypr$   r%   zero_pr&   unit_stridedr1   r(   r/   r   
is_stridedloops*   &&&&&&                                    r2   build_ufunc_wrapperr      s|    eS!!!!ZZ]F'J^^J/N##EJJ/F'J??2;;=>+5+C DD "11/BJ004N%%77NNU^^,s9>>/BBD	 %%77!!9>>3	 ;;~u=DOO'kk.tyy0HIG.5ll+Hh	8HMHMINHM227;<G ""4;;/G


C\\'44W^^WMNF XK8I FINN+3i(Iq#NO , GWh	3v;))+C G

A.D0qdA 
 &&w7LMM$%##L||L#2E2EF  ""7+E w	??wWi @
 	# __\**.K
 &&w	GG4(wW$iU" H ! &&w	GG(wW$i" H  +$ 	 ^,""7+7<<HHC @?? HG ! HG  +*sx   /UV+"U2	7 UU2	V+1"V	V(V	0V+U	U/*U2	2V=V+VV	V(#V++V;	c                   >   a  ] tR t^t o R tR tR tR tR tRt	V t
R# )r   c                   Wn         W n        W`n        V P                   P                  \        P
                  V4      pV P                  P                  VP                  W7.4      4      pVP                  V4      p	V P                  P                  VV	P                  4       4      V n        V P                   P                  V	4      p
V P                   P                  \        P
                  V
4      V n        V P                  P                  WG.4      pV P                  P                  V4      V n        VP                  R V P                  V P                  4      V n        W n        R# )z==N)r    r"   fe_typer   r   rr   r   gepget_data_typebitcast
as_pointerdataptrget_abi_sizeofabisizer   icmp_unsignedr   )selfr    r"   r   rm   r   r   offsetoffseted_args	data_typesizeofoffseted_steps   &&&&&&&     r2   __init__UArrayArg.__init__   s   **5::q9))'++dH*EF))'2	||++M,5,@,@,BD,,Y7||00VD((9LL%%m4	&44T59\\499 NrE   c                    \         P                  ! V P                  V P                  V4      pV P                  P                  V P                  V P                  V4      # )zU
Generic load from the given *byteoffset*.  load_aligned() is
preferred if possible.
)r   pointer_addr"   r   r    unpack_valuer   )r   
byteoffsetptrs   && r2   r@   UArrayArg.load_direct  sA    
 !!$,,jI||((t||SIIrE   c                    V P                   P                  V P                  V.4      pV P                  P	                  V P                   V P
                  V4      # r?   )r"   r   r   r    r   r   )r   r`   r   s   && r2   r_   UArrayArg.load_aligned  sA     llt||cU3||((t||SIIrE   c                    \         P                  ! V P                  V P                  V4      pV P                  P                  V P                  V P                  W4       R # r?   )r   r   r"   r   r    
pack_valuer   )r   rU   r   r   s   &&& r2   rC   UArrayArg.store_direct  s<    !!$,,jIdllEGrE   c                    V P                   P                  V P                  V.4      pV P                  P	                  V P                   V P
                  W4       R # r?   )r"   r   r   r    r   r   )r   rU   r`   r   s   &&& r2   rc   UArrayArg.store_aligned  s<    llt||cU3dllEGrE   )r   r"   r    r   r   r   r   N)__name__
__module____qualname____firstlineno__r   r@   r_   rC   rc   __static_attributes____classdictcell____classdict__s   @r2   r   r      s(     "JJHH HrE   r   gufc                      a  ] tR tRt o R t]R 4       t]R 4       t]R 4       t]R 4       t	]R 4       t
]R 4       tR	 tR
 tR t]R 4       tR tR tR tRtV tR# )_GufuncWrapperi%  c                   Wn         W n        W0n        W@n        V P                  P
                  \        P                  8H  V n        V'       d   \        V P                   R7      M	\        4       V n        \        V4      V n        R# )a  
The *is_parfors* argument is a boolean that indicates if the GUfunc
being built is to be used as a ParFors kernel. If True, it disables
the caching on the wrapper as a separate unit because it will be linked
into the caller function and cached along with it.
)py_funcN)r   r   sinsoutr'   r   r   r6   is_objectmodeGufWrapperCacher   cachebool
is_parfors)r   r   r   r   r   r   r   s   &&&&&&&r2   r   _GufuncWrapper.__init__&  s\     		!^^775>>I &dll;$-K 	
z*rE   c                .    V P                   P                  # r?   )r   rt   r   s   &r2   rt   _GufuncWrapper.library6  s    yy   rE   c                .    V P                   P                  # r?   )r   target_contextr   s   &r2   r    _GufuncWrapper.context:  s    yy'''rE   c                .    V P                   P                  # r?   )r    r   r   s   &r2   r   _GufuncWrapper.call_conv>  s    ||%%%rE   c                .    V P                   P                  # r?   )r   r'   r   s   &r2   r'   _GufuncWrapper.signatureB  s    yy"""rE   c                .    V P                   P                  # r?   )r   r   r   s   &r2   r   _GufuncWrapper.fndescF  s    yyrE   c                .    V P                   P                  # r?   )r   r   r   s   &r2   r)   _GufuncWrapper.envJ  s    yy$$$rE   c                `   \         P                  ! ^4      p\         P                  ! V4      p\         P                  ! V4      pV P                  P	                  \
        P                  4      p\         P                  ! V4      p\         P                  ! \         P                  ! 4       W5WR.4      pV# )   )	r   rw   rx   r    ry   r   rr   rz   r{   )r   r   r   r   r   r   r   s   &      r2   _wrapper_function_type%_GufuncWrapper._wrapper_function_typeN  sx    A^^F+

3,,UZZ8^^F+
r{{}~/9/G HrE   c                   V P                   P                  \        P                  4      pV P	                  4       pVP                  R4      pV P                  P                  V P                  P                  V P                  P                  4      pV P                  P                  p\        P                  ! WVVR7      pVP                  P                  R4       \        P                  ! WTV4      p	RV	n        V	P"                  w  rrRV
n        RVn        RVn        RVn        \'        V	P)                  R	4      4      pVP+                  VR
R7      pV P                   P-                  V4      p\/        4       pV P0                  V P2                  3 F  pV F  pV\/        V4      ,          pK  	  K   	  / pV P0                   F#  pV F  pVV9  g   K  \5        V4      VV&   K  	  K%  	  / pVP7                  4        FZ  w  ppVP+                  VP9                  VV P                   P;                  \        P                  V^,           4      .4      4      VV&   K\  	  . p\5        V P0                  4      \5        V P2                  4      ,           p\=        \?        V P@                  P"                  V P0                  V P2                  ,           4      4       FH  w  pw  pp\C        V P                   WVVVVVV4	      pV\5        V4      ,          pVPE                  V4       KJ  	  VP)                  R4      pV PG                  VV4       \H        PJ                  ! WVR7      ;_uu_ 4       pV Uu. uF  pVPM                  VPN                  4      NK   	  p pV PQ                  VVVV 4      w  p!p"\H        PR                  ! VV"V4       RRR4       VPU                  V4       VPW                  V4       V PY                  VV4       VP[                  4        VP]                  V4       VP_                  V P`                  4       R# u upi   + '       g   i     L; i)z
The LLVM IRBuilder code to create the gufunc wrapper.
The *library* arg is the CodeLibrary to which the wrapper should
be added.  The *name* arg is the name of the wrapper function being
created.
_gufunc_wrapperri   rk   weak_odrr   rl   rm   rn   ro   rp   z.returnrq   N)1r    ry   r   rr   r   r~   r   r   r   restypeargtypesllvm_func_namer   r   r   r   linkager   rj   r   r   r   r   setr   r   r7   itemsr   r   r   r   r'   
GUArrayArgr   gen_prologuer   r   get_array_at_offsetr   gen_loop_bodycbranch_or_continuebranchposition_at_endgen_epiloguer   r   r   rt   )#r   rt   rj   r   r   r   r   r   r!   r   r   r   r   r   r"   rp   r(   unique_symsgrpsymssym_mapssym_dimr   r#   step_offsetr   symr1   bbreturnr   ar   	innercallerrors#   &&&                                r2   _build_wrapper_GufuncWrapper._build_wrapperY  sy    ,,UZZ8**, 112CDNN44T[[5H5H59[[5I5IK	**{{>5AN+++nD9 %29,,/I 	G66w?@LLL<	++G4 eHHdii(Cs4y(  ) HHDG#!$WGAJ  
 MMODAq gkk(37<<3L3L6;jj67!e4= 3>'? @GAJ $ $((mc$))n4&s4>>+>+>+/88dii+?(A BMAzST\\7&;S'KC3s8#KMM#B --i8 	'5) w??4?EFv!A))$**5vDF#11'5$MIu''A	 @ 	x ) 	'5) 	n-##DLL1 G @?s   P/$P*?1P/*P//P?	c                J   V P                   '       dF   V P                  P                  4       P                  \	        V 4      4      pV P                  W!4       V# V P                  P                  V P                  P                  V P                  P                  4      pVf   V P                  P                  4       P                  \	        V 4      4      pVP                  4        V P                  W!4       V P                  P                  V P                  P                  V4       V# r?   )r   r    r|   r}   rv   r  r   load_overloadr   r'   r   enable_object_cachingsave_overloadr   wrapper_namer   s   && r2   _compile_wrapper_GufuncWrapper._compile_wrapper  s    ???--/>>s4yIJ
9   11		##TYY%=%=J !!\\113BB3t9M
002##J=

(()<)<jIrE   c                    R V P                   P                  ,           pV P                  V4      p\        W P                  VR7      # )z__gufunc__.rs   )r   mangled_namer  r   r)   r  s   &  r2   build_GufuncWrapper.build  s<    $t{{'?'??**<8
HH<
 	
rE   c                   V P                   P                  WV P                  P                  V P                  P                  V4      w  rVVP                  VP                  R R7      ;_uu_ 4        VP                  4       pV P                  P                   P                  WV4       VP                  V4       RRR4       VP                  VP                  3#   + '       g   i     L(; i)Fr   N)r   r   r'   r   r   rR   is_errorr   r    r   r   r   )r   r"   r(   r!   r   r+   r,   r/   s   &&&&&   r2   r  _GufuncWrapper.gen_loop_body  s    554>>55t~~7J7J __V__U_;;""$CLL""..wvFc" <
 {{FOO++ <;s   .ACC&	c                    R # r?    r   r"   r(   s   &&&r2   r  _GufuncWrapper.gen_prologue      rE   c                    R # r?   r'  r(  s   &&&r2   r  _GufuncWrapper.gen_epilogue  r*  rE   )r   r   r   r   r   r   r   N)r   r   r   r   r   propertyrt   r    r   r'   r   r)   r   r  r  r	   r!  r  r  r  r   r   r   s   @r2   r   r   %  s     +  ! ! ( ( & & # #     % %	R2h0 
 

, rE   r   c                   2   a  ] tR tRt o R tR tR tRtV tR# )_GufuncObjectWrapperi  c                R    \        V P                  WVV P                  V4      w  rVWV3# r?   )_prepare_call_to_object_moder    r'   )r   r"   r(   r!   r   r  r  s   &&&&&  r2   r  "_GufuncObjectWrapper.gen_loop_body  s/    78?8<8<>	 rE   c                0    VP                  4       V n        R # r?   )r   r/   r(  s   &&&r2   r  !_GufuncObjectWrapper.gen_prologue  s    ##%rE   c                <    VP                  V P                  4       R # r?   )r   r/   r(  s   &&&r2   r  !_GufuncObjectWrapper.gen_epilogue  s    $((#rE   )r/   N)	r   r   r   r   r  r  r  r   r   r   s   @r2   r/  r/    s      &$ $rE   r/  c           	          VP                   pVP                  \        P                  8X  d   \        M\
        pV! WW#WER 7      P                  4       # ))r   )r'   r   r   r6   r/  r   r!  )r   r   r   r   r   r   r'   wrapclss   &&&&&&  r2   build_gufunc_wrapperr9    sG    I''5>>9 $"  s%egrE   c           
      &   VP                   pVP                  R 4      pV P                  \        P                  4      pV P                  \        P
                  4      p	\        P                  ! V	4      p
V P                  \        P                  4      pV P                  \        P                  4      p\        P                  ! WV
WW.4      p\        P                  ! WmR4      p\        P                  ! V\        P                  ! ^4      RR7      pVP                  \        P                   V4       . p. p\#        \%        WTP&                  4      4       EF  w  pw  pp\        P                  ! WRR7      pVP)                  V4       \+        V\        P,                  4      '       Ed   V P/                  V4      pV! WVR7      p\1        V^ 4      p\1        VVP2                  4      pVP5                  VP7                  R4      VV.4      pVP5                  VP7                  R4      VV.4      pVP9                  VP:                  V4      p\<        P>                  ! \A        VP>                  4      4      p\1        VVPB                  4      p\1        VVPD                  4      pVPG                  VVVVVVV.4      p MVPI                  VV4      p VP                  V V4       VP)                  V 4       \        PJ                  ! VV 4      p!VP                  V!V4       \        PL                  ! VV!V4       EK  	  \        P                  .\O        V4      ,          p"V PP                  PS                  W\        P                  V"V4      w  p#p$VP                  V#PT                  V4       VPW                  V$4       VPY                  V4       VP[                  V4       V F#  pVPW                  VP]                  V4      4       K%  	  V#P^                  p%V%VP]                  V4      3# )	zufunc.core.returnnumba_ndarray_newr  ri   T)zfill)rU   shapestrides)0r   r   ry   r   int32rr   r   rx   voidptrr6   rz   r   get_or_insert_functionr   rw   r   r   r   r   r   r   ru   Array
make_arrayr   ndimr   _get_ptr_by_namer   rn   npdtyperv   numitemsizecallrK   is_nullr  r7   r   r   r$  r9   r  r  r   r   )&r    r"   r(   r!   r'   r   modbb_core_returnll_intll_intpll_intp_ptr
ll_voidptrll_pyobjr   fn_array_newerror_pointerobject_argsobject_pointersr   argargtyobjptraryclsarrayr   ndrl   r>  rn   rG  type_numrI  objobj_is_null
object_sigr+   r,   r  s&   &&&&&&                                r2   r1  r1    sO   
..C//0CDN ##EKK0F$$UZZ0G..)K''6J%%enn5H??8k&1&,&6 7D 11#2EGL ''AWMMMM'""M2 KO$S~~%>?<C$$WdCv&eU[[)) ''.F737EFA&D &%**-B;;u55g>tMDkk%"8"8"C#',0G??5::z:DHHS-.E  		2H7H ,,|b$.6.B CC ))%5Cc6"3oogs3k=1##G[.IK @P ..!C$44J&&44u~~zNFF MM&//=1 
LLNN>"N+ "W\\&)* " Igll=111rE   c                   ,   a  ] tR tRt o R tR tRtV tR# )r  i[  c
           	        Wn         W n        VP                  \        P                  V4      p
VP                  VP                  W:.R R7      RR7      pWn        VP                  WJ.RR7      pVP                  V4      p\        V\        P                  4      '       Ed,   V'       * p\        V4      VP                  8w  dD   \        V4      ^ 8X  d   VP                  ^8X  d   M!\        RP                  V^,           4      4      hVP                  pV Uu. uF  pV	V,          NK  	  pp. p\        V4       F_  pVP                  VVP                  \        P                  VV,           4      .RR7      pVP                  V4      pVP                  V4       Ka  	  V'       d   \         M\"        pV! VP$                  VVVVVR7      V n        R	# V'       d"   \        RP                  Wu^,           4      4      h\)        W}R7      V n        R	# u upi )
zdata.ptrri   rn   zcore.step.ptrz.type and shape signature mismatch for arg #{0}zstep.ptrrG  rD  	core_step	as_scalarr=  r>  z2scalar type {0} given for non scalar argument #{1}rG  strideN)r    r"   r   r   rr   r   r   rn   ru   rB  r7   rD  	TypeErrorformatranger   _ArrayAsScalarArgLoader_ArrayArgLoaderrG  _loader_ScalarArgLoader)r   r    r"   r   rm   r   r  r   r  r  r   rn   core_step_ptrrd  re  rD  r  r=  r>  jstepptrr   ldclss   &&&&&&&&&&             r2   r   GUArrayArg.__init__\  s    %%ejj!4||GKKhZKH!'  )	E8/JLL/	c5;;'' I 4yCHH$t9>chh!m # %++16!a%=: : 88D)-.AWQZZE.G4[!++e'.';';EJJ<G!O(M 'N+5 & 7 ||G,t$ ! " -)  !syy&*+4+4',)02DL  !006sE0BD D+#HDL5 /s   Hc                |    V P                   P                  V P                  V P                  V P                  VR 7      # ))r    r"   rn   r`   )rm  r   r    r"   rn   )r   r`   s   &&r2   r  GUArrayArg.get_array_at_offset  s3    ||  t||&*iiS ! : 	:rE   )rm  r"   r    rn   N)r   r   r   r   r   r  r   r   r   s   @r2   r  r  [  s     9Iv: :rE   r  c                   0   a  ] tR tRt o RtR tR tRtV tR# )rn  i  z
Handle GFunc argument loading where a scalar type is used in the core
function.
Note: It still has a stride because the input to the gufunc can be an array
      for this argument.
c                    Wn         W n        R # r?   rf  )r   rG  rg  s   &&&r2   r   _ScalarArgLoader.__init__  s    
rE   c                    VP                  W2P                  W@P                  4      .4      pVP                  VVP	                  V P
                  4      P                  4       4      pVP                  V4      # r?   )r   mulrg  r   r   rG  r   r   )r   r    r"   rn   r`   dptrs   &&&&& r2   r   _ScalarArgLoader.load  s[    {{4++c;;"?!@At&44TZZ@KKMO||D!!rE   rf  N)	r   r   r   r   __doc__r   r   r   r   r   s   @r2   rn  rn    s     " "rE   rn  c                   6   a  ] tR tRt o RtR tR tR tRtV t	R# )rl  i  z<
Handle GUFunc argument loading where an array is expected.
c                N    Wn         W n        W0n        W@n        WPn        W`n        R # r?   rc  )r   rG  rD  rd  re  r=  r>  s   &&&&&&&r2   r   _ArrayArgLoader.__init__  s     
	""
rE   c           
     >   \         P                  ! V P                  V P                  R R7      pVP	                  V4      pV! W4      p\
        P                  ! VVVP                  V P                  V4      4      pV P                  W4      w  rVP                  VP                  V P                  4      4      pVP                  VVP                  VVP                  P                  4      V	V
VP!                  \         P"                  V4      RR7       VP%                  4       # )A)rG  rD  layoutN)rn   r=  r>  rI  meminfo)r   rB  rG  rD  rC  r   r   rz  rd  _shape_and_stridesr   r   populate_arrayr   rn   typer   rr   	_getvalue)r   r    r"   rn   r`   arytyprZ  r[  offseted_datar=  r>  rI  s   &&&&&       r2   r   _ArrayArgLoader.load  s    4::DIIcJ##F+w(++G,0,3KK8;-=>
 00B))'*?*?

*KLu$+OOM49JJOO%E%*'.(/(<(<UZZ=E)G'+ 	 	-   rE   c                    \         P                  ! W P                  4      p\         P                  ! W P                  4      pW43# r?   )r   
pack_arrayr=  r>  )r   r    r"   r=  r>  s   &&&  r2   r  "_ArrayArgLoader._shape_and_strides  s2    ""7JJ7$$Wll;~rE   )re  rd  rG  rD  r=  r>  N)
r   r   r   r   r}  r   r   r  r   r   r   s   @r2   rl  rl    s     !0 rE   rl  c                   *   a  ] tR tRt o RtR tRtV tR# )rk  i  z
Handle GUFunc argument loading where the shape signature specifies
a scalar "()" but a 1D array is used for the type of the core function.
c                    VP                  \        P                  ^4      pVP                  \        P                  ^ 4      p\        P                  ! W#.4      p\        P                  ! W$.4      pWV3# )   )r   r   rr   r   r  )r   r    r"   oner   r=  r>  s   &&&    r2   r  *_ArrayAsScalarArgLoader._shape_and_strides  sZ    ""5::q1##EJJ2""7E2$$Wf5~rE   r'  N)r   r   r   r   r}  r  r   r   r   s   @r2   rk  rk    s     
 rE   rk  rs   )#collectionsr   numpyrF  llvmlite.irr   r   llvmliter   
numba.corer   r   numba.core.compiler_lockr	   numba.core.cachingr
   r   r   r3   r<   rH   r\   re   r   objectr   r   r   r/  r9  r1  r  rn  rl  rk  r'  rE   r2   <module>r     s    "  +  % 9 < ?,FG8@+D@+lI^&H &HR %U+xV xv$> $"]2@>: >:B"v "((f (Vo rE   