
    xKg                        d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
mZmZmZmZmZmZ d dlmZmZmZmZmZmZ d dlmZmZ d dlmZ d Zd	 Zd
 Zd Z d Z!d Z"d Z# e
e$ejJ                  ejJ                        d        Z& e
ejN                  ejJ                  ejJ                         e
ejP                  ejJ                  ejJ                        d               Z) e
ejT                  ejJ                  ejJ                         e
ejV                  ejJ                  ejJ                        d               Z, e
ejZ                  ejJ                  ejJ                         e
ej\                  ejJ                  ejJ                        d               Z/d Z0d Z1 e
ejd                  ejJ                  ejf                         e
ejh                  ejJ                  ejf                         e
ejd                  ejj                  ejf                         e
ejh                  ejj                  ejf                        d                             Z6d Z7d Z8d Z9d Z:d Z;d Z<d Z=d Z>d Z?d Z@d  ZAd! ZBd" ZCd# ZDd$ ZEd% ZFd& ZGd' ZHd( ZId) ZJd* ZKd+ ZLd, ZMd- ZNd. ZO  e
ej                  ej                  ej                        e?         e
ej                  ej                  ej                        e@         e
ej                  ej                  ej                        e;         e
ej                  ej                  ej                        e<         e
ej                  ej                  ej                        e=         e
ej                  ej                  ej                        e>         e
ej                  ej                        eN         e
ej                  ej                        eO       d/ ZYd0 ZZ eY         eZ        d1 Z[d2 Z\d3 Z]d4 Z^d5 Z_d6 Z` e
e$ejj                  ejj                        dod7       Zadod8Zbdod9Zcd: Zdd; Zed< Zfd= Zgd> Zhd? Zid@ ZjdA ZkdB ZldC ZmdD Znejj                  Zo  e
ej                  eoeo      e[         e
ej                  eoeo      e[         e
ej                  eoeo      e\         e
ej                  eoeo      e\         e
ej                  eoeo      e]         e
ej                  eoeo      e]         e
ejN                  eoeo      ec         e
ejP                  eoeo      ec         e
ejT                  eoeo      e^         e
ejV                  eoeo      e^         e
ejZ                  eoeo      eb         e
ej\                  eoeo      eb         e
ejd                  eoeo      ed         e
ejh                  eoeo      ed         e
e2eoeo      ed         e
ej                  eoeo      ei         e
ej                  eoeo      ej         e
ej                  eoeo      ee         e
ej                  eoeo      ef         e
ej                  eoeo      eg         e
ej                  eoeo      eh         e
eveo      ek         e
ej                  eo      el         e
ej                  eo      em       [o eej                  dE      dF        Zx eej                  dG      dH        Zy e
dIej                        dJ        ZzdK Z{dL Z|dM Z}ejj                  ejJ                  fD ]/  Z~  ee~dE      e{         ee~dG      e|         e
dIe~      e}       1  e
ejd                  ej                  ej                         e
ejh                  ej                  ej                         e
e2ej                  ej                        dN                      ZdO ZdP ZdQ Z edR      ZdS ZdT ZdU ZdV ZdW ZdX Zej                  Zo  e
ej                  eoeo      e         e
ej                  eoeo      e         e
ej                  eoeo      e         e
ej                  eoeo      e         e
ej                  eoeo      e         e
ej                  eoeo      e         e
ejT                  eoeo      e         e
ejV                  eoeo      e         e
ej                  eo      e         e
ej                  eo      e         e
ej                  eoeo      e         e
ej                  eoeo      e         e
eveo      e       [o e
dYej                         e
dYej                        dZ               Zd[ Z e
eej                        d\        Z e
eejJ                        d]        Z e
eejj                        d^        Z e
eej                        d_        ZejJ                  ejj                  ej                  fD ]  Zo  e
ej(                  eo      e          e
ej(                  ej                        e        eejf                  ejJ                         eejf                  ejj                         eejf                  ej                        d`                      Z eejJ                  ejJ                        da        Z eejJ                  ej.                        db        Z eejj                  ejj                        dc        Z eejJ                  ejj                        dd        Z eejj                  ejJ                        de        Z eejj                  ej                         eejJ                  ej                        df               Z eej                  ej                        dg        Z eej<                  ej                        dh        Z eej                  ej                        di        Z eejf                  ej                         eejB                  ej                        dj               Z eej                        dk        Z eejJ                         eejj                         eej                        dl                      Zdm Z  eejj                  dn      e         eejJ                  dn      e       y)p    N)ir)Constant)lower_builtinlower_getattrlower_getattr_generic
lower_castlower_constantimpl_ret_borrowedimpl_ret_untracked)typingtypesutilserrorscgutilsoptional)	intrinsicoverload_methodviewerc                 $    | j                   rdgS g S )z;
    Return the modifier flags for integer arithmetic.
    nsw)signed)rettypes    Y/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/cpython/numbers.py_int_arith_flagsr      s     ~~ w	    c                     |\  }}|j                   \  }}| j                  ||||j                        }| j                  ||||j                        }	|j                  ||	t	        |j                              }
t        | ||j                  |
      S N)flags)argscastreturn_typeaddr   r   contextbuildersigr    vavbtatbabress              r   int_add_implr/   #   {    HRxxHRWb"coo6AWb"coo6A
++a"23??"C+
DCgwEEr   c                     |\  }}|j                   \  }}| j                  ||||j                        }| j                  ||||j                        }	|j                  ||	t	        |j                              }
t        | ||j                  |
      S r   )r    r!   r"   subr   r   r$   s              r   int_sub_implr3   ,   r0   r   c                     |\  }}|j                   \  }}| j                  ||||j                        }| j                  ||||j                        }	|j                  ||	t	        |j                              }
t        | ||j                  |
      S r   )r    r!   r"   mulr   r   r$   s              r   int_mul_implr6   5   r0   r   c           
         |j                   |j                   k(  sJ |j                  d      }|j                  d      }t        j                  ||      }t        j                  ||      }|j                  |j	                  d||j                  |j
                              |j	                  d||j                  d                  }	|j                  |j                  |	      d      5  |j                  ||      }
