+
    :i՛                        ^ RI t ^ RIt^ RIHt ^ RIHtHtH	t	HtH
t
HtHt ^ RIHtHtHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIt^ RIt^ R	IHt  ! R
 R]4      t]R 4       t R t! ! R R]4      t"RR lt#R t$]! ]#4      R 4       t%R# )    N)ir)typestypingutilsr   configir_utilsregistry)CallableTemplate	signatureinfer_globalAbstractTemplate)lower_builtin)register_jitableNumbaValueError)literal_unroll)numpy_supportc                   0   a  ] tR t^t o RtR tR tRtV tR# )StencilFuncLowererzMCallable class responsible for lowering calls to a specific StencilFunc.
    c                    Wn         R # NstencilFunc)selfsfs   &&T/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/stencils/stencil.py__init__StencilFuncLowerer.__init__   s        c                    V P                   P                  VP                  / VP                  R 4      pVP	                  W%P
                  W44      pVP                  VP                  .4       V# r   )r   compile_for_argtysargsreturn_typecall_internalfndescadd_linking_libslibrary)r   contextbuildersigr"   cresress   &&&&&  r   __call__StencilFuncLowerer.__call__   sX    22388ROOT+##G[[#D  $,,0
r   r   N)	__name__
__module____qualname____firstlineno____doc__r   r-   __static_attributes____classdictcell____classdict__s   @r   r   r      s      r   r   c                    V P                   p\        V4       Fn  pV P                  VP                  8w  d   \        R 4      hVP                   p\	        \        V4      4       F!  pW%,          WE,          8  g   K  \        R4      h	  Kp  	  R# )z\Secondary stencil array does not have same number  of dimensions as the first stencil input.zaSecondary stencil array has some dimension smaller the same dimension in the first stencil input.N)shaper   ndim
ValueErrorrangelen)ar"   ashapeargargshapeis   &*    r   !raise_if_incompatible_array_sizesrC   $   s{    WWF d#66SXX J K K99s6{#Ay8;&  "2 3 3 $ $r   c                ^    \        V P                  V,           V P                  V,           4      # )zRCalled by stencil in Python mode to add the loop index to a
user-specified slice.
)slicestartstop)	the_sliceaddends   &&r   slice_additionrJ   ;   s#     6)9>>F+BCCr   c                   d   a  ] tR t^At o Rt^ tR tR tR tR t	R t
R tR tR	 tR
 tR tRtV tR# )StencilFuncz8
A special type to hold stencil information for the IR.
c                   \        V 4      P                  V n        \        V 4      ;P                  ^,          un        Wn        W n        W0n        . V n        \        P                  P                  V n
        \        P                  P                  V n        V P                  V P                  4       V P
                  P                  R4      V n        / V n        \#        V 4      V n        R# )   neighborhoodN)type
id_counterid	kernel_irmodeoptionskwsr	   
cpu_targettyping_context
_typingctxtarget_context
_targetctx_install_typegetrO   _type_cacher   	_lower_me)r   rS   rT   rU   s   &&&&r   r   StencilFunc.__init__H   s    t*''T
""	 #--<<"--<<4??+ LL,,^<+D1r   c           
        . pVP                  4        EF  w  rVVP                  pVP                  p. p	VP                   EF  p
\	        V
\
        P                  4      '       Ed[   VP                  V4       \        V4      ^8X  di   \
        P                  ! WsV4      p\
        P                  ! Wr^ ,          V4      pV	P                  \
        P                  ! WV
P                  V4      4       K  . pV F#  p\
        P                  ! W~V4      pW.,          pK%  	  VP                  RV4      p\
        P                  P                  W4      pV	P                  \
        P                  ! VVV4      4       \
        P                  ! WsV4      p\
        P                  ! VVV