|j                  ||      }|j	                  d|j                  ||      |      }|j	                  d||      }|j                  ||      }|j                  |      5 \  }}|5  |j                  |
|       |j                  ||       d	d	d	       |5  |j                  |j                  |
|      |       |j                  |j                  ||      |       d	d	d	       d	d	d	       d	d	d	       |j                  |      |j                  |      fS # 1 sw Y   xY w# 1 sw Y   GxY w# 1 sw Y   KxY w# 1 sw Y   OxY w)
a@  
    Reference Objects/intobject.c
    xdivy = x / y;
    xmody = (long)(x - (unsigned long)xdivy * y);
    /* If the signs of x and y differ, and the remainder is non-0,
     * C89 doesn't define whether xdivy is now the floor or the
     * ceiling of the infinitely precise quotient.  We want the floor,
     * and we have it iff the remainder's sign matches y's.
     */
    if (xmody && ((y ^ xmody) < 0) /* i.e. and signs differ */) {
        xmody += y;
        --xdivy;
        assert(xmody && ((y ^ xmody) >= 0));
    }
    *p_xdivy = xdivy;
    *p_xmody = xmody;
    r      ==Tlikely<!=N)typer   alloca_once_valueand_icmp_signedminvalif_thennot_sdivsremxorif_elsestorer2   r#   load)r%   r&   tyxyZEROONEresdivresmodis_overflowxdivyxmodyy_xor_xmody_ltzxmody_istruecondif_different_signsif_same_signss                    r   int_divmod_signedr[   >   s   $ 66QVV66!9D
&&)C &&w5F&&w5F,,D!QVVBII%67D!QVVBZ02K 
k24	@ Q"Q"!--c7;;q%3H$O**4=||L/:__T"&I'9=eV,eV,  $gkk%5v>gkk%3V< $ # 
A& <<f!555  $# #" 
A	@sV   (A>H>&H2,%H
H2AH& H2(H>H#H2&H/+H22H;	7H>>Ic                     |j                   rt        | ||||      S |j                  ||      |j                  ||      fS )zD
    Integer divmod(x, y).  The caller must ensure that y != 0.
    )r   r[   udivurem)r%   r&   rL   rM   rN   s        r   
int_divmodr_   w   s?     
yy '2q!<<||Aq!7<<1#555r   c           	      <   |\  }}|j                   \  }}|j                  }	t        |	t        j                        r|	j
                  }	| j                  ||||	      }
| j                  ||||	      }t        j                  ||
j                  d      }t        j                  ||
j                  d      }|j                  t        j                  ||      d      5 \  }}|5  | j                  j                  ||f      s$|j                  ||       |j                  ||       d d d        |5  t        | ||	|
|      \  }}|j                  ||       |j                  ||       d d d        d d d        ||fS # 1 sw Y   VxY w# 1 sw Y   !xY w# 1 sw Y   ||fS xY w)NquotnameremFr;   )r    r"   
isinstancer   UniTupledtyper!   r   alloca_oncer?   rI   is_scalar_zeroerror_modelfp_zero_divisionrJ   r_   )r%   r&   r'   r    zerodiv_messager(   r)   r*   r+   rL   r,   r-   ra   rd   if_zeroif_non_zeroqrs                     r   _int_divmod_implrq      sg   FBXXFB	B"enn%XXWb"b)AWb"b)AwV<D


gqvvE
:C	//;E 
4w&&77/+-
 a&a%  gwAq9DAqMM!T"MM!S! 
 9 W [
 9s=   F AE7"
F,7F#F7F 	<FF	FFc                     t        | |||d      \  }}t        j                  ||j                  |      |j                  |      f      S )Nzinteger divmod by zero)rq   r   
pack_arrayrK   r%   r&   r'   r    ra   rd   s         r   int_divmod_implru      sN     '3!9;ID# g&||D17<<3DEG Gr   c                 H    t        | |||d      \  }}|j                  |      S )Nzinteger division by zerorq   rK   rt   s         r   int_floordiv_implrx      s,     !'3!;=ID#<<r   c                    |\  }}|j                   \  }}| j                  ||||j                        }| j                  ||||j                        }	t        j                  ||	      5  | j
                  j                  |d       d d d        |j                  ||	      }
t        | ||j                  |
      S # 1 sw Y   3xY w)Nzdivision by zero)	r    r!   r"   r   rm   rj   rk   fdivr   r$   s              r   int_truediv_implr|      s     HRxxHRWb"coo6AWb"coo6A	!	$,,W6KL 
%
,,q!
CgwEE 
%	$s   'B66B?c                 H    t        | |||d      \  }}|j                  |      S )Nzinteger modulo by zerorw   rt   s         r   int_rem_implr~      s,     !'3!9;ID#<<r   c                     t        |t        j                        r(| j                  j                  sd|j
                  dz
  z  S y)Nr:   r8   F)re   r   Integerrj   raise_on_fp_zero_divisionbitwidth)r%   r"   s     r   _get_power_zerodiv_returnr      s8    ;.##==k**Q.//r   c                     t        |j                  d   t        j                        |j                  t        |       fd}| j                  ||||      }t        | ||j                  |      S )z@
    a ^ b, where a is an integer or real, and b an integer
    r   c                 0    d      } |       } |dk  r1d}| }|dk  rt         r#| dk(  rrS t        d      | dk7  r
| dk7  ryd}|}|dkD  rt        j                  | t	        |            S |dk7  r|dz  r|| z  }|dz  }| | z  } |dk7  r|rd|z  S |S )	Nr8   r   T&0 cannot be raised to a negative powerr:   F         ?)OverflowErrorZeroDivisionErrormathpowfloat)r,   r-   rp   invertexp
is_integertpzerodiv_returns        r   	int_powerz!int_power_impl.<locals>.int_power   s    qEqEq5F"CQw##6%--/0XYY6a2gFC=88AuQx((QhQwQAICFA	 Qh !sQw'a'r   )re   r    r   r   r"   r   compile_internalr   )	r%   r&   r'   r    r   r.   r   r   r   s	         @@@r   int_power_implr      sd     CHHQK7J	B.w;N(> 
"
"7IsD
ACgwEEr   c                 d   |j                   d   j                  }t        |t        j                        st
        t        |      dkD  rt
        |dk  }t        |      }|j                  }t        |t        j                        t        | |      | j                  |d   |j                   d   |      }|j                  }fd}	 |d      }
|}|dk7  r"|dz  r	 |	|
|      }
|dz  } |	||      }|dk7  r"|r4rfd}nd }| j                  |t        j                  ||      |
f      }
|
S )zH
    a ^ b, where a is an integer or real, and b a constant integer
    r8   r   r   c                 P    rj                  | |      S j                  | |      S N)r5   fmul)r,   r-   r&   r   s     r   r5   zstatic_power_impl.<locals>.mul  s(    ;;q!$$<<1%%r   c                 F    | dk(  rrS t        d      | dk7  r| dk7  ry| S )Nr   r   r8   r:   )r   )r,   r   s    r   invert_implz&static_power_impl.<locals>.invert_impl$  s4    6%--/0XYY6a2gHr   c                     d| z  S )Nr    )r,   s    r   r   z&static_power_impl.<locals>.invert_impl1  s    Qwr   )r    valuere   numbersIntegralNotImplementedErrorabsr"   r   r   r   r!   r?   r   r   	signature)r%   r&   r'   r    r   r   r   valltyr5   r.   r,   r   r   r   s    `           @@r   static_power_implr      s/    ((1+

Cc7++,!!
3x'!!1WF
c(C	BB.J.w;N
,,wQ!b
9C
((C& a&CA
(7c3-C	#sm	 ( 	 &&w'-'7'7B'?#I Jr   c                 X     |j                   dg| }t        | ||j                  |      S Nr=   rB   r   r"   r%   r&   r'   r    r.   s        r   int_slt_implr   :  .    
'

c
)D
)CgwEEr   c                 X     |j                   dg| }t        | ||j                  |      S Nz<=r   r   s        r   int_sle_implr   ?  .    
'

d
*T
*CgwEEr   c                 X     |j                   dg| }t        | ||j                  |      S N>r   r   s        r   int_sgt_implr   D  r   r   c                 X     |j                   dg| }t        | ||j                  |      S Nz>=r   r   s        r   int_sge_implr   I  r   r   c                 X     |j                   dg| }t        | ||j                  |      S r   icmp_unsignedr   r"   r   s        r   int_ult_implr   N  .    
'


+d
+CgwEEr   c                 X     |j                   dg| }t        | ||j                  |      S r   r   r   s        r   int_ule_implr   S  .    
'


,t
,CgwEEr   c                 X     |j                   dg| }t        | ||j                  |      S r   r   r   s        r   int_ugt_implr   X  r   r   c                 X     |j                   dg| }t        | ||j                  |      S r   r   r   s        r   int_uge_implr   ]  r   r   c                 X     |j                   dg| }t        | ||j                  |      S Nr9   r   r   s        r   int_eq_implr   b  r   r   c                 X     |j                   dg| }t        | ||j                  |      S Nr>   r   r   s        r   int_ne_implr   g  r   r   c                       fd}|S )Nc                 &   |\  }}|j                  d|t        |j                  d            }|j                  
|t        |j                  d            }|j                  
||      }|j	                  |||      }	t        | ||j                  |	      S Nr=   r   rB   r   r?   r   selectr   r"   r%   r&   r'   r    leftrightcmp_zerolt_zeroge_zeror.   ops             r   implz%int_signed_unsigned_cmp.<locals>.implm  s    u &&sD(499a2HI%%b$A0FG''D%8nnXw8!'7COOSIIr   r   r   r   s   ` r   int_signed_unsigned_cmpr   l  s    J  Kr   c                       fd}|S )Nc                 &   |\  }}|j                  d|t        |j                  d            }|j                  
t        |j                  d      |      }|j                  
||      }|j	                  |||      }	t        | ||j                  |	      S r   r   r   s             r   r   z%int_unsigned_signed_cmp.<locals>.impl  s    u&&sE8EJJ3JK%%b(5::q*A5I''D%8nnXw8!'7COOSIIr   r   r   s   ` r   int_unsigned_signed_cmpr     s    J Kr   c                     |\  }t        |j                  d       }|j                  d||      }|j                  |      }|j	                  |||      }t        | ||j                  |      S r   )r   r?   rB   negr   r   r"   )	r%   r&   r'   r    rM   rO   ltznegatedr.   s	            r   int_abs_implr     sa    
CQAFFD!D


c1d
+Ckk!nG
..gq
)CgwEEr   c                 :    |\  }t        | ||j                  |      S r   r   r"   )r%   r&   r'   r    rM   s        r   uint_abs_implr     s    
CQgwCCr   c                     |j                   \  }}|\  }}| j                  ||||j                        }| j                  ||||j                        }|j                  ||      }t	        | ||j                  |      S r   )r    r!   r"   shlr   	r%   r&   r'   r    valtyamttyr   amtr.   s	            r   int_shl_implr     sm    XXNUEJS#
,,wUCOO
<C
,,wUCOO
<C
++c3
CgwEEr   c                 H   |j                   \  }}|\  }}| j                  ||||j                        }| j                  ||||j                        }|j                  j                  r|j	                  ||      }n|j                  ||      }t        | ||j                  |      S r   )r    r!   r"   r   ashrlshrr   r   s	            r   int_shr_implr     s    XXNUEJS#
,,wUCOO
<C
,,wUCOO
<C
ll3$ll3$gwEEr   c                     |j                   \  }}|\  }}| j                  ||||j                        }| j                  ||||j                        }	|j                  ||	      }
t	        | ||j                  |
      S r   )r    r!   r"   rA   r   r%   r&   r'   r    atbtavbvcavcbcr.   s              r   int_and_implr     sm    xxHRHR
,,wB
8C
,,wB
8C
,,sC
 CgwEEr   c                     |j                   \  }}|\  }}| j                  ||||j                        }| j                  ||||j                        }	|j                  ||	      }
t	        | ||j                  |
      S r   )r    r!   r"   or_r   r   s              r   int_or_implr     m    xxHRHR
,,wB
8C
,,wB
8C
++c3
CgwEEr   c                     |j                   \  }}|\  }}| j                  ||||j                        }| j                  ||||j                        }	|j                  ||	      }
t	        | ||j                  |
      S r   )r    r!   r"   rH   r   r   s              r   int_xor_implr     r   r   c                     |j                   \  }|\  }|j                  |      }| j                  ||||j                        }t	        | ||j                  |      S r   )r    r   r!   r"   r   r%   r&   r'   r    typr   r.   s          r   int_negate_implr    sO    HHESES
++c
C
,,wS#//
:CgwEEr   c                     |j                   \  }|\  }| j                  ||||j                        }t        | ||j                  |      S r   r    r!   r"   r   r   s          r   int_positive_implr    A    HHESES
,,wS#//
:CgwEEr   c           
          |j                   \  }|\  }|j                  |t        |j                  t	        d|j                  j
                  z  d                  }| j                  ||||j                        }t        | ||j                  |      S )N1   )	r    rH   r   r?   intwidthr!   r"   r   r   s          r   int_invert_implr    sp    HHESES