P                  V4      pV	P                  V4       EK  V	P                  V
4       EK  	  Wn        EK  	  V# )z
Find return statements in the IR and replace them with a SetItem
call of the value "returned" by the kernel into the result array.
Returns the block labels that contained return statements.
stencil_index)itemsscopelocbody
isinstancer   Returnappendr=   VarSetItemvalueredefineExprbuild_tupleAssign)r   blocks
index_varsout_name
ret_blockslabelblockrd   re   new_bodystmtrvarivarvar_index_varsone_var	index_vars_index_var
tuple_callsis   &&&&               r   replace_return_with_setitem'StencilFunc.replace_return_with_setitemX   sh    
"LLNLEKKE))CH

dBII..%%e,:!+!vves;!vve]C@ 

4tzz3(OP *,'1G(*us(CI*k9N (2 ',nn_c&J%'WW%8%8%M
 		*k3(OP!vves;  ZZk4::sK +OOD)5 #6 "J? +@ r   c                p   / p. p	\         P                  ^8  d-   \        RW44       \        P                  ! VP
                  4       Vf   Rp
M/Rp
\        V4      V8w  d   \        R\        V4      V3,          4      h\        P                  ! VP
                  4      p\        4       pVP
                  P                  4        E
F  pVP                  pVP                  p. pVP                   E	F  p\        V\        P                   4      '       d   \        VP"                  \        P$                  4      '       dx   \         P                  ^8  d6   \        RVP&                  P(                  VP"                  P"                  4       VP"                  P"                  VVP&                  P(                  &   \        V\        P                   4      '       du   \        VP"                  \        P*                  4      '       dK   VP"                  P,                  R9   d0   VP"                  P"                  P(                  VP.                  9   gF   \        V\        P0                  4      '       d1   VP&                  P(                  VP.                  9   d   \        R4      h\        V\        P                   4      '       Ed	   \        VP"                  \        P*                  4      '       Ed   VP"                  P,                  R9   Ed   VP"                  P"                  P(                  VP.                  9   Ed   VP"                  P"                  P(                  V9  Edl   VP"                  P,                  R8X  d   VP"                  P2                  pMVP"                  P4                  pVP7                  VP"                  P"                  P(                  4       V
'       dx   \9        VR4      '       g   Q hVP(                  V9   d   WVP(                  ,          .,          p	M7VP(                  V9   d   WVP(                  ,          .,          p	M\        R	4      hV^8X  Ed   \        P:                  ! W^ ,          V4      pVP=                  R
V4      pVVP(                  ,          p\        V\>        P@                  PB                  4      '       Ed|   VP=                  RV4      p\D        PF                  ! \H        4      p\>        PJ                  PM                  V4      pVVVP(                  &   \        PN                  ! RVV4      pVPQ                  \        P                   ! VVV4      4       \        P*                  PS                  VVV.RV4      pVPU                  V PV                  V\>        PX                  ./ 4      VV&   VPQ                  \        P                   ! VVV4      4       VPQ                  \        P                   ! \        P*                  P[                  VP"                  P"                  VV4      VP&                  V4      4       EKN  \        P*                  P]                  \^        P6                  VVV4      pVPQ                  \        P                   ! VVV4      4       VPQ                  \        P                   ! \        P*                  P[                  VP"                  P"                  VV4      VP&                  V4      4       EK  . p. pVP=                  R
V4      p. p. p VVP(                  ,          p\a        V4       EF  p!VP=                  RV4      pVPQ                  \        P                   ! \        P$                  ! V!V4      VV4      4       VV.,          p\        P:                  ! WV!,          V4      pVV.,          pVP=                  RV4      pV V.,          p VP=                  RV4      p"\        P*                  P[                  VVV!,          V4      p#VPQ                  \        P                   ! V#V"V4      4       \        V\>        Pb                  4      '       d   VV!,          p$M	VR,          p$\        V$\>        P@                  PB                  4      '       Ed   VP=                  RV4      p\D        PF                  ! \H        4      p\>        PJ                  PM                  V4      pVVVP(                  &   \        PN                  ! RVV4      pVPQ                  \        P                   ! VVV4      4       \        P*                  PS                  VV"VV!,          .RV4      pVPU                  V PV                  V$\>        PX                  ./ 4      VV&   VPQ                  \        P                   ! VVV4      4       EK}  \        P*                  P]                  \^        P6                  V"VV!,          V4      pVPQ                  \        P                   ! VVV4      4       EK  	  \        P*                  Pe                  V V4      p%VPQ                  \        P                   ! V%VV4      4       VPQ                  \        P                   ! \        P*                  P[                  VP"                  P"                  VV4      VP&                  V4      4       E	K  VPQ                  V4       E	K  	  VVn        E
K  	  V
'       Ed   \a        V4       U&u. uF  p&^ ^ .NK	  	  pp&\        V	4      ^ 8X  d   \        R4      hV	 EF  p'\        V'\f        4      '       g   \        V'\h        4      '       d   \a        \        V'4      4       F  p(V'V(,          p)\        V)\        P:                  4      '       d%   V)P(                  V9   d   VV)P(                  ,          p)\        V)\j        4      '       dK   \m        VV(,          ^ ,          V)4      VV(,          ^ &   \o        VV(,          ^,          V)4      VV(,          ^&   K  \        R4      h	  \        V'4      p*Ml\        V'\j        4      '       dL   \m        V^ ,          ^ ,          V'4      V^ ,          ^ &   \o        V^ ,          ^,          V'4      V^ ,          ^&   ^p*M\        R4      hV*V8w  g   EK  \        R4      h	  WL3# u up&i )z
Transforms the stencil kernel as specified by the user into one
that includes each dimension's index variable as part of the getitem
calls.  So, in effect array[-1] becomes array[index0-1].
add_indices_to_kernelTFD%d dimensional neighborhood specified for %d dimensional input arrayzremembering in const_dictz?Assignments to arrays passed to stencil kernels is not allowed.getitemnamezDstencil kernel index is not constant, 'neighborhood' option requiredrb   rJ   const_indexind_stencil_index:NNNz=Stencil kernel with no accesses to relatively indexed arrays.zCstencil kernel index is not constant,'neighborhood' option requiredz/Non-tuple or non-integer used as stencil index.z2Stencil index does not match array dimensionality.)setitemstatic_setitem)r   static_getitem )8r   DEBUG_ARRAY_OPTprintr   dump_blocksrq   r=   r   get_tuple_tablesetvaluesrd   re   rf   rg   r   rp   rl   Consttargetr   rn   op	arg_namesrk   indexr}   addhasattrrj   rm   r   misc	SliceTypenumbanjitrJ   	functions
DispatcherGlobalri   callget_call_typerY   intpr   binopoperatorr<   
ConstSizedro   tuplelistintminmax)+r   kernelindex_namesr:   rO   standard_indexedtypemap	calltypes
const_dictkernel_constsneed_to_calc_kerneltuple_tablerelatively_indexedrv   rd   re   rw   rx   stmt_index_varr}   tmpvarstmt_index_var_typsa_varsa_funcsa_func_typg_saslice_addition_callacc_callrr   sum_resultsr~   const_index_varsind_stencilsdim
getitemvargetitemcallone_index_typr   _r   rB   te	index_lens+   &&&&&&&&                                   r   r   !StencilFunc.add_indices_to_kernel   s	    
!!Q&)4>  /"&"'< D(% 'G'*<'8$&?'@ A A ..v}}= U]]))+EKKE))CH

tRYY//tzz28844--294;;;K;K"jj..0 48::3C3CJt{{//0bii00&tzz277;; JJMM-JJ JJ,,11V5E5EEtRZZ00 KK,,0@0@@) +L M MtRYY//&tzz277;; JJMM-JJ JJ,,11V5E5EE JJ,,119IIzz}}	1)-)9)9)-)=)= '**4::+;+;+@+@A +&~v>>>>)..+=).:M:M.N-OOM+00J>)9L9L.M-NNM"1 3K #L L qy
 %'FF5a.#$F	!&!E-4^5H5H-I* &&8%**:N:NOO%*^^4Dc%JF&+jj&@G*///*D*DW*MK3>GFKK0#%99-=w#LD$OOBIIdFC,HI24'',,vXaGbdfhk2l/=H=V=VW[WfWfi{  ~C  ~H  ~H  iI  KM  >NI&9:$OOBII6I6SV,WX$OOBII+-77??4::;K;KVUX+Y+/;;-= > (*ww}}X\\>5>(EH$OOBIIh,LM$OOBII+-77??4::;K;KVUX+Y+/;;-= > &(
&(&+nn_c&J+-(')-4^5H5H-I* $);C%*^^M3%GF$OOBIIbhhsC6H6<c-C D,8,(*u#6F(LI&9+5J%*^^4G%MF(VH4L).	3)GJ*,''//.7G7Lc+SK$OOBIIk:s,ST)*<e>N>NOO0B30G0B10E  *-9M9MNN).8H#)N*/**^*D.3oo.H.H.Q7B 4')yy1A7C'P (		$0L M68ggll6JXbcfXgKhjlnq6r 3ALAZAZ[_[j[jmz  }B  }G  }G  mH  JL  BM	*= > (		:MvWZ0[ \+-77==z9CC#,O (		(FC0P QG $/J &(WW%8%8s%K
 		*k3(OP 		"$''//$**2B2B;s"S"&++c)3 4 OOD)G #H "EJQ ,T  ,1;7;aQqE;L7=!Q&% 'C D D 'eU++z%/F/F"3u:."1X%b"&&11bgg6K!+BGG!4B%b#..14\!_Q5G1LLOA.14\!_Q5G1LLOA."1!A#B B / !$E
Is++),\!_Q-?)GLOA&),\!_Q-?)GLOA& !I)IK K$)LN N- '2 11= 8s   4r3c                   \         P                  ^8  d7   \        RV4       \        P                  ! V P
                  P                  4       \        V^ ,          \        P                  P                  4      '       g   \        R4      h^ RIHp VP                  V P                  V P                   V P
                  VR/ 4      w  r4rV\        V\        P                  P                  4      '       d   \        R4      h\        P                  P                  WA^ ,          P"                  V^ ,          P$                  4      pWsV3# )rN   get_return_typezGThe first argument to a stencil kernel must be the primary input array.)typed_passesNz:Stencil kernel must return a scalar and not a numpy array.)r   r   r   r   r   rS   rq   rg   r   npytypesArrayr   
numba.corer   type_inference_stagerY   r[   r:   layout)r   argtysr   r   r#   r   r   real_rets   &&      r   r   StencilFunc.get_return_typeK  s    !!Q&#V,  !6!67&)U^^%9%9::! #@ A A 	,-9-N-N.*i k5>>#7#788!LN N >>''AY^^5;AY5E5EG9--r   c           	         \        R\        V P                  4      ,           \        3\	        W P
                  R7      4      pVP                  W4       R# )z]Constructs and installs a typing class for a StencilFunc object in
the input typing context.
StencilFuncTyping_)keygenericN)rP   strrR   r   dict_type_meinsert_user_function)r   	typingctx_ty_clss   && r   r\   StencilFunc._install_typed  sC     +477|$(*mm<> 	&&t5r   c                ^    V P                   V,          w  rVrxV P                  ! WdVWx.VO5!  p	V	# r   )r^   _stencil_wrapper)
r   r   kwtysr#   sigretr   resultr   r   new_funcs
   &&&&&     r   r!   StencilFunc.compile_for_argtysn  s=    *.*:*:6*B'G(()0F>DFr   c                p   V P                   ed   \        V P                   4      V^ ,          P                  8w  d9   \        R\        V P                   4      V^ ,          P                  3,          4      hTpRpRpRV9   d#   W2R,          3,          pVR,          pVR,          pRV9   d   W2R,          3,          pVR,          pW0P                  9   d   V P                  V,          w  p  pV# V P                  V4      w  rp
\        V.VO5!  pRP                  R	P                  V P                  P                  4      V4      p/ p\        W4       VR
,          pVP                  \        P                  ! V4      R7      pV P                  P!                  V P"                  W3.4       WW3V P                  V&   V# )z
Implement AbstractTemplate.generic() for the typing class
built by StencilFunc._install_type().
Return the call-site signature.
Nr    outz
, out=NonerO   z, neighborhood=Nonez*def __numba_dummy_stencil({}{}):
    pass
,__numba_dummy_stencil)pysig)rO   r=   r:   r   r^   r   r   formatjoinrS   r   execreplacer   pysignaturer[   insert_func_defnr_   )r   r   r   argtys_extra	sig_extrar   _sigr   r   r   r   r*   
dummy_textdct
dummy_funcs   &&&            r   r   StencilFunc._type_meu  s    )!!"fQinn4! #C#&t'8'8#96!9>>"J#K L L 	E>5\O+L%I5\FU">244L..I +++"..|<OT1aK)-)=)=f)E&I0<0DKK!9!9:IG
Z01
kk 1 1* =k>((4>>4*N)OP*-w)J&
r   c                   / pVP                   ! 4       p/ Vn        VP                  P                  4        F  w  rV\         P                  ! VP                  V,          4      p. Vn        VP                  V,          P                   FF  p\         P                  ! V4      p	VP                  P                  V	4       W9   g   K<  W(,          W9&   KH  	  WtP                  V&   K  	  WC3# )z
Create a copy of a given IR along with its calltype information.
We need a copy of the calltypes because copy propagation applied
to the copied IR will change the calltypes and make subsequent
uses of the original IR invalid.
)copyrq   rc   deepcopyrf   ri   )
r   r   r   copy_calltypeskernel_copyblock_labelrv   	new_blockrx   scopys
   &&&       r   copy_ir_with_calltypes"StencilFunc.copy_ir_with_calltypes  s     ggi$&IIOO$5 [bii&<=IIN		+.33
 d+%%e,$,5ON) 4 /8{+ %6 ,,r   c           
        V P                  V P                  V4      w  rx\        P                  ! VP                  4       VP
                  ^ ,          p	\        P                  ! VP                  V4      w  r\        P                  ! VP                  4      p\        P                  ! VP                  V
VVV4       RV9   d   \        R4      h\        P                  ! RV4      p\        P                  ^8  d   \        RW4       V^ ,          p\        P                  ^8  dL   \        RW3P                  \        VP                  4      V4       \        P                   ! VP                  4       R\#        \%        V4      4      P'                  RR4      : RV P$                  : 2p. p\)        VP*                  4       F4  p\        P                  ! R	\-        V4      ,           V4      pVV.,          pK6  	  \        P                  ! RV4      p\        P                  ! R
V4      pRpVe   VRP/                  V4      ,          pR
\1        V P2                  4      9   d   VRP/                  V4      ,          pV P4                  P7                  R. 4      pV	V9   d   \        R4      h\9        \;        V4      \;        VP
                  4      ,
          4      ^ 8w  d   \        R4      hV P=                  VVVP*                  V P>                  VWH4      w  ppV P>                  f   VV n        \        P                  ^8  d,   \        R4       \        P                   ! VP                  4       V PA                  VP                  VV4      p\        P                  ^8  d-   \        RV4       \        P                   ! VP                  4       RP/                  VRPC                  VP
                  4      V4      p. p\)        VP*                  4       F  p\E        VV,          ^ ,          \F        4      '       d"   VV,          ^ ,          pVV,          ^,          pM$RP/                  VV4      pRP/                  VV4      pVPI                  VV34       K  	  \9        V4      ^8  d<   VRV	,           ,          pV F  pVV	8w  g   K  VRV,           ,          pK  	  VR,          p\        P                  ! RV4      pVRP/                  VV	4      ,          pR p VEf   \J        PL                  ! VP                  4      P                  PN                  p!RP/                  VVV!4      p"RV P4                  9   dm   V P4                  R,          p#\P        PR                  PS                  V#4      p$V PT                  PW                  V$VP                  4      '       g   Rp%\        V%4      hM^ p#VRV",           ,          p\)        VP*                  4       F  p&R .VP*                  ,          p'R .VP*                  ,          p(R!P/                  V P>                  V&,          ^ ,          4      V'V&&   R"P/                  V P>                  V&,          ^,          4      V(V&&   VRR#P/                  VRPC                  V'4      V ! V#4      4      ,           ,          pVRR#P/                  VRPC                  V(4      V ! V#4      4      ,           ,          pK  	  MRV P4                  9   d   V P4                  R,          p#\P        PR                  PS                  V#4      p$V PT                  PW                  V$VP                  4      '       g   Rp%\        V%4      hR$P/                  VV ! V#4      4      p"VRV",           ,          p^p)\)        VP*                  4       Ff  p\)        V)4       F  p*VR,          pK  	  VR%P/                  VV,          VV,          ^ ,          VVVV,          ^,          4      ,          pV)^,          p)Kh  	  \)        V)4       F  p*VR,          pK  	  VR&P/                  V4      ,          pVR'P/                  V4      ,          p\        P                  ^8  d   \        R(4       \        V4       / p+V+PY                  \[        4       4       \]        VV+4       V+V,          p,Ve   \^        P`                  ! V,4      p-V-Vn1        ^ R)I2H3p. V.Pi                  V,4      p/\        Pj                  ! V/P                  4       \        P                  ! V/P                  4      p0/ p1VVVV.VP
                  ,           V,           p2V0Pm                  4        Fp  w  p3p4V3V29   d   K  \E        V4\n        Pp                  4      '       g   Q hV4Pr                  Pu                  V4Pv                  V4Px                  4      p5V5Pv                  V1V3&   Kr  	  \        Pz                  ! V/P                  V14       \}        V/P                  P                  4       4      ^,           p6\        P                  ! VP                  V64      Vn        \}        VP                  P                  4       4      ^,           p7V U8u. uF  p8V8V6,           NK  	  pp8\        P                  ^8  dd   \        R*VV64       \        R+4       \        P                   ! V/P                  4       \        R,4       \        P                   ! VP                  4       V/P                  Pm                  4        EF  w  p9p:\        V:P                  4       EF}  w  pp;\E        V;\n        P                  4      '       g   K)  V;P                  Pv                  V8X  g   KF  V;Px                  p<V:Pr                  p=\n        P                  ! V=V<4      p>V:P                  RV V>nB        V:P                  V^,           R V:nB        \        VP                  P                  4       4      p?V>PI                  \n        P                  ! V?V<4      4       VP                  Pm                  4        F  w  p@pAVAV/P                  V@&   K  	  V:V/P                  V7&   V>V/P                  V9&   V F:  pBV/P                  VB,          PI                  \n        P                  ! V7V<4      4       K<  	   M	  EK   M	  \        P                  ! V/P                  4      V/n        \        Pj                  ! V/P                  4       \E        V\        P                  4      '       g   Q hTpC\        VC4      pD\        P                  ^8  d-   \        R-XD4       \        P                   ! V/P                  4       \        P                  ! V/P                  4       V.P                  V PT                  V P                  V/XDRV.P                  / 4      pEVE# u up8i ).r   r   z6Cannot use the reserved word 'out' in stencil kernels.__sentinel__name_var_tabler   __numba_stencil_-r   r   rO   r   Nz	, {}=Nonestandard_indexingzYThe first argument to a stencil kernel must use relative indexing, not standard indexing.z[Standard indexing requested for an array name not present in the stencil kernel definition.zAfter add_indices_to_kernelz!After replace_return_with_setitemzdef {}({}{}):