++c8CHHc#2F.JK
LC
,,wS#//
:CgwEEr   c                    |\  }t        |j                  d      }t        |j                  d      }t        |j                  d      }|j                  d||      }|j                  d||      }	t	        j
                  ||j                        }
|j                  d      }|j                  d      }|j                  d      }|j                  d	      }|j                  d
      }|j                  |||       |j                  |      5  |j                  ||
       |j                  |       ddd       |j                  |      5  |j                  |	||       ddd       |j                  |      5  |j                  ||
       |j                  |       ddd       |j                  |      5  |j                  ||
       |j                  |       ddd       |j                  |       |j                  |
      }t        | ||j                  |      S # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   gxY w)z
    np.sign(int)
    r8   r:   r   r9   r   z.zeroz.postestz.posz.negz.exitN)r   r?   r   rB   r   rh   append_basic_blockcbranch
goto_blockrJ   branchposition_at_endrK   r   r"   )r%   r&   r'   r    rM   POSNEGrO   r   cmp_pospresultbb_zero
bb_postestbb_posbb_negbb_exitr.   s                    r   int_sign_implr    s    CQ
1661
C
1662
CAFFAD$$T1d3H!!#q$/G!!'1662G((1G++J7J''/F''/F((1GOOHgz2			G	$dG$w 
% 
		J	'0 
( 
		F	#c7#w 
$ 
		F	#c7#w 
$ G$
,,w
CgwEE# 
%	$ 
(	' 
$	# 
$	#s0   $HH0$H+-$H7HH(+H47I c                     |j                   \  }|\  }| j                  ||||j                        }|j                  |      }t	        | ||j                  |      S r   )r    r!   r"   r   r   r   s          r   bool_negate_implr    sO    HHESES
,,wS#//
:C
++c
CgwEEr   c                     |j                   \  }|\  }| j                  ||||j                        }t        | ||j                  |      S r   r  r   s          r   bool_unary_positive_implr    r  r   c                  N   t         j                  }  t        t        j                  | |       t
                t        t        j                  | |       t
                t        t        j                  | |       t                t        t        j                  | |       t                t        t        j                  | |       t                t        t        j                  | |       t                t        t        j                  | |       t                t        t        j                  | |       t                 t        t        j"                  | |       t$                t        t        j&                  | |       t$                t        t        j(                  | |       t*                t        t        j,                  | |       t*                t        t        j.                  |       t0                t        t        j2                  |       t4                t        t        j6                  | |       t8                t        t        j:                  | |       t8                t        t6        | |       t8               t         j<                  D ]@  }  t        t        j>                  | |       t@                t        t        jB                  | |       tD                t        t        jF                  | |       tH                t        t        jJ                  | |       tL                t        t        j6                  t         jN                  |       t8                t        t        j:                  t         jN                  |       t8                t        t6        t         jN                  |       t8                t        tP        |       tR               C  t        t        j>                  t         jT                  t         jT                        tV                t        t        jF                  t         jT                  t         jT                        tV                t        t        jB                  t         jT                  t         jT                        tV                t        t        jJ                  t         jT                  t         jT                        tV               t         jX                  D ]@  }  t        t        j>                  | |       tV                t        t        jB                  | |       tZ                t        t        jF                  | |       t\                t        t        jJ                  | |       t^                t        t        j6                  t         jN                  |       t8                t        t        j:                  t         jN                  |       t8                t        t6        t         jN                  |       t8                t        tP        |       t`               C y r   )1r   r   r   operatorr#   r/   iaddr2   r3   isubr5   r6   imuleqr   ner   lshiftr   ilshiftrshiftr   irshiftr   r  posr  r   r   ipowunsigned_domainltr   ler   gtr   ger   Floatr   r   IntegerLiteralr   signed_domainr   r   r   r   rL   s    r   _implement_integer_operatorsr6  &  s   	B'M(,,B'5(M(--R(6'M(,,B'5(M(--R(6'M(,,B'5(M(--R(6&M(++r2&{3&M(++r2&{3*M(//2r*<8+M(""B+L9*M(//2r*<8+M(""B+L9#M(,,#O4#M(,,#$56'M(,,B'7(M(--R(8M#r2~.##*hkk2r*<8*hkk2r*<8*hkk2r*<8*hkk2r*<84hllEKK4^D5hmmU[["5nE+c5;;+N;c2}- $ KM(++u33U5I5IJ<XJM(++u33U5I5IJ<XJM(++u33U5I5IJ<XJM(++u33U5I5IJ<X!!*hkk2r*<8*hkk2r*<8*hkk2r*<8*hkk2r*<84hllEKK4^D5hmmU[["5nE+c5;;+N;c2|, "r   c                  V   t         j                  t         j                  fD ]  }  t        t        j
                  | |       t                t        t        j                  | |       t                t        t        j                  | |       t                t        t        j                  | |       t                t        t        j                  | |       t                t        t        j                  | |       t                t        t        j                  |       t                y r   )r   Booleanr   r   r!  rA   r   iandr   r   iorrH   r   ixorr   r  r5  s    r   _implement_bitwise_operatorsr<  V  s    }}emm,,hmmR,\:,hmmR,\:+hllB+K8+hllB+K8+hllB+L9,hmmR,\:*hoor*?; -r   c                 P     |j                   | }t        | ||j                  |      S r   )faddr   r"   r   s        r   real_add_implr?  f  '    
',,
CgwEEr   c                 P     |j                   | }t        | ||j                  |      S r   )fsubr   r"   r   s        r   real_sub_implrC  k  r@  r   c                 P     |j                   | }t        | ||j                  |      S r   )r   r   r"   r   s        r   real_mul_implrE  p  r@  r   c                     t        j                  ||d         5  | j                  j                  |d       d d d         |j                  | }t        | ||j                  |      S # 1 sw Y   0xY w)Nr8   rz   )r   rm   rj   rk   r{   r   r"   r   s        r   real_div_implrG  u  s^    	$q'	*,,W6KL 
+
',,
CgwEE 
+	*s   A&&A/c                    |j                   |j                   k(  sJ |j                   }|j                  }| j                  d|j                   g      }t        j                  |||t        j
                  |      f      }t        j                  |||      }|j                  rod|_	        t        j                  |j                  d            }	|j                  \  }
}}t        | |	|
|      \  }}|	j                  ||       |	j                  |       t        j                   ||      }|j#                  ||||f      }||j%                  |      fS )Nz.numba.python.remlinkonce_odrentry)r?   modulemanglerr   FunctionTypePointerTyper   get_or_insert_functionis_declarationlinkage	IRBuilderr  r    real_divmod_func_bodyrJ   retrh   callrK   )r%   r&   rM   rN   floattyrK  fnamefntyfn	fnbuilderfxfypmoddivmodquotients                   r   real_divmodra  |  s   66QVVffG^^FOO/!&&:E??7Wgr~~g7N$OPD		'	'e	<B	#
LL!6!6w!?@	wwB()RDST"cw0D||BAt-HW\\$'''r   c           	         t        j                  ||j                        }t        j                  ||j                        }t        j                  ||j                        }|j                  ||      }|j	                  |j                  ||      |      }|j                  ||       |j                  ||       |j                  d      }	|j                  d      }
|j                  d      }|j                  d||	      }|j                  d||	      }|j                  d||	      }|j                  |d      5 \  }}|5  |j                  d||      }|j                  |      5  |j                  |j                  ||      |       |j                  |j                  ||      |       d d d        d d d        |5  |j                  ||
|	      }|j                  ||       d d d        d d d        ~~|j                  |      }|j                  d||	      }|j                  |      5  t        j                   t        j"                  d}|t%        |j                           }| j'                  t(        j*                  t-        j.                  ||            } |||g      }|j                  ||      }|j                  ||      }t1        |j                  d	      }|j                  d
||      }|j                  |||      }|j                  ||       d d d        t        j2                  ||      5  |j5                  ||      }|j                  ||       |j	                  |j5                  ||      |      }|j                  ||       d d d        |j                  |      |j                  |      fS # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   kxY w)N        g       r   r>   r=   Tr;   )r   doubleg      ?r   )r   rh   r?   fremr{   rB  rJ   fcmp_unorderedfcmp_orderedrI   r   rD   r>  r   rK   r   float32float64strget_functionr   floorr   r   r   ifnotr   )r%   r&   vxwxr]  pdiv	pfloordivr_  r^  rO   NZEROrP   
mod_istruewx_ltzmod_ltzif_nonzero_modif_zero_modwx_ltz_ne_mod_ltz
div_istruerealtypemaprealtypefloorfnfloordivfloordivdifffloordivincrHALFpreds                              r   rS  rS    sH   \ w0Dw0D##GRWW5I
,,r2
C
,,w||B,b
1CMM#tMM#t 773<DGGDME
''#,C''c48J!!#r40F""3T2G	D	15Rnk !( 5 5dFG L!23gll34d;gll33T: 4   ..5CMM#t$	  
2  	S
,,t
C%%dC6J		$ %!&0s277|,&&tzz'-'7'7('KM7SE*||C2||Hc2%##Ct<>>$h?h	* 
% 
w
	+ll3$c4 <<S" 5r:h	*	 
, <<	"GLL$666G 43 ^ [ 
2	1* 
%	$ 
,	+so   8O>%N?#AN2(N?0
O:&O O'C*O&/AO22N<7N??O		OO	OO#&O/2O;c                    |\  }}t        j                  ||j                  d      }t        j                  ||j                  d      }|j                  t        j                  ||      d      5 \  }	}
|	5  | j
                  j                  |d|      sH|j                  ||      }|j                  ||      }|j                  ||       |j                  ||       d d d        |
5  t        | |||      \  }}|j                  ||       |j                  ||       d d d        d d d        t        j                  ||j                  |      |j                  |      f      S # 1 sw Y   xY w# 1 sw Y   SxY w# 1 sw Y   WxY w)Nra   rb   rd   Fr;   zmodulo by zero)r   rh   r?   rI   ri   rj   rk   r{   re  rJ   ra  rs   rK   )r%   r&   r'   r    locrM   rN   ra   rd   rm   rn   ro   rp   s                r   real_divmod_implr    sP   DAqwV<D


gqvvE
:C	//;E 
4w&&77,c3 LLA&LLA&a&a%  wA6DAqMM!T"MM!S! 
  g&||D17<<3DEG G W [
 
s=   1E;7A&E#
E;'6E/E;#E,	(E;/E8	4E;;Fc                 <   |\  }}t        j                  ||j                        }|j                  t        j                  ||      d      5 \  }}	|5  | j
                  j                  |d|      s$|j                  ||      }
|j                  |
|       d d d        |	5  t        | |||      \  }}
|j                  |
|       d d d        d d d        t        | ||j                  |j                  |            S # 1 sw Y   fxY w# 1 sw Y   DxY w# 1 sw Y   HxY w)NFr;   r  )r   rh   r?   rI   ri   rj   rk   re  rJ   ra  r   r"   rK   )r%   r&   r'   r    r  rM   rN   r.   rm   rn   rd   _s               r   real_mod_implr    s    DAq


gqvv
.C	//;E 
4w&&77,c3 ll1a(c3'   '1a8FAsMM#s# 
 gw%ll3/1 1 W [
 
=   DAC:
D$DD:D	?DD	DDc                 <   |\  }}t        j                  ||j                        }|j                  t        j                  ||      d      5 \  }}	|5  | j
                  j                  |d|      s$|j                  ||      }
|j                  |
|       d d d        |	5  t        | |||      \  }
}|j                  |
|       d d d        d d d        t        | ||j                  |j                  |            S # 1 sw Y   fxY w# 1 sw Y   DxY w# 1 sw Y   HxY w)NFr;   rz   )r   rh   r?   rI   ri   rj   rk   r{   rJ   ra  r   r"   rK   )r%   r&   r'   r    r  rM   rN   r.   rm   rn   ra   r  s               r   real_floordiv_implr  +  s    DAq