r   z	{}[{}][0]z	{}[{}][1]z&    raise_if_incompatible_array_sizes(z)

full_shapez    {} = {}.shape
c                     \         P                  ! V 4      '       gH   \         P                  ! V 4      '       d   R # \         P                  ! V 4      '       d   V ^ 8  d   R# R# R# \	        V 4      # )znp.nanz-np.infznp.infN)npisfiniteisnanisinfr   )cvals   &r   cval_as_str1StencilFunc._stencil_wrapper.<locals>.cval_as_strD  sL    ;;t$$88D>>#XXd^^ax('	 $ 4y r   z{} = np.empty({}, dtype=np.{})
r  z-cval type does not match stencil return type.z    :z:-{}z-{}:z{}[{}] = {}
z{}[:] = {}
z.for {} in range(-min(0,{}),{}[{}]-max(0,{})):
z{} = 0
z    return {}
znew stencil func textcompilerzret_blocks w/ offsetsz"before replace sentinel stencil_irz#before replace sentinel kernel_copynew_stencil_param_types)Pr  rS   r   remove_argsrq   r   copy_propagateget_name_var_tableapply_copy_propagater   get_unused_var_namer   r   r   dtyperP   r   hexrR   r   r<   r:   r   r   r   rV   rU   r]   r=   r   r   rO   r   r   rg   r   ri   r   as_dtyper/   r   typeofrY   can_convertupdateglobalsr   r   r   r   r   r  run_frontendremove_delsrc   r   rj   rd   rm   r   re   replace_var_namesr   keysadd_offset_to_labels	enumeraterf   rp   r   Blockr   Jumprename_labelsr   Typer   fixup_var_define_in_scope
compile_irr[   DEFAULT_FLAGS)Fr   r   r   r#   r   r   r"   r   r   	first_argin_cpsout_cpsr  sentinel_name	the_arraystencil_func_namerr   rB   index_var_namers   neighborhood_namer   r   kernel_sizer   rt   	func_textrangeslohiother_array
shape_namer  return_type_nameout_initr  cval_tymsgr   start_items	end_itemsoffsetjr   stencil_funcr   r  
stencil_ir	var_tablenew_var_dictreserved_namesr   varnew_varstencil_stub_last_label	new_labelxru   rv   instre   rd   
prev_blockbody_first_labellb	ret_blockarray_typesr  r   sF   &&&&&&*                                                               r   r   StencilFunc._stencil_wrapper  s   & )-(C(C,0NNI)G% 	[//0))!,	"11+2D2DgN!44[5G5GH%%	 N"!"Z[[ 44^^T!!Q&"NBG	!!Q&$k3D3D&*;+<+<&=tE  !3!34
 ),ByM(:(B(B3(L(,1 
y~~&A%99'CF:J:HJN>**J ' //~F$889GI	++H55IT$((^+++,=>>I  <<++,?D((! #R S S s#$s;+@+@'AABaG! #R S S +/*D*DZ!!#3W+N'' $ +D!!Q&/0  !3!34 55k6H6H6@(L
 !!Q&5zB  !3!34 &,,->!6!67D	 y~~&A+a.+S11 ^A& ^A& ''(91= ''(91=MM2r(# ' !"Q&AIMMI1)+{!22I  2 I 11,O
*11*iHH		!  >,55*00 226$xx 8?? *.>@H %||F+ --..t4227K<M<MNNIC)#.. O (**IY^^,"einn4 EINN2	#)==1B1B31G1J#KC !'t/@/@/Ea/H!I	#Vo&<&<XsxxP[G\^ijn^o&ppp	Vo&<&<XsxxPYGZ\ghl\m&nnn	 - %||F+ --..t4227K<M<MNNIC)#..)00;t;LMVh..	y~~&A6]V#	 #  128&&qM"1IaL&"1IaL3**I aKF' '* vAI 
 	Z&&}55	&--h77	!!Q&)*) 

79Y,-%%l3E FL'**<8
Z../ //
0A0AB	((4E%')4)>)>?AKL"*ID#>)!#rvv....)),,SXXsww?%,\\T"	 +
 	"":#4#4lC"%j&7&7&<&<&>"?!"C &:: + 2 24KM**//12Q6	;EF:aa111:
F!!Q&):7NO67  !2!2378  !3!34 '--335LE5$UZZ04bii00KK$$5((C!KKE
 "$%!5J&+jj!nJO!&AEF!3EJ'*;+=+=+B+B+D'E$ %%bgg.>&DE #."4"4":":"<A/0
))!, #= 49J%%i0/9J%%e, &0	")))4;;GGIs35 &0 C 1F K 6N %22:3D3DE
Z../)UZZ0010"&{"3!!Q&+-DE  !2!23 	**:+<+<=&&OOOO#"" Q Gs   )w c                ~   V P                   P                  4        V P                  ek   \        V P                  4      V^ ,          P                  8w  d@   \        RP                  \        V P                  4      V^ ,          P                  4      4      hRV9   d   VR,          pVP                  p\        P                  ! V4      p\        P                  P                  WSP                  \        P                  ! V4      4      p\        V Uu. uF"  p\        P                   P!                  V4      NK$  	  up4      p\        V Uu. uF"  p\        P                   P!                  V4      NK$  	  upV.,           4      p	M<R p\        V Uu. uF"  p\        P                   P!                  V4      NK$  	  up4      pTp	\"        P$                  ^8  d   \'        RWV4       V P)                  V4      w  rpV P*                  ! VR WV.V	O5!  pVf   VP,                  ! V!  # VP,                  ! W3,           !  # u upi u upi u upi )NzD{} dimensional neighborhood specified for {} dimensional input arrayr   r-   )rY   refreshrO   r=   r:   r   r   r  r   
from_dtyper   r   r   
map_layoutr   r   r   r   r   r   r   r   entry_point)r   r"   kwargsr   rdtyperttyperesult_typerQ  rX  array_types_fullr   r   r   r   s   &*,           r   r-   StencilFunc.__call__  s   !)!!"d1gll2! #??Ev"%d&7&7"8$q',,@HI I F?E]F\\F"--f5F....v{{/</G/G/OQK$ G$Q!5!5a!8$ GHK$t%Lt!fmm&:&:1&=t%L&1]&3  4 F$ G$Q!5!5a!8$ GHK*!!Q&*k8)-)=)=k)J&I((x)2G5EG >''..''$y.::% !H%L !Hs   (H0(H5(H:)
r_   r[   r^   rY   rR   rS   rV   rT   rO   rU   N)r/   r0   r1   r2   r3   rQ   r   r   r   r   r\   r!   r   r  r   r-   r4   r5   r6   s   @r   rL   rL   A   sN      J2 (TF2R.26'R-6GR
 ;  ;r   rL   c                     \        V \        4      '       g   R pT pMT pRpV F  pVR9  g   K  \        RV,           4      h	  \        W!4      pVe	   V! V4      # V# )constantNzUnknown stencil option )r  r
  rO   )rg   r   r   _stencil)func_or_moderU   rT   funcoptionwrappers   &,    r   stencilrl  $  sh    lC((FF!";f"DEE  t%Gt}Nr   c                 J   a a S R 8w  d   \        RS ,           4      hV V3R lpV# )rf  zUnsupported mode style c                 L   < ^ RI Hp VP                  V 4      p\        VSS4      # )r   r  )r   r  r$  rL   )ri  r  rS   rT   rU   s   &  r   	decorated_stencil.<locals>.decorated:  s%    '))$/	9dG44r   r   )rT   rU   ro  s   ff r   rg  rg  6  s)    z7$>??5
 r   c                    \         P                  ! \         P                  ! \        P                  P
                  4      ^ 4      # )z lowering for dummy stencil calls)lirConstantIntTyper   r   bitwidth)r(   r)   r*   r"   s   &&&&r   stencil_dummy_lowerrv  A  s(     <<EJJ$7$78!<<r   )rf  )&r   numpyr  llvmliter   rr  r   r   r   r   r   r   r	   numba.core.typing.templatesr
   r   r   r   numba.core.imputilsr   numba.core.extendingr   numba.core.errorsr   numba.misc.specialr   r   r   numba.npr   objectr   rC   rJ   rL   rl  rg  rv  r   r   r   <module>r     s       K K KI I - 1 - -   "  3 3,Da;& a;F$	 w= =r   