gqvv
.C	//;E 
4w&&77.5 ||Aq)dC(  !'7Aq9GD!MM$$ 
 gw%ll3/1 1 W [
 
r  c                 "   |\  }}|j                   }| j                  r*| j                  t        j                  |      } |||      }n1|j                  d|j                  g      }	|j                  |	||f      }t        | ||j                  |      S )Nzllvm.pow)
rK  implement_powi_as_math_callrk  r   r   declare_intrinsicr?   rU  r   r"   )
r%   r&   r'   r    rM   rN   rK  impr.   rY  s
             r   real_power_implr  >  s    DAq^^F**""488S1'4 %%j166(;ll21v&gwEEr   c                 X     |j                   dg| }t        | ||j                  |      S r   rg  r   r"   r   s        r   real_lt_implr  J  .    
'

s
*T
*CgwEEr   c                 X     |j                   dg| }t        | ||j                  |      S r   r  r   s        r   real_le_implr  O  .    
'

t
+d
+CgwEEr   c                 X     |j                   dg| }t        | ||j                  |      S r   r  r   s        r   real_gt_implr  T  r  r   c                 X     |j                   dg| }t        | ||j                  |      S r   r  r   s        r   real_ge_implr  Y  r  r   c                 X     |j                   dg| }t        | ||j                  |      S r   r  r   s        r   real_eq_implr  ^  r  r   c                 X     |j                   dg| }t        | ||j                  |      S r   )rf  r   r"   r   s        r   real_ne_implr  c  s.    
 '
 
 
-
-CgwEEr   c                     |j                   \  }t        j                  ||      }| j                  t        j
                  |      } |||      S r   )r    r   r   rk  r   fabs)r%   r&   r'   r    rL   r   s         r   real_abs_implr  h  sB    88DR


2r
"C		3/Dr   c                 h    ddl m} |j                  ||d         }t        | ||j                  |      S Nr   mathimpl)numba.cpythonr  negate_realr   r"   )r%   r&   r'   r    r  r.   s         r   real_negate_implr  o  s0    &


wQ
0CgwEEr   c                     |j                   \  }|\  }| j                  ||||j                        }t        | ||j                  |      S r   r  r   s          r   real_positive_implr  u  r  r   c           	      4   |\  }t        |j                  d      }t        |j                  d      }t        |j                  d      }t        j                  ||j                        }|j	                  d||      }	|j	                  d||      }
|j                  |	      5 \  }}|5  |j                  ||       ddd       |5  |j                  |
      5 \  }}|5  |j                  ||       ddd       |5  |j                  ||       ddd       ddd       ddd       ddd       |j                  |      }t        | ||j                  |      S # 1 sw Y   xY w# 1 sw Y   sxY w# 1 sw Y   bxY w# 1 sw Y   fxY w# 1 sw Y   jxY w# 1 sw Y   nxY w)z
    np.sign(float)
    r8   r:   r   r   r=   N)
r   r?   r   rh   rg  rI   rJ   rK   r   r"   )r%   r&   r'   r    rM   r  r  rO   r  is_posis_neggt_zeronot_gt_zeror   not_lt_zeror.   s                   r   real_sign_implr  |  sJ    CQ
1661
C
1662
CAFFAD!!'1662G!!#q$/F!!#q$/F		 $:WkMM#w' (,BWkMM#w/   MM!W- ! )  
! ,,w
CgwEE W W [ )( [ 
!	 s   F$E7
FFE6E	,
E66E*		E6FFE	FE'#E6*E3/E66E?;FF	FFrealc                 ^    | j                  |||      }|j                  }t        | |||      S Nr   )make_complexr  r   r%   r&   r   r   cplxr.   s         r   complex_real_implr    3    E:D
))CgwS99r   imagc                 ^    | j                  |||      }|j                  }t        | |||      S r  )r  r  r   r  s         r   complex_imag_implr    r  r   zcomplex.conjugatec                     ddl m} | j                  ||j                  d   |d         }|j	                  ||j
                        |_        |j                         }t        | ||j                  |      S r  )	r  r  r  r    r  r  	_getvaluer   r"   )r%   r&   r'   r    r  zr.   s          r   complex_conjugate_implr    s]    &Wchhqk47;A!!'1662AF
++-CgwEEr   c                     t        | |||      S r   )r   )r%   r&   r   r   s       r   real_real_implr    s    gwU;;r   c                 \    t        j                  |j                        }t        | |||      S r   )r   get_null_valuer?   r   )r%   r&   r   r   r.   s        r   real_imag_implr    s'    

 
 
,CgwS99r   c                 8    t        | ||j                  |d         S Nr   r   r%   r&   r'   r    s       r   real_conjugate_implr    s    gwaIIr   c           	         |\  }}|j                   d   }|j                  }| j                  |||      }| j                  |||      }	| j                  ||      }
|j                  }|j	                         }|	j	                         }|
j	                         }| j                  |d      }| j                  |d      }|j                  d|	j                  |      }|j                  d|	j                  |      }|j                  ||      }|j                  |      5 \  }}|5  t        | ||||f      }| j                  |||      }|j                  |
_        |j                  |
_        d d d        |5  t        j                  dt        j                  di|   }t        j                   t        j"                         |j$                  gdz        }t'        j(                  |||      }|j+                  ||||f       d d d        d d d        |j-                  |      }t/        | ||j0                  |      S # 1 sw Y   xY w# 1 sw Y   FxY w# 1 sw Y   JxY w)Nr   r  r  r9   numba_cpowf
numba_cpow   )r    underlying_floatmake_helperrK  _getpointerget_constantrg  r  r  rA   rI   complex_mul_implr   	complex64
complex128r   rM  VoidTyper?   r   rO  rU  rK   r   r"   )r%   r&   r'   r    cacbrL   ftyr,   r-   crK  papbpcTWOrO   b_real_is_twob_imag_is_zerob_is_twothen	otherwiser.   cres	func_namerX  cpows                              r   complex_power_implr    s    HR	!B


CGRr2AGRr2AGR(A^^F	
B	
B	
B 

sA
&CQ'D((qvvs;M))$=N||M>:H		"&7tY"7GS2r(CC&&w#&>DYYAFYYAF     , I ??2;;=277)a-@D11&$	JDLLB|,  
#$ ,,r
CgwEE% T Y 
#	"s>   IAH0%
I/BH<7I0H9	5I<I	IIc                    |\  }}|j                   d   }| j                  |||      }| j                  |||      }| j                  ||      }	|j                  }
|j                  }|j                  }|j                  }|j	                  |
|      |	_        |j	                  ||      |	_        |	j                         }t        | ||j                  |      S Nr   r  )r    r  r  r  r>  r  r   r"   r%   r&   r'   r    cxcyrL   rM   rN   r  r,   r-   r  dr.   s                  r   complex_add_implr        HR	!BWb3AWb3AWb)A	A	A	A	A\\!QAF\\!QAF
++-CgwEEr   c                    |\  }}|j                   d   }| j                  |||      }| j                  |||      }| j                  ||      }	|j                  }
|j                  }|j                  }|j                  }|j	                  |
|      |	_        |j	                  ||      |	_        |	j                         }t        | ||j                  |      S r  )r    r  r  r  rB  r  r   r"   r  s                  r   complex_sub_implr    r  r   c                 :   |\  }}|j                   d   }| j                  |||      }| j                  |||      }| j                  ||      }	|j                  }
|j                  }|j                  }|j                  }|j	                  |
|      }|j	                  ||      }|j	                  |
|      }|j	                  ||      }|j                  ||      |	_        |j                  ||      |	_        |	j                         }t        | ||j                  |      S )z'
    (a+bi)(c+di)=(ac-bd)+i(ad+bc)
    r   r  )
r    r  r  r  r   rB  r>  r  r   r"   )r%   r&   r'   r    r  r  rL   rM   rN   r  r,   r-   r  r  acbdadbcr.   s                      r   r  r  +  s    HR	!BWb3AWb3AWb)A	A	A	A	A	a	B	a	B	a	B	a	B\\"b!AF\\"b!AF
++-CgwEEr   nanc                 `    d }| j                  ||||      }t        | ||j                  |      S )Nc                    | j                   }| j                  }|j                   }|j                  }|s|st        d      t        |      t        |      k\  rA|st	        t
        t
              S ||z  }|||z  z   }t	        |||z  z   |z  |||z  z
  |z        S |st	        t
        t
              S ||z  }||z  |z   }t	        | j                   |z  | j                  z   |z  | j                  |z  | j                   z
  |z        S )Nzcomplex division by zero)r  r  r   r   complexNAN)r,   r-   arealaimagbrealbimagratiodenoms           r   complex_divz%complex_div_impl.<locals>.complex_divE  s   U#$>??u:U#sC((EMEEEM)E&%/&%/1 1
 sC((EMEEME)E%!&&(E1%!&&(E13 3r   r   r   r"   )r%   r&   r'   r    r  r.   s         r   complex_div_implr  D  s4    36 
"
"7Kd
CCgwEEr   c                 R   ddl m} |j                  \  }|\  }| j                  |||      }| j                  ||      }|j	                  ||j
                        |_        |j	                  ||j                        |_        |j                         }t        | ||j                  |      S )Nr   r  r  )
r  r  r    r  r  r  r  r  r   r"   )	r%   r&   r'   r    r  r   r   cmplxr.   s	            r   complex_negate_implr  d  s    &HHESES  #S 9E


w
,C##GUZZ8CH##GUZZ8CH
--/CgwEEr   c                 :    |\  }t        | ||j                  |      S r   r   r%   r&   r'   r    r   s        r   complex_positive_implr  p  s    ESgwEEr   c                 j   |\  }}|j                   d   }| j                  |||      }| j                  |||      }|j                  d|j                  |j                        }	|j                  d|j                  |j                        }
|j                  |	|
      }t        | ||j                  |      S )Nr   r  r9   )r    r  rg  r  r  rA   r   r"   )r%   r&   r'   r    r  r  r   rM   rN   reals_are_eqimags_are_eqr.   s               r   complex_eq_implr  u  s    HR
((1+CWc4AWc4A''affaff=L''affaff=L
,,|\
2CgwEEr   c                 j   |\  }}|j                   d   }| j                  |||      }| j                  |||      }|j                  d|j                  |j                        }	|j                  d|j                  |j                        }
|j                  |	|
      }t        | ||j                  |      S )Nr   r  r>   )r    r  rf  r  r  r   r   r"   )r%   r&   r'   r    r  r  r   rM   rN   reals_are_neimags_are_ner.   s               r   complex_ne_implr    s    HR
((1+CWc4AWc4A))$?L))$?L
++lL
1CgwEEr   c                 `    d }| j                  ||||      }t        | ||j                  |      S )z)
    abs(z) := hypot(z.real, z.imag)
    c                 V    t        j                  | j                  | j                        S r   )r   hypotr  r  )r  s    r   complex_absz%complex_abs_impl.<locals>.complex_abs  s    zz!&&!&&))r   r  )r%   r&   r'   r    r  r.   s         r   complex_abs_implr    s4    * 
"
"7Kd
CCgwEEr   znumber.itemc                     |d   S )z;
    The no-op .item() method on booleans and numbers.
    r   r   r  s       r   number_item_implr    s     7Nr   c                     |j                   \  }|\  }| j                  ||||j                        }|j                  |      }t	        | ||j                  |      S r   )r    r!   r"   rE   r   )r%   r&   r'   r    r   r   istruer.   s           r   number_not_implr    sO    HHESES\\'3S__=F
,,v
CgwEEr   c                     |\  }|S r   r   r
  s        r   bool_as_boolr    s    ESJr   c                 X    |\  }|j                  d|t        |j                  d            S )Nr>   r   )r   r   r?   r
  s        r   int_as_boolr!    s)    ES  sHSXXq,ABBr   c                 X    |\  }|j                  d|t        |j                  d            S )Nr>   rc  )rf  r   r?   r
  s        r   float_as_boolr#    s)    ES!!$Xchh-DEEr   c                    |j                   \  }|\  }| j                  |||      }|j                  |j                  }}t	        |j
                  d      }	|j                  d||	      }
|j                  d||	      }|j                  |
|      S )Nrc  r>   )r    r  r  r  r   r?   rf  r   )r%   r&   r'   r    r   r   r  r  r  zeroreal_istrueimag_istrues               r   complex_as_boolr(    s    HHESES  #s3EUZZ$DDIIs#D((tT:K((tT:K;;{K00r   c                     | j                  ||j                  |j                        }| j                  |||j                  |      S r   )get_constant_genericliteral_typeliteral_valuer!   r%   r&   fromtytotyr   lits         r   literal_int_to_numberr1    sF     
&
&
C
 <<f&9&94@@r   c                 H   |j                   |j                   k(  r|S |j                   |j                   k  r!|j                  || j                  |            S |j                  r!|j	                  || j                  |            S |j                  || j                  |            S r   )r   truncget_value_typer   sextzextr%   r&   r.  r/  r   s        r   integer_to_integerr8    s    }}'
		(}}S'"8"8">??	||C!7!7!=>> ||C!7!7!=>>r   c                 D    |j                  || j                  |            S r   )inttoptrr4  r7  s        r   integer_to_voidptrr;    s     C!7!7!=>>r   c                     | j                  |      }|j                  |j                  k  r|j                  ||      S |j                  ||      S r   )r4  r   fpextfptruncr%   r&   r.  r/  r   r   s         r   float_to_floatr@    sD    

 
 
&C&}}S#&&sC((r   c                     | j                  |      }|j                  r|j                  ||      S |j                  ||      S r   )r4  r   sitofpuitofpr?  s         r   integer_to_floatrD    s;    

 
 
&C}}~~c3''~~c3''r   c                     | j                  |      }|j                  r|j                  ||      S |j                  ||      S r   )r4  r   fptosifptouir?  s         r   float_to_integerrH    s;    

 
 
&C{{~~c3''~~c3''r   c                     | j                  ||||j                        }| j                  |j                  d      }| j                  ||      }||_        ||_        |j                         S r  )r!   r  r  r  r  r  r  )r%   r&   r.  r/  r   r  r  r  s           r   non_complex_to_complexrJ    sc     <<fd.C.CDD 5 5q9D  $/EEJEJ??r   c                 *   |j                   }|j                   }| j                  |||      }| j                  ||      }| j                  ||j                  ||      |_        | j                  ||j                  ||      |_        |j                         S r  )r  r  r!   r  r  r  )	r%   r&   r.  r/  r   srctydsttysrcdsts	            r   complex_to_complexrP  *  s    ##E!!E


wc

:C


w
-C||GSXXue<CH||GSXXue<CH==?r   c                 (    | j                  |||      S r   )is_truer7  s        r   any_to_booleanrS  5  s    ??7FC00r   c                     |j                  |t        j                  d            }| j                  ||t        j
                  |      S )N    )r6  r   IntTyper!   r   int32)r%   r&   r.  r/  r   asints         r   boolean_to_anyrY  9  s5     LLbjjn-E<<T::r   c                     | j                  ||j                  |j                        }| j                  ||j                  |      S r   )r*  r+  r,  rR  r-  s         r   literal_int_to_booleanr[  ?  sD     
&
&
C
 ??7F$7$7==r   c                     |j                   }| j                  |||j                        }| j                  |||j                        }t	        j
                  ||f      S r   )r  r*  r  r  r   literal_struct)r%   r&   rL   pyvalr  r  r  s          r   constant_complexr_  L  sR    


C''ejjAD''ejjAD""D$<00r   c                 ~    t        |t        j                        rt        |      }| j	                  |      } ||      S r   )re   npbool_boolr4  )r%   r&   rL   r^  r   s        r   constant_integerrd  S  s5     %"U

 
 
$Cu:r   c                    t        | t        j                  t        j                  f      rbt        |t        j                  j
                        r=| j                  |j                  j                  k7  rt        j                  d      d }|S yy)z) Typing for the np scalar 'view' method. zOChanging the dtype of a 0d array is only supported if the itemsize is unchangedc                     t        | |      S r   r   )scalarviewtys     r   r   zscalar_view.<locals>.implm  s    &&))r   N)
re   r   r2  r   abstract	DTypeSpecr   rg   r   TypingError)rg  rh  r   s      r   scalar_viewrl  d  so    6EKK7865>>#;#;<??fll333$$() )	* = 	9r   viewr   )r   r   numpyra  r!  llvmliter   llvmlite.irr   numba.core.imputilsr   r   r   r   r	   r
   r   
numba.corer   r   r   r   r   r   numba.core.extendingr   r   numba.cpython.unsafe.numbersr   r   r/   r3   r6   r[   r_   rq   divmodr   ru   r}  	ifloordivrx   truedivitruedivr|   r_  imodr~   r   r   r   r3  r,  r2  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r%  booleanr&  r.  r/  r0  r1  r   r+  r6  r<  r?  rC  rE  rG  ra  rS  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rL   r#   r"  r2   r#  r5   r$  r   Complexr  r  r  r  r  r  clsr  r  r  r  r   r  r  r  r  r  r  r  r8  Numberr  r  rc  r  r!  r#  r(  rE   r1  r8  voidptrr;  r@  rD  rH  rJ  rP  AnyrS  rY  BooleanLiteralr[  r_  rd  rl  r   r   r   <module>r     s         8 8 8 G F ; /"FFF66r6< vu}}emm4G 5G x  %--?x!!5==%--@ A @ x>x  %--?F @ ?F x||U]]EMM:x}}emmU]]; < ;(FV x||U]]E,@,@Ax}}emmU-A-ABx||U[[%*>*>?x}}ekk5+?+?@: A @ C B:zF
F
F
F
F
F
F
F
F
F
(	FD
F	FFFFFFF'FTFF 9hkk5==%-- 8 E 8hkk5==%-- 8 E 8hkk5==%-- 8 F 8hkk5==%-- 8 F 8hkk5==%-- 8 F 8hkk5==%-- 8 F *hllEMM *+; < *hllEMM *+C D.-`	<    F
F
F
F(,i7X vu{{EKK0G 1G21&1&	FF
F
F
F
F
F
FFF< [[ #hllB #M 2 $hmmR $] 3 #hllB #M 2 $hmmR $] 3 #hllB #M 2 $hmmR $] 3 (hR (); < )h  "b )*< = 'hB ' 6 (hR ( 7 #hllB #M 2 $hmmR $] 3 #hllB #O 4 $hmmR $_ 5 c2r ? + "hkk2r "< 0 "hkk2r "< 0 "hkk2r "< 0 "hkk2r "< 0 "hkk2r "< 0 "hkk2r "< 0 c2 } % hllB  0 1 hllB  2 3 u}}f%: &:
 u}}f%: &:
 "EMM2F 3F<:J KK'CM#v~.M#v~.+M%s+,?@ ( x||U]]EMM:x}}emmU]];sEMM5==1'F 2 < ;'FRF F F. ElF@	FF
	F	FF ]] #hllB #$4 5 $hmmR $%5 6 #hllB #$4 5 $hmmR $%5 6 #hllB #$4 5 $hmmR $%5 6 'hB '(8 9 (hR ()9 : hllB  3 4 hllB  5 6 #hkk2r "? 3 "hkk2r "? 3 c2 ' ( }emm,}ell+ , -F tU]]# $ tU]]#C $C tU[[!F "F tU]]#1 $1 ==%++u}}
5B$M(--$_5 6 ,hmmU]] +O < E  %--0E  %++.E  %--0A 1 / 1A EMM5==)? *? EMM5==)? *? EKK%) &) EMM5;;'( (( EKK'( (( EKK'EMM5==) * ( EMM5==) * EIIu}}%1 &1 EMM5<<(; );
 E  %--0E  %--0> 1 1> 1 1     %V $[ 1 &v &{ 3r   