+
    i                      ^ RI Ht ^ RIHtHt ^ RIHt ^RIHt ^RI	H
t
 ^RIHt ^RIHt ^RIHt ^R	I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H t  ^RI!H"t"H#t# ^ RI$H%t% ^ RI&H't' ^ RI(H)t) ^ RI*H+t+  ! R R]4      t,]+! R4      t-]-P]                  ]/]/3],4       ^RI.H0t0 ^RI1H2t2H3t3 ^RI4H5t5H6t6 ^RI7H8t8H9t9H:t: R# )    )annotations)CallableTYPE_CHECKING)product)_sympify)cacheit)S)Expr)PrecisionExhausted)expand_complexexpand_multinomial
expand_mul_mexpand	PoleError)
fuzzy_bool	fuzzy_not	fuzzy_andfuzzy_or)global_parameters)is_gtis_lt)
NumberKindUndefinedKind)sift)sympy_deprecation_warning)as_int)
Dispatcherc                    a  ] tR t^tRtRtR?t]'       d   ]R R l4       t	]R R l4       t
]R R l4       t]R	 4       t]R@R
 R ll4       tRAR lt]R 4       tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R t#R  t$R! t%R" t&R# t'R$ t(R% t)R& t*RBR' lt+R( t,R) t-R* t.R+ t/R, t0R- t1R. t2R/ t3R0 t4R1 t5RCR2 lt6RDR3 lt7R4 t8]R5 4       t9V 3R6 lt:R7 t;R8 t<R9 t=R: t>RER; lt?R< t@R= tAR>tBV ;tC# )FPowa  
Defines the expression x**y as "x raised to a power y"

.. deprecated:: 1.7

   Using arguments that aren't subclasses of :class:`~.Expr` in core
   operators (:class:`~.Mul`, :class:`~.Add`, and :class:`~.Pow`) is
   deprecated. See :ref:`non-expr-args-deprecated` for details.

Singleton definitions involving (0, 1, -1, oo, -oo, I, -I):

+--------------+---------+-----------------------------------------------+
| expr         | value   | reason                                        |
+==============+=========+===============================================+
| z**0         | 1       | Although arguments over 0**0 exist, see [2].  |
+--------------+---------+-----------------------------------------------+
| z**1         | z       |                                               |
+--------------+---------+-----------------------------------------------+
| (-oo)**(-1)  | 0       |                                               |
+--------------+---------+-----------------------------------------------+
| (-1)**-1     | -1      |                                               |
+--------------+---------+-----------------------------------------------+
| S.Zero**-1   | zoo     | This is not strictly true, as 0**-1 may be    |
|              |         | undefined, but is convenient in some contexts |
|              |         | where the base is assumed to be positive.     |
+--------------+---------+-----------------------------------------------+
| 1**-1        | 1       |                                               |
+--------------+---------+-----------------------------------------------+
| oo**-1       | 0       |                                               |
+--------------+---------+-----------------------------------------------+
| 0**oo        | 0       | Because for all complex numbers z near        |
|              |         | 0, z**oo -> 0.                                |
+--------------+---------+-----------------------------------------------+
| 0**-oo       | zoo     | This is not strictly true, as 0**oo may be    |
|              |         | oscillating between positive and negative     |
|              |         | values or rotating in the complex plane.      |
|              |         | It is convenient, however, when the base      |
|              |         | is positive.                                  |
+--------------+---------+-----------------------------------------------+
| 1**oo        | nan     | Because there are various cases where         |
| 1**-oo       |         | lim(x(t),t)=1, lim(y(t),t)=oo (or -oo),       |
|              |         | but lim( x(t)**y(t), t) != 1.  See [3].       |
+--------------+---------+-----------------------------------------------+
| b**zoo       | nan     | Because b**z has no limit as z -> zoo         |
+--------------+---------+-----------------------------------------------+
| (-1)**oo     | nan     | Because of oscillations in the limit.         |
| (-1)**(-oo)  |         |                                               |
+--------------+---------+-----------------------------------------------+
| oo**oo       | oo      |                                               |
+--------------+---------+-----------------------------------------------+
| oo**-oo      | 0       |                                               |
+--------------+---------+-----------------------------------------------+
| (-oo)**oo    | nan     |                                               |
| (-oo)**-oo   |         |                                               |
+--------------+---------+-----------------------------------------------+
| oo**I        | nan     | oo**e could probably be best thought of as    |
| (-oo)**I     |         | the limit of x**e for real x as x tends to    |
|              |         | oo. If e is I, then the limit does not exist  |
|              |         | and nan is used to indicate that.             |
+--------------+---------+-----------------------------------------------+
| oo**(1+I)    | zoo     | If the real part of e is positive, then the   |
| (-oo)**(1+I) |         | limit of abs(x**e) is oo. So the limit value  |
|              |         | is zoo.                                       |
+--------------+---------+-----------------------------------------------+
| oo**(-1+I)   | 0       | If the real part of e is negative, then the   |
| -oo**(-1+I)  |         | limit is 0.                                   |
+--------------+---------+-----------------------------------------------+

Because symbolic computations are more flexible than floating point
calculations and we prefer to never return an incorrect answer,
we choose not to conform to all IEEE 754 conventions.  This helps
us avoid extra test-case code in the calculation of limits.

See Also
========

sympy.core.numbers.Infinity
sympy.core.numbers.NegativeInfinity
sympy.core.numbers.NaN

References
==========

.. [1] https://en.wikipedia.org/wiki/Exponentiation
.. [2] https://en.wikipedia.org/wiki/Zero_to_the_power_of_zero
.. [3] https://en.wikipedia.org/wiki/Indeterminate_forms

Tc                   V ^8  d   QhRR/# )   returnztuple[Expr, Expr] )formats   "N/var/www/html/photoedit/myenv/lib/python3.14/site-packages/sympy/core/power.py__annotate__Pow.__annotate__v   s     	 	+ 	    c                	    R # Nr#   selfs   &r%   argsPow.argsu   s    r(   c                   V ^8  d   QhRR/# r!   r"   r
   r#   )r$   s   "r%   r&   r'   z   s      d r(   c                	(    V P                   ^ ,          # r   r-   r+   s   &r%   basePow.basey       yy|r(   c                   V ^8  d   QhRR/# r0   r#   )r$   s   "r%   r&   r'   ~   s      T r(   c                	(    V P                   ^,          #    r3   r+   s   &r%   expPow.exp}   r6   r(   c                	v    V P                   P                  \        J d   V P                  P                  # \        # r*   )r;   kindr   r4   r   r+   s   &r%   r>   Pow.kind   s&    88==J&99>>!  r(   c               $    V ^8  d   QhRRRRRR/# )r!   bzExpr | complexer"   r
   r#   )r$   s   "r%   r&   r'      s&     ` ` `> `T `r(   c                	0   Vf   \         P                  p\        V4      p\        V4      p^RIHp \        WF4      '       g   \        WV4      '       d   \        R4      hWE3 FB  p\        V\        4      '       d   K  \        R\        V4      P                  : R2RR^R7       KD  	  V'       Ed   V\        P                  J d   \        P                  # V\        P                  J d   \        V\        P                   4      '       d   \        P                  # \        V\        P"                  4      '       d1   \%        V\        P                   4      '       d   \        P&                  # \%        V\        P"                  4      '       dC   VP(                  '       d   \        P                  # VP(                  RJ d   \        P                  # V\        P&                  J d   \        P                   # V\        P                   J d   V# VR8X  d   V'       g   \        P                  # VP*                  P                  R	8X  dL   V\        P,                  8X  d6   ^ R
IHp V! \3        WEP4                  4      \3        WEP6                  4      4      # MVP8                  '       d   VP:                  '       g   VP<                  '       d   VP>                  '       d   VP@                  '       g   VPB                  '       dM   VPE                  4       '       d7   VPF                  '       d   V) pM VPH                  '       d   \3        V) V4      ) # \        P                  WE39   d   \        P                  # V\        P                   J d<   \K        V4      PL                  '       d   \        P                  # \        P                   # ^ RI'H(p	 VPR                  '       EgL   V\        P,                  JEd7   \        WI4      '       Eg%   ^RI*H+p
 ^ RI'H,p ^ RI-H.p V
! VRR7      P_                  4       w  rV! V4      w  pp\        VV4      '       d6   VP`                  ^ ,          V8X  d   \        P,                  W,          ,          # VPb                  '       d   ^ RI2H3pH4p V! V! V4      4      pVPB                  '       dm   V'       de   VV! V
! VRR7      ) 4      V\        Pj                  ,          \        Pl                  ,          ,           8X  d   \        P,                  W,          ,          # VPo                  V4      pVe   V# \        Pp                  ! WV4      pV Ps                  V4      p\        V\2        4      '       g   V# VPt                  ;'       d    VPt                  Vn:        V# )N)
Relationalz Relational cannot be used in Powzf
    Using non-Expr arguments in Pow is deprecated (in this case, one of the
    arguments is of type zf).

    If you really did intend to construct a power with this base, use the **
    operator instead.z1.7znon-expr-args-deprecated)deprecated_since_versionactive_deprecations_target
stacklevelFAccumulationBoundsAccumBounds)	exp_polar)factor_termslog)fraction)sign)rP   im);r   evaluater   
relationalrD   
isinstance	TypeErrorr
   r   type__name__r	   ComplexInfinityNaNInfinityr   OneNegativeOner   Zero	is_finite	__class__Exp1!sympy.calculus.accumulationboundsrJ   r   minmax	is_Symbol
is_integer
is_Integer	is_numberis_Mul	is_Numbercould_extract_minus_signis_evenis_oddabsis_infinite&sympy.functions.elementary.exponentialrK   is_Atom	exprtoolsrL   rN   sympy.simplify.radsimprO   as_coeff_Mulr-   is_Add$sympy.functions.elementary.complexesrP   rQ   ImaginaryUnitPi_eval_power__new__ _exec_constructor_postprocessorsis_commutative)clsrA   rB   rS   r4   r;   rD   argrJ   rK   rL   rN   rO   cexnumdenrP   rQ   sobjs   &&&&                 r%   rz   Pow.__new__   s   (11H{qk 	+d'':c+F+F>?? ;Cc4(()s),,/ 0 .3/I 
  8a'''uuajj quu%%::%q}}--%aee2D2D66Mq}}--~~~ 000~~. uuaff}uu4(((''+??166>M&s4'93tWW;MNN " ---CNNNcnnn>>>dkkkT^^^7799;;; 5DZZZsO++uu#uus8'''55Luu M{{{t166'9*TB]B]7J?(59FFHEA'|HC!#s++t0C vv.Q DN;;;1 #\$U%C$C DqGXYZY]Y]G] ]2^#$66AE?2&&s+?Jll3c*2237#s##J"11HHc6H6H
r(   c                	T    V P                   \        P                  8X  d	   ^ RIHp V# R# )r   rM   N)r4   r	   ra   rp   rN   )r,   argindexrN   s   && r%   inversePow.inverse   s    99BJr(   c                	     ^^V P                   3# )   )rX   r}   s   &r%   	class_keyPow.class_key   s    !S\\!!r(   c                	X   ^ RI HpHp V P                  4       w  rEV! VP	                  V4      V4      '       dr   VP                  4       '       dZ   V! VP                  V4      V4      '       d   \        V) V4      # V! VP                  V4      V4      '       d   \        V) V4      ) # R# R# R# )r   )askQN)	sympy.assumptions.askr   r   as_base_expintegerrk   evenr   odd)r,   assumptionsr   r   rA   rB   s   &&    r%   _eval_refinePow._eval_refine   s    0!qyy|[))a.H.H.J.J166!9k**A2qz!QUU1X{++QB
{" , /K)r(   c                	<   V P                  4       w  r#V\        P                  J d   W#,          V,          # R pVP                  '       d   ^pEMVP                  '       d   ^pEMVP
                  Ee   ^ RIHpHpH	pH
p ^ RIHp	Hp
 ^ RIHp R pR pVP
                  '       Ed   VR8X  dk   V! V4      '       d\   VP                   RJ d0   \        P"                  V,          \%        V) W1,          4      ,          # VP                   RJ d   \%        W!) 4      # MgVP&                  '       dV   VP
                  '       d   \)        V4      pVP*                  '       d'   \)        V! V4      4      \        P,                  ,          p\)        V4      ^8  R8X  g   V^8X  d   ^pEMVP.                  '       d   ^pEMV! V4      P.                  '       d   \)        V4      ^8  R8X  d   ^pEMV! V4      '       d   V	! ^\        P0                  ,          \        P,                  ,          V,          V! \        P2                  W5! V4      ,          ^\        P0                  ,          ,          ,
          4      ,          4      pVP
                  '       d$   V! V! V4      V,
          4      ^ 8X  d
   V! V4      pMR pM V	! ^\        P,                  ,          \        P0                  ,          V,          V! \        P2                  V! W:! V4      ,          4      ^,          \        P0                  ,          ,
          4      ,          4      pVP
                  '       d$   V! V! V4      V,
          4      ^ 8X  d
   V! V4      pMR p Ve   V\%        W#V,          4      ,          # R #   \4         d    R p L.i ; i)	N)r~   rQ   rerP   r;   rN   )floorc                    \        V RR4      ^8X  d   R# V P                  4       w  rVP                  '       d   V^8X  d   R# R# R# )zJReturn True if the exponent has a literal 2 as the
denominator, else None.qNT)getattras_numer_denomrf   )rB   nds   &  r%   _halfPow._eval_power.<locals>._half  sA     1c4(A-'')<<<AF %+<r(   c                z     V P                  ^RR7      pVP                  '       d   V# R#   \         d     R# i ; i)zHReturn ``e`` evaluated to a Number with 2 significant
digits, else None.TstrictN)evalfrj   r   )rB   rvs   & r%   _n2Pow._eval_power.<locals>._n2  s>    40B|||!	 $) s   $+ + ::TFrR   )r   r	   rZ   rf   is_polaris_extended_realrv   r~   rQ   r   rP   rp   r;   rN   #sympy.functions.elementary.integersr   is_negativer]   r   rl   rn   is_imaginaryrw   is_extended_nonnegativerx   Halfr   )r,   exptrA   rB   r   r~   rQ   r   rP   r;   rN   r   r   r   s   &&            r%   ry   Pow._eval_power   s   !:D4<???AZZZA+NNGA  !!! 7T{{==D0#$==$#6sA2qv#FF]]e3#&q%=0YYY)))F~~~1Jq6FQJ4'16A...AU222A
t7KA4[[AaddF1??2473q61QTT6!2294 4 5A)))c$q'A+.>!.C G 

Aaoo-add247affr!CF(|A~add'::;< =A )))c$q'A+.>!.C G  =SdF^##  * As   +B=N )N NNc                l   V P                   V P                  r2VP                  '       Ed
   VP                  '       Ed   VP                  '       d   W!,          ^ 8X  d   \        P
                  # ^ RIHp VP                  '       d   VP                  '       d   VP                  '       d   \        V4      \        V4      \        V4      rvpVP                  4       pV^P8:  dV   Wh8  dP   VP                  4       ^,          V8  d4   \        V! V4      4      p	\        \        WYWi,          ,           V4      4      # \        \        WVV4      4      # ^RIHp
 \        V\         4      '       dA   VP                  '       d/   VP"                  '       d   V
! W!4      pV
! \!        W#RR7      V4      # \        V\         4      '       du   VP                  '       da   VP"                  '       dM   \        V4      P                  4       pV^P8:  d+   V! V4      p	W! W94      ,           pV
! \!        W#RR7      V4      # R# R# R# R# R# R# )a  A dispatched function to compute `b^e \bmod q`, dispatched
by ``Mod``.

Notes
=====

Algorithms:

1. For unevaluated integer power, use built-in ``pow`` function
with 3 arguments, if powers are not too large wrt base.

2. For very large powers, use totient reduction if $e \ge \log(m)$.
Bound on m, is for safe factorization memory wise i.e. $m^{1/4}$.
For pollard-rho to be faster than built-in pow $\log(e) > m^{1/4}$
check is added.

3. For any unevaluated power found in `b` or `e`, the step 2
will be recursed down to the base and the exponent
such that the $b \bmod q$ becomes the new base and
$\phi(q) + e \bmod \phi(q)$ becomes the new exponent, and then
the computation for the reduced expression can be done.
)totient)ModFrS   N)r4   r;   rf   is_positiver	   r^   %sympy.functions.combinatorial.numbersr   rg   int
bit_lengthIntegerpowmodr   rU   r   rh   )r,   r   r4   r;   r   rA   rB   mmbphir   r   s   &&          r%   	_eval_ModPow._eval_ModR  s   0 IItxxc>>>cooo|||AvvE3>>>allld)SXs1va\\^8ALLNA,=,Bgaj/C"3q+q#9::s1|,, $$$T^^^4|3t591==#s##3=== V..0
 #!!*CC-Cs4u=qAA $ <I#) .>r(   c                	    V P                   P                  '       d5   V P                   P                  '       d   V P                  P                  # R # R # r*   )r;   rf   r   r4   rl   r+   s   &r%   _eval_is_evenPow._eval_is_even  s9    88488#7#7#799$$$ $8r(   c                	T    \         P                  V 4      pVR J d   V P                  # V# T)r   _eval_is_extended_negativer_   )r,   ext_negs   & r%   _eval_is_negativePow._eval_is_negative  s(    006d?>>!r(   c                	F   V P                   V P                  8X  d!   V P                   P                  '       d   R # R# V P                   P                  '       d!   V P                  P                  '       d   R # R# V P                   P
                  '       d?   V P                  P                  '       d   R # V P                  P                  '       d   R# R# V P                   P                  '       d5   V P                  P                  '       d   V P                  P                  # R# V P                   P                  '       d!   V P                  P                  '       d   R# R# V P                   P                  '       d   V P                  P                  '       dL   V P                  ^,          pVP                  '       d   R # VP                  '       d   VP                  RJ d   R# V P                  P                  '       d#   ^ RIHp V! V P                   4      P                  # R# R# )TFrM   N)r4   r;   r   r   is_realis_extended_negativerl   rm   is_zeror   is_extended_nonpositiver   rf   rp   rN   )r,   r   rN   s   &  r%   _eval_is_extended_positivePow._eval_is_extended_positive  se   99 yy000 1YY"""xx  YY+++xxxx YYxx(((xx''' )YY...xx YY###xx"""HHqL999<<<AII$6 xx$$$F499~222 % $r(   c                	   V P                   \        P                  J d;   V P                  P                  '       g   V P                  P
                  '       d   R # V P                  P                  '       d[   V P                   P                  '       d   V P                  P                  '       d   R# V P                   P                  '       d   R # R# V P                  P                  '       d!   V P                   P
                  '       d   R # R# V P                  P                  '       d!   V P                   P
                  '       d   R # R# V P                  P                  '       d!   V P                   P                  '       d   R # R# V P                  P                  '       d!   V P                   P                  '       d   R # R# V P                  P
                  '       d!   V P                   P                  '       d   R # R# R# FTN)r;   r	   r   r4   
is_complexr   r   rm   r_   rl   is_extended_positiver   r   r   r+   s   &r%   r   Pow._eval_is_extended_negative  sH   88qvvyy###tyy'A'A'A99)))xx499#6#6#6xx  YY+++xx((( )YYxx((( )YY...xx/// 0YY...xx  YY'''xx   (r(   c                	v   V P                   P                  '       d?   V P                  P                  '       d   R # V P                  P                  '       d   R# R# V P                   \
        P                  8X  d   V P                  \
        P                  J # V P                   P                  RJ EdM   V P                   P                  '       d   V P                  P                  '       d   R# V P                  P                  '       d   V P                   P                  # V P                  P                  '       d   R# V P                  P                  '       d   V P                  P                  '       d   ^\        V P                   4      ,
          P                  '       d   V P                  P                  # ^\        V P                   4      ,
          P                  '       d   V P                  P                  # R# R# R# V P                   P                  '       d!   V P                  P                  '       d   R# R# R# TFN)r4   r   r;   r   r   r	   ra   NegativeInfinityr_   r   ro   is_nonnegativer   rn   r   r+   s   &r%   _eval_is_zeroPow._eval_is_zero  st   99xx,,,111 2YY!&& 88q1111YY%'yy"""txx'9'9'9%%%yy,,,(((%%%$((*C*C*CDII&<<<88888#dii.(>>>88888 ? +D%
 YY   TXX%9%9%9 &: r(   c                	   V P                   w  rVP                  '       d%   VP                  R J d   VP                  '       d   R # VP                  '       dO   VP                  '       d=   V\        P
                  J d   R# VP                  '       g   VP                  '       d   R# VP                  '       d}   VP                  '       dk   VP                  '       g   VP                  '       dG   \        V^,
          P                  4      '       d%   \        V^,           P                  4      '       d   R # VP                  '       d9   VP                  '       d'   V P                  ! V P                   !  pVP                  # VP                  '       d.   VP                  '       d   V^,
          P                  '       d   R # VP                  '       d2   VP                  '       d   V^,           P                  '       d   R # R# R# R# r   )r-   is_rationalrf   r   r	   r]   r   r   r_   r   r   rj   funcrg   )r,   rA   rB   checks   &   r%   _eval_is_integerPow._eval_is_integer  s,   yy===||u$<<<ALLLAMM!1===<<<AMMMq{{{alll!a%))iQ.H.H;;;1;;;IItyy)E###===Q]]]A/B/B/B===Q]]]A/B/B/B 0C]=r(   c                	H   V P                   \        P                  J d   V P                  P                  '       d   R # V P                  P
                  '       dH   ^\        P                  ,          V P                  ,          \        P                  ,          P                  # ^ RI	H
pHp V P                   P                  pVf   V P                   P                  V8X  d=   V P                   P                  P
                  '       d   V P                  P
                  # V P                   P                  \        8X  de   V P                   P                   \        P                  J d=   V P                   P                  P
                  '       d   V P                  P
                  # R# V P                  P                  pVf   R# V'       Ed   V'       Ed   V P                   P                  '       d   R # V P                   P                  '       d   V P                  P                  '       d   R # V P                  P                  '       d   V P                   P                   '       d   R # V P                  P                  '       d   V P                  P"                  '       d   R # V P                   P$                  '       d   V P                  P&                  '       d   R# V'       db   V P                  P$                  '       dF   V P                   P(                  RJ d,   \        V P                   V P                  ) 4      P                  # V P                   P
                  pV P                  P
                  pV'       Edg   V P                  P                  '       d?   V P                  P                  '       d   R # V P                  P*                  '       d   R# EMV'       d%   V! V P                   4      P
                  '       d   R # V P                  P,                  '       dr   V P                  P/                  4       w  rxV'       dM   VP0                  '       d;   \3        V P                   V,          V P                   V,          RR7      P                  # MSV P                   \        P                  ) \        P                  39   d$   V P                  ^,          P                  RJ d   R# V'       Ed   V'       Ed   V P                   \        P4                  J d   R # V P                  P7                  \        P                  4      pV'       d   V P                   P8                  '       df   VP8                  '       dT   V P                   P:                  '       d8   V P                   ^,
          P:                  '       d   VP:                  '       d   R# Wq! V P                   4      ,          \        P                  ,          P                  p	V	e   V	# VRJ d   V'       d   \=        V P                  \>        4      '       d   V P                  P@                  ^8X  d   R# ^ RI!H"p
 V
! V P                   4      V P                  ,          \        P                  ,          pVPF                  '       d   VP                  # R# R# R# )T)rN   r;   NFr   r~   )$r4   r	   ra   r;   r   r   rw   rx   rl   rp   rN   r   r   r   r   rf   is_extended_nonzeror   r   is_Rationalr   rm   ru   as_coeff_Addrg   Mulr]   coeffr   
is_nonzerorU   Rationalprv   r~   r   )r,   rN   r;   real_breal_eim_bim_er   aokr~   is   &           r%   _eval_is_extended_realPow._eval_is_extended_real  s   99xx(((&&&!//)$((21447@@@C++>yy~~$)C)C)Cxx,,,yy~~$166)AdiimmF`F`F`xx,,,**>6ffyy---222txx7W7W7W$$$)F)F)F$$$)@)@)@///88''' dhh333		8I8IU8Rtyy488),===yy%%xx$$4xx"""88###XX___  %#dii.555xx,,.		1diilUDDTDTU/AAHHQJ**e3 6ddyyAMM)q/A99(((Q]]]yy+++Q0J0J0Jq|||$DII&qtt+77>IU?v$((H--$((**/@DIItxx',A|||||#   &?r(   c                	~   V P                   \        P                  8X  d6   \        V P                  P
                  V P                  P                  .4      # \        ;QJ d&    R  V P                   4       F  '       d   K   RM	  RM! R  V P                   4       4      '       d   V P                  4       '       d   R# R# R# )c              3  8   "   T F  qP                   x  K  	  R # 5ir*   )r   ).0r   s   & r%   	<genexpr>'Pow._eval_is_complex.<locals>.<genexpr>B  s     /Y||Y   FTN)
r4   r	   ra   r   r;   r   r   allr-   _eval_is_finiter+   s   &r%   _eval_is_complexPow._eval_is_complex=  sy    99TXX00$((2O2OPQQ3/TYY/333/TYY///D4H4H4J4J 5K/r(   c                	   V P                   P                  R J d   R # V P                   P                  '       d;   V P                  P                  '       d   V P                  P
                  pVe   V# R# V P                   \        P                  8X  dh   ^V P                  ,          \        P                  \        P                  ,          ,          pVP                  '       d   R # VP
                  '       d   R# R# V P                  P                  '       d)   ^ RIHp V! V P                   4      P                  pVe   R # V P                   P                  '       d   V P                  P                  '       d   V P                   P                  '       d   R # V P                  P                  pV'       g   V# V P                  P                  '       d   R # ^V P                  ,          P                  pV'       d   V P                   P                   # V# V P                   P                  R J dZ   ^ RIHp V! V P                   4      V P                  ,          \        P                  ,          p^V,          P
                  p	V	e   V	# R# R# )FNTrM   r   )r4   r|   r   r;   rf   rm   r	   ra   rx   rw   rl   rp   rN   r   r   r   r   rv   r~   )
r,   r   frN   imlograthalfr~   r   isodds
   &         r%   _eval_is_imaginaryPow._eval_is_imaginaryE  s   99##u,99!!!xx"""hhoo?J99DHHQ__ 45Ayyyxxx88   B		N//E 99%%%$((*C*C*Cyy$$$hh**J88&&& dhhJ22D#yy444K99%%.@DIItxx',AqSLLE  !	 /r(   c                	Z   V P                   P                  '       d   V P                   P                  '       d   V P                  P                  # V P                   P
                  '       d   V P                  P                  '       d   R # V P                  \        P                  J d   R # R# R# TN)r;   rf   r   r4   rm   r   r	   r]   r+   s   &r%   _eval_is_oddPow._eval_is_oddv  sq    88xx###yy'''(((TYY-=-=-=amm+ , r(   c                	   V P                   P                  '       dY   V P                  P                  '       d   R # V P                  P                  '       g   V P                  P
                  '       d   R# V P                  P                  pVf   R# V P                   P                  pVf   R# V'       dP   V'       dF   V P                   P                  '       g&   \        V P                  P                  4      '       d   R# R# R# R# r   )	r;   r   r4   r   ro   r   r_   r   r   )r,   c1c2s   &  r%   r  Pow._eval_is_finite  s    88yy   yy$$$		(<(<(<YY  :XX:"xx&&&)DII4E4E*F*F +G 2r(   c                    V P                   P                  '       dF   V P                  P                  '       d(   V P                  ^,
          P                  '       d   R# R# R# R# )z=
An integer raised to the n(>=2)-th power cannot be a prime.
FN)r4   rf   r;   r   r+   s   &r%   _eval_is_primePow._eval_is_prime  sE     99DHH$7$7$7TXX\<V<V<V =W$7r(   c                   V P                   P                  '       d   V P                  P                  '       d   V P                   ^,
          P                  '       d$   V P                  ^,
          P                  '       g\   V P                   ^,           P                  '       d?   V P                  P                  '       d!   V P                  P
                  '       d   R# R# R# R# R# R# )zC
A power is composite if both base and exponent are greater than 1
TN)r4   rf   r;   r   r   rl   r+   s   &r%   _eval_is_compositePow._eval_is_composite  s     II   TXX%8%8%8ii!m(((dhhl-G-G-GYY]'''DHH,@,@,@TXXEUEUEU FV,@' &9 r(   c                	.    V P                   P                  # r*   )r4   r   r+   s   &r%   _eval_is_polarPow._eval_is_polar  s    yy!!!r(   c                		   ^ RI Hp \        V P                  V4      '       dj   V P                  P                  W4      pV P                  P                  W4      p\        WS4      '       d   VP                  V4      # V P                  WE4      # ^ RIHpH	p R pWP                  8X  g&   W8X  d   V P                  \        P                  8X  dk   VP                  '       d8   \        V\        4      '       d"   V! V P                  P                  W4      4      # W P                  P                  W4      ,          # \        WP                  4      '       dV   V P                  VP                  8X  d;   V! V P                  VP                  4      p	V	P                  '       d   \!        W)4      # \        WP                  4      '       Ed   V P                  VP                  8X  Ed   V P                  P"                  RJ d   V P                  P%                  \&        RR7      p
VP                  P%                  \&        RR7      pV! WV4      w  rpV'       d8   V P                  W-4      pVe!   \)        V\!        VP                  V4      4      pV# EM,VP                  p. p. pVP+                  4       pV P                  P,                   F  pVP                  W4      pVP+                  4       p
V! WV4      w  rpV'       d/   VP/                  W-,          4       Ve   VP/                  V4       Kf  VP0                  '       g   VP2                  '       g    R# VP/                  V4       K  	  V'       dM   \5        V!  pTP/                  V^8w  d   \!        V P                  VRR7      MV P                  4       \)        V!  # \        W4      '       g2   VP6                  '       Ed   VP                  \        P                  J d   V P                  P8                  '       d   V P                  P:                  '       d   VP                  P%                  \&        RR7      p
V P                  V! V P                  4      ,          P%                  \&        RR7      pV! WV4      w  rpV'       d8   V P                  W-4      pVe!   \)        V\!        VP                  V4      4      pV# R# R# R# R# R# )r   rI   r   c                   V w  r4Vw  rVWF8X  d   VP                   '       d   W5,          p \        VRR7       RpWR3# \        V\        4      '       g   V3p\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       g   R#  \        \        V4      \        V4      4      w  r{V^ 8  d#   V^ 8w  d   V^,          pV\        V4      ,          pV^ 8X  d   RpM\        V.VO5!  pRW|3# R#   \         d_    TP                  4       w  rT	P                  ;'       d    T
P
                  ;'       g!    T	P                  ;'       d    T
P                  p EL(i ; i  \         d     L{i ; i)a  Return (bool, pow, remainder_pow) where, if bool is True, then the
exponent of Pow `old` will combine with `pow` so the substitution
is valid, otherwise bool will be False.

For noncommutative objects, `pow` will be an integer, and a factor
`Pow(old.base, remainder_pow)` needs to be included. If there is
no such factor, None is returned. For commutative objects,
remainder_pow is always None.

cti are the coefficient and terms of an exponent of self or old
In this _eval_subs routine a change like (b**(2*x)).subs(b**x, y)
will give y**2 since (b**x)**2 == b**(2*x); if that equality does
not hold then the substitution should not occur so `bool` will be
False.

Fr   TNc              3  8   "   T F  qP                   x  K  	  R # 5ir*   )rf   )r   terms   & r%   r   1Pow._eval_subs.<locals>._check.<locals>.<genexpr>  s     B646r   )FNN)r|   r   
ValueErrorr   r   r   r   rU   tupler   divmodr   )ct1ct2oldcoeff1terms1coeff2terms2r   combinesrA   rB   	remainderremainder_pows   &&&          r%   _checkPow._eval_subs.<locals>._check  s]   " !NF NF%%% -Chs51#' $$.. &fe44"(3B6B333B6BBB00)/vv)O7yA~1HC%7I$>,0M,/	,CF,CM#S77
 %$= & h"0#$==#>#>QYY#g#g!BRBRBgBgWXWgWgh4 & s6   C9 A#E% 9/E")E"=E"E"!E"%E32E3F)as_AddNr   )rb   rJ   rU   r;   r4   subs__rpow__r   rp   rN   r	   ra   is_Functionr   _subsrj   r   ru   as_independentSymbolr   as_coeff_mulr-   appendr|   rf   Addis_Powr   r   )r,   r'  newrJ   rA   rB   r;   rN   r/  lr%  r&  r   r   r.  resultoargnew_lo_alr   newaexpos   &&&                   r%   
_eval_subsPow._eval_subs  s   Adhh,,		s(Ac'A!))zz!}$99Q?"C8	%t ))
tyyAFF/B:c8#<#<488>>#344HHNN3444 c99%%$((cgg*=DIIsxx(A{{{3{"c99%%$))sxx*?xx%'hh--fU-Cgg,,VE,B)/#)>&!YYs0F$0!$VS=-I!J!M  ww'')A773,D++-C-3Cc-B*B]SX.(4 KK6  /// KK% ' :DLLQRTYYu!EX\XaXab;&s  SZZZCHH4FTXXMfMfMfkoktkt  lA  lA  lA''(((>C88C		N*::u ; &C%+Cc%:"B]3, , SXX})EFF	  lAMf4FZr(   c                    V P                   w  rVP                  '       d;   VP                  ^8X  d*   VP                  ^8w  d   \	        VP                  4      V) 3# W3# )az  Return base and exp of self.

Explanation
===========

If base a Rational less than 1, then return 1/Rational, -exp.
If this extra processing is not needed, the base and exp
properties will give the raw arguments.

Examples
========

>>> from sympy import Pow, S
>>> p = Pow(S.Half, 2, evaluate=False)
>>> p.as_base_exp()
(2, -2)
>>> p.args
(1/2, 2)
>>> p.base, p.exp
(1/2, 2)

)r-   r   r   r   r   )r,   rA   rB   s   &  r%   r   Pow.as_base_exp#  sH    . yy===QSSAX!##(133<!##tr(   c                	f   ^ RI Hp V P                  P                  V P                  P
                  r2V'       d$   V! V P                  4      V P                  ,          # V'       d$   V P                  V! V P                  4      ,          # VRJ d$   VRJ d   \        V 4      pW@8w  d	   V! V4      # R# R# R# )r   )adjointFN)rv   rI  r;   rf   r4   r   r   )r,   rI  r   r   expandeds   &    r%   _eval_adjointPow._eval_adjoint?  s    @xx""DII$9$91499%txx//99gdhh///:!u*%d+Hx((   %:r(   c                	   ^ RI Hp V P                  P                  V P                  P
                  r2V'       d$   V! V P                  4      V P                  ,          # V'       d$   V P                  V! V P                  4      ,          # VRJ d    VRJ d   \        V 4      pW@8w  d	   V! V4      # V P                  '       d   V # R# )r   )	conjugateFN)rv   rN  r;   rf   r4   r   r   r   )r,   r   r   r   rJ  s   &    r%   _eval_conjugatePow._eval_conjugateK  s    Gxx""DII$9$91TYY<))99ak)):!u*%d+H{"   K !r(   c                	D   ^ RI Hp V P                  \        P                  8X  d9   V P                  \        P                  V P                  P                  4       4      # V P                  P                  V P                  P                  ;'       g    V P                  P                  r2V'       d   V P                  V P                  ,          # V'       d$   V! V P                  4      V P                  ,          # VRJ d$   VRJ d   \        V 4      pW@8w  d	   V! V4      # R# R# R# )r   )	transposeFN)rv   rR  r4   r	   ra   r   r;   rf   r   ro   r   )r,   rR  r   r   rJ  s   &    r%   _eval_transposePow._eval_transposeY  s    B9999QVVTXX%7%7%9::xx""TYY%9%9%R%RTYY=R=R199dhh&&TYY'11:!u*%d+H **   %:r(   c           	     P   V P                   pV P                  pV\        P                  8X  d]   ^ RIHp \        W44      '       dF   VP                  '       d4   ^ RIH	p V! V P                  W#P                  4      .VP                  O5!  # VP                  '       Ed    VP                  RR4      '       g'   VP                  RJ g   VP!                  4       '       d   VP                  '       d2   \#        VP$                   Uu. uF  q`P                  W&4      NK  	  up!  # VP                  '       dm   \'        VP$                  R RR7      w  rxV'       dJ   \#        V Uu. uF  q`P                  W&4      NK  	  up!  V\(        P*                  ! V4      ,          ,          # V # u upi u upi )za**(n + m) -> a**n*a**m)Sum)ProductforceFc                    V P                   # r*   r|   xs   &r%   <lambda>,Pow._eval_expand_power_exp.<locals>.<lambda>u  s
    q/?/?r(   Tbinary)r4   r;   r	   ra   sympy.concrete.summationsrV  rU   r|   sympy.concrete.productsrW  r   functionlimitsru   getr   _all_nonneg_or_nonpposr   r-   r   r:  
_from_args)	r,   hintsrA   rB   rV  rW  r\  r   ncs	   &,       r%   _eval_expand_power_expPow._eval_expand_power_expg  s,   IIHH;5!!!a&6&6&6;tyyJJ7C!((CC8887E22		U"a&>&>&@&@aff=fYYq_f=>>QVV%?M! <!Q1! < S^^B//0 0 > !=s    FF#c                
   VP                  RR4      pV P                  pV P                  pVP                  '       g   V # VP	                  RR7      w  rVV'       d   V Uu. uF)  p\        VR4      '       d   VP                  ! R/ VB MTNK+  	  ppVP                  '       du   VP                  '       d   \        Wd,          !  pM1\        VRRR1,           Uu. uF  qwR,          NK  	  upV) ,          !  pV'       d   V\        V!  V,          ,          pV# V'       g   V P                  \        V!  VRR7      # \        V!  .p\        VR RR	7      w  rR
 p\        W4      pVR,          pWR,          ,          p	VR,          pV\        P                  ,          pV'       Ed   \        P                  p\        V4      ^,          pV^ 8X  d   MV^8X  d   V	P                  V4       MV^8X  d`   V'       d8   VP!                  4       ) pV\        P"                  Jd   VP                  V4       MVP                  \        P$                  4       MoV'       d8   VP!                  4       ) pV\        P"                  Jd   VP                  V4       MVP                  \        P$                  4       V	P                  V4       ?V'       g   VP&                  '       d   W,           V	,           pTp	EMtVP                  '       d   Q h\        V4      ^8  d   \        P"                  pV	'       g2   V^ ,          P(                  '       d   VVP!                  ^ 4      ,          p\        V4      ^,          '       d   V) pV F  pVP                  V) 4       K  	  V\        P"                  Jd   V	P                  V4       MV'       d   V	'       d   V^ ,          P(                  '       dU   V^ ,          \        P$                  Jd:   V	P                  \        P$                  4       VP                  V^ ,          ) 4       M#V	P+                  V4       MV	P+                  V4       ?TpW,          p	\        P"                  pV'       d   VP,                  '       dS   \        VR RR	7      w  pp\        V Uu. uF,  q0P                  VP                  ! VP.                  !  V4      NK.  	  up!  pT\        V Uu. uF  q0P                  W4RR7      NK  	  up!  ,          pV	'       d"   WP                  \        V	!  VRR7      ,          pV# u upi u upi u upi u upi )z(a*b)**n -> a**n * b**nrX  F)split_1_eval_expand_power_baseNr   c                    V P                   R J # )F)r   r[  s   &r%   r]  -Pow._eval_expand_power_base.<locals>.<lambda>  s    !2D2D2Mr(   Tr_  c                    V \         P                  J d   \         P                  # V P                  pV'       d   R # Vf   \        V P                  4      # R# r  )r	   rw   r   r   r   )r\  polars   & r%   pred)Pow._eval_expand_power_base.<locals>.pred  sB    AOO#&JJE}!!";";<< r(   c                    V P                   ;'       d5    V P                  P                  ;'       d    V P                  P                  # r*   )r;  r;   r   r4   rh   r[  s   &r%   r]  rp    s;    AHH 5; 5;EE%%5; 5;*+&&*:*:5;r(   r#   rR   )re  r4   r;   ri   args_cnchasattrrn  rg   r   r   r   r   r	   rw   lenr9  popr\   r]   rf   rj   extendr   r-   )r,   rh  rX  rA   rB   cargsri  r   r   other
maybe_realrs  siftednonnegnegimagInonnor   npows   &,                   r%   rn  Pow._eval_expand_power_base{  s   		'5)IIHHxxxKJJuJ-	
  A 1788 ++4e4>?@   |||===bdBb2h7h"uuh7:;B#u+q.(B	yyb1uy==r(B !(M	= j'Umaoo&4AD	AAAvaQaGGI:D155(d+JJq}}-GGI:D155(d+JJq}}-Q ALLLL5(EE |||## 3x!|EEQ!1!1!1OAs8a<<AAMM1"% AEE>LLOq6###Aamm(CLL/MM3q6'*LL%S!EKEUU}}}"5 +;!e $G$Q99QVVQVV_a8$GH#GA		!	7GHHB))CKU);;B	U 8| HGs   /T4T9"2T>#U
c           	        V P                   w  r#T pVP                  '       Ed.   VP                  ^ 8  Ed   VP                  '       Ed	   VP                  '       g   \        VP                  VP                  ,          4      pV'       g   V# V P                  W#V,
          4      . rFV P                  W%4      pVP                  '       d   VP                  4       p\        P                  ! V4       F  pVP                  W,          4       K  	  \        V!  # \        V4      pVP                  '       EdF   . . rVP                    F9  pVP                  '       d   V	P                  V4       K(  V
P                  V4       K;  	  V	'       d   \        V
!  p\        V	!  pV^8X  d(   \!        W,          RR7      W\,          V,          ,           # \!        W^,
          ,          RR7      p\#        W,          RR7      W^,          V,          ,           # VP$                  '       Ed4   VP'                  4       w  rVP                  '       Ed   VP                  '       Ed   VP                  '       g   VP                  '       gh   V P                  VP                  VP                  ,          V4      pVP                  VP                  ,          VP                  VP                  ,          rMV P                  VP                  V4      pVP                  VP                  V,          rMNVP                  '       g;   V P                  VP                  V4      pWP                  ,          VP                  rM^p\        V4      \        V4      ^^ 3w  rppV'       dv   V^,          '       d8   VV,          VV,          ,
          VV,          VV,          ,           ppV^,          pW,          W,          ,
          ^V,          V,          rV^,          pK}  \(        P*                  pV^8X  d   VVV,          ,           # \        V4      V,          VV,          V,          ,           # T
p^ RIHp ^ RIHp V! \5        V4      V4      pV! V.VO5!  # V^8X  d>   \        VP                    UUu. uF  qP                    F  qV,          NK  	  K  	  upp!  # W%^,
          ,          P                  4       pVP                  '       d?   \        VP                    UUu. uF  pVP                    F  pW,          NK  	  K   	  upp!  # \        VP                    Uu. uF  qV,          NK  	  up!  # VP                  '       do   VP                  ^ 8  d^   VP                  '       dL   \7        VP                  4      VP                  8  d(   ^V P                  W#) 4      P                  4       ,          # VP                  '       d   VP8                  '       d   VP;                  RR4      '       g'   VP<                  RJ g   VP?                  4       '       d   . . ppVP                    FH  pVP8                  '       d#   VP                  V P                  W(4      4       K7  VP                  V4       KJ  	  \A        VV P                  V\        PB                  ! V4      4      .,           !  # V# u uppi u uppi u upi )zA(a + b + ..)**n -> a**n + n*a**(n-1)*b + .., n is nonzero integerFdeep)multinomial_coefficients)basic_from_dictrX  )"r-   r   r   ru   rg   r   r   r   r;  _eval_expand_multinomialr:  	make_argsr9  r   r|   is_Orderr   r   rh   as_real_imagr	   rw   sympy.ntheory.multinomialr  sympy.polys.polyutilsr  rx  rn   rj   re  r   rf  r   rg  )r,   rh  r4   r;   r>  r   radicalexpanded_base_nr   order_termsother_termsrA   r  r  gr   kr   r   r  r   r  r  expansion_dictmultir   tails   &,                         r%   r  Pow._eval_expand_multinomial  s    II	???suuqyT[[[>>>CEESUUN+!M&*iiAg&>V&*ii&8O&---+DDF ( #o >dl3 !? <'CA"""+-r[Azzz#**1-#**1-	 # [)A[)AAv1!$UCac!eKK.qq5zF)!#E:QSUBB>>>  ,,.DA}}} |||#$<<<$(IIaccACCi$;'(ss133wACC1$(IIacc1$5'(ssACCE1!" $		!##q 1A#$SS5!##q !A%(VSVQ%9
a 1uu'(sQqSy!A#!)1 !Q#$39ac!eq!GAOO6#$qs7N#*1:a<!A#a%#77 OA!9#a&!!D '~:::6dii KiA1i KLL!E]DDFE|||"$)) %1)Q%*ZZ &'SS%/ &)) %1  2 2  #dii$@iuWWi$@AAooo#%%!)CEE
SUU"tyyt,EEGGGZZZDNNN		'50I0I%)C)C)E)E b4E>>>LL4!67KK%	 !
 $))D#..2F"G!HHJJM3 !L%1 %As   #[
>$[
;[c           
     	   V P                   P                  '       Ed2   ^ RIHp V P                   pV P                  P                  VR7      w  rVV'       g   V \        P                  3# \        R\        R7      w  rxV^ 8  dm   VP                  '       dE   VP                  '       d3   \        V P                  V,          4      p	W8w  d   V	P                  4       # V! Wx,           V,          4      p	MV^,          V^,          ,           p
WZ,          V) V
,          reVP                  '       dW   VP                  '       dE   \        WV\        P                  ,          ,           V) ,          4      p	W8w  d   V	P                  4       # V! Wx,           V) ,          4      p	V	P                  4        Uu. uF#  q^ ,          ^,          ^,          '       d   K!  VNK%  	  pp\        V UUUu. uF#  w  w  rqW},          ,          W,          ,          NK%  	  uppp!  pV	P                  4        Uu. uF"  q^ ,          ^,          ^,          ^8X  g   K   VNK$  	  pp\        V UUUu. uF#  w  w  rqW},          ,          W,          ,          NK%  	  uppp!  pV	P                  4        Uu. uF"  q^ ,          ^,          ^,          ^8X  g   K   VNK$  	  pp\        V UUUu. uF#  w  w  rqW},          ,          W,          ,          NK%  	  uppp!  pVP                  WuV\        P                  V,          /4      VP                  WuW/4      VP                  WuW) /4      ,           3# ^ RIHpHpHp V P                   P(                  '       EdN   V P                  P                  VR7      w  rVVP*                  '       d   V P                   \        P,                  J de   VP.                  '       d   V \        P                  3# VP0                  '       d/   \        P                  V P                  ) V P                   ,          3# V P3                  V P3                  V^4      V P3                  V^4      ,           \        P,                  4      pV! We4      pV P3                  WP                   4      VV P                   ,          ppVV! V4      ,          VV! V4      ,          3# V P                  \        P4                  J d   ^ RIH p V P                   P                  4       w  rVV'       d'   VP8                  ! V3/ VB pVP8                  ! V3/ VB pV! V4      V! V4      ppV! V4      V,          V! V4      V,          3# ^ RIHpHp V'       dA   RVR	&   V P8                  ! V3/ VB pVPA                  R
4      V8X  d   R# V! V4      V! V4      3# V! V 4      V! V 4      3# u upi u upppi u upi u upppi u upi u upppi )r   )polyr  za br   )atan2cossinr;   )rQ   r   FcomplexignoreN)!r;   rg   sympy.polys.polytoolsr  r4   r  r	   r^   symbolsDummyrj   r   rw   termsr:  r2  (sympy.functions.elementary.trigonometricr  r  r  r   r   r   r   r   r   ra   rp   expandrv   rQ   r   re  )r,   r  rh  r  r;   re_er   r   rA   exprmagr   raabbccre_partim_part1im_part3r  r  r  trptpr   r   rQ   r   rJ  s   &&,                           r%   r  Pow.as_real_imagp  sc   882((C//T/:JDQVV|#5e,DAax>>>dnnn-diin=D|#0022USL" Aga'!XuSyd>>>dnnn-t1??6J/JcT.QRD|#0022QUcTM* !JJL<Lq!Q!LA<qAq|xquHQUNNqABG JJL=LqaDGaK1,<LA=B"Xae^^BCH JJL=LqaDGaK1,<LA=B"Xae^^BCHLL!1aood.B!CDMM1A,-q5>Q0RRT T 	ML88//T/:JD|||AFF 2///<'///66TYYJ#999
 		$))D!,tyyq/AA166JAd!AYYq((+QtxxZBc"g:r#b'z))YY!&& B..0JD{{4151{{4151t9c$iqAt9Q;D	!++C#(i ;;t5u599X&(2xL"X,77$xD))g =A=B=Bs6   &V?	V?)WW W)WW7W
)Wc                	   ^ RI Hp V P                  P                  V4      pV P                  P                  V4      pWV! V P                  4      ,          W0P                  ,          V P                  ,          ,           ,          # )r   rM   )rp   rN   r4   diffr;   )r,   r   rN   dbasedexps   &&   r%   _eval_derivativePow._eval_derivative  sT    >		q!xx}}Qc$))n,uxx/?		/IIJJr(   c                	L   V P                  4       w  r#V\        P                  8X  d*   ^ RIHp V! V P                  RR7      P                  V4      # VP                  V4      pVP                  '       g   VP                  V4      pVP                  '       d   VP                  '       dm   VP                  RJ d]   VP                  4       W"P                  4       ,          P                  V4      ,          pV) pV P                  W#4      P                  4       # V P                  W#4      # )r   r  Fr   )r   r	   ra   rp   r;   _eval_evalf_evalfrg   r   rh   r   rN  r   r  )r,   precr4   r;   exp_functions   &&   r%   r  Pow._eval_evalf  s    $$&	166>R59EEdKK{{4 ~~~**T"C???t~~~$2G2G52P>>#tnn.>'>&F&Ft&LLD$C99T'..00yy##r(   c                	<   V P                   P                  ! V!  '       d   R # V P                  P                  ! V!  '       dZ   \        V P                  P	                  V4      ;'       d.    V P                   P
                  ;'       d    V P                   ^ 8  4      # R# FT)r;   hasr4   bool_eval_is_polynomialrg   r,   symss   &&r%   r  Pow._eval_is_polynomial  sz    88<<99==$		55d; 8 8##8 8)-Q9 9 r(   c                	Z   V P                   P                  '       dc   V P                  P                  '       dG   \	        \        V P                   P                  V P                  P                  .4      4      '       d   R # V P                  ! V P                  4       !  pVP                  '       g   VP                  # VP                  4       w  r#VP                  '       d   VP                  '       d   R# VP                  '       di   VP                  '       d9   \	        VP                  4      '       g   VP                  '       d   R # W#8X  d   R # MVP                  '       d   VP                  # V\        P                  J d+   VP                  '       d   VP                   '       d   R# R# R# R# r   )r;   rf   r4   r   r   r   r   r   r   r   r;  r   r   is_irrationalr	   ra   r   )r,   r   rA   rB   s   &   r%   _eval_is_rationalPow._eval_is_rational  s    HHDII$9$9$9i)=)=tyy?P?P(QRSSIIt'')*xxx== }}===Q]]] <<<}}}QYY''1+;+;+;6 yy ;}}} ".} r(   c                	   R  pV P                   P                  '       g   V! V P                   4      '       d   R# V P                   \        P                  J d   V P                  ! V P
                  !  pVP                  V P                  8X  d   V P                  P                  '       d   V P                  P                  '       d   R# V P                  \        P                  ,          P                  '       d   R# V P                  \        P                  \        P                  ,          ,          P                  '       d   R# R# R# VP                  # V P                  P                  '       d   V P                   P                  RJ d   V P                  P                  # V P                   P                  RJ dQ   V P                  P                  '       d   V P                   P                  # V P                   P                  '       d   R# V P                  P                  '       d   V P                   P                  # R# V P                   P                  '       d   V P                  P                  '       d   \        V P                   P                  4      '       d"   \        V! V P                   4      4      '       g7   V P                   P                  RJ g   V P                   P                  '       d   V P                  P                  # R# R# R# )c                N     V ^,
          P                   #   \         d     R# i ; i)r:   F)r   r"  )r  s   &r%   _is_one'Pow._eval_is_algebraic.<locals>._is_one  s)    q))) s    $$TFN)r4   r   r	   ra   r   r-   r;   r   is_algebraicrx   r   rw   r   r   rf   r  )r,   r  r   s   &  r%   _eval_is_algebraicPow._eval_is_algebraic  s   	 99		 2 2YY!&& 		499%Avv"88&&&xx,,,$((144-444$((AOOADD$89FFF# G ' ~~%XX!!!yy%%.xx'''yy  E)88&&&99111YY+++xx###yy--- $YY###(=(=(=499,,--gdii01199''5099***xx+++ +	 )>#r(   c                	    V P                   P                  ! V!  '       d   R # V P                  P                  ! V!  '       d:   V P                  P                  V4      ;'       d    V P                   P                  # R# r  )r;   r  r4   _eval_is_rational_functionrg   r  s   &&r%   r  Pow._eval_is_rational_function$  s^    88<<99==$9977= $ $##$ r(   c                	   V P                   P                  W4      pV P                  P                  pV'       d   V# V P                  P                  W4      pVR J d   V'       d   R # R# Vf   R# V P                   P	                  W4      pVP
                  pV'       d   R pM \        VP                  \        V4      34      pVR J d   V# Vf   R# V'       g   V# V P                  P	                  W4      P                  # )FN)	r4   _eval_is_meromorphicr;   rg   r2  r   r   r_   r   )	r,   r\  r   
base_meromexp_integer	exp_meromrA   b_zerolog_defineds	   &&&      r%   r  Pow._eval_is_meromorphic.  s     YY33A9
hh))HH11!7	 &5/4/IINN1  K#Q[[)F2C$DEK% xx}}Q",,,r(   c                	    V P                   P                  ! V!  '       d   R # V P                  P                  ! V!  '       d:   V P                  P                  V4      ;'       d    V P                   P                  # R# r  )r;   r  r4   _eval_is_algebraic_exprr   r  s   &&r%   r  Pow._eval_is_algebraic_exprS  s^    88<<99==$9944T: % %$$% r(   c                	8   ^ RI HpHp VP                  '       g/   VP	                  V4      '       g   VP	                  V4      '       d	   W,          # VP	                  \
        4      pVP	                  \
        4      '       dW   \        P                  '       d*   \        \        P                  V! V4      V,          VR7      # V! V! V4      V,          VR7      # ^ RIHpHp V! V! V! V4      4      \        P                  V! V4      ,          ,           V,          4      # )r   r   r   )r~   Abs)rp   r;   rN   r   r  r7  r   
exp_is_powr   r	   ra   rv   r~   r  rw   )	r,   r4   rC  kwargsr;   rN   rS   r~   r  s	   &&&,     r%   _eval_rewrite_as_expPow._eval_rewrite_as_exp]  s    C<<<488C==DHHSMM:88F#88F !+++1663t9T>HEE3t9T>H== FCIT)BBDHIIr(   c                	n   V P                   '       g   V \        P                  3# V P                  4       w  rVP	                  4       w  r4VP
                  pVP                  '       d+   V'       g#   VP                  '       g   VP                  4       pVP                  pVP                  '       g   V'       g   Tp\        P                  pVP                  pV'       d   V) V) rCMVf   V'       g   Tp\        P                  pV'       d   YCrCV) pVP                  '       dv   V\        P                  J d'   V\        P                  Jd   W0P                  WB4      3# V\        P                  Jd(   V\        P                  J d   V P                  W24      V3# V P                  W24      V P                  WB4      3# r*   )r|   r	   r\   r   r   r   ri   r   rk   rf   r   is_nonpositivero   r   )r,   r4   r;   r   r   neg_expint_expdnonposs   &       r%   r   Pow.as_numer_denomq  sB   """;$$&	""$ //:::gcooo224G.. """gAA""2rq_WAAq$C???AEEzaquun))A+++~!quu*yy(!++yy $))A"333r(   c                	   \        V4      pVf   / pV\        P                  J d1   V P                  P	                  \        P
                  V4      pVe   V# \        V\        4      '       g   R # VP                  4       w  rVV P                  4       w  rxVP                  '       dl   VP                  '       dZ   V'       dR   VP                  '       d    VP	                  WVV,          ,          V4      # VP	                  V^V,          ,          V4      # VP                  4       pV P                  P	                  WT4      pVf   R # V P                  P                  V4      P	                  Wd4      pVf   \        P                  ! WV4      # V# r*   )r   r	   r\   r;   matchesr^   rU   r
   r   re   rg   r   copyr4   xreplace)	r,   r  	repl_dictr'  r   rA   rB   sbses	   &&&&     r%   r  Pow.matches  s)   ~I 155=  3A} $%%! !!#<<<BMMMd}}}zz!d)Y77::dQrTlI66NNIIa#9HHa ((.9<<I66r(   c                	p  a2 ^ RI HpHp ^ RIHp ^ RIHp ^ RIHp	 V P                  \        P                  J d   V P                  P                  WVR7      p
V
P                  '       d
   ^V
,           # V! V
P                  4       V^ 4      pV\        P                  J d   V! W,          V4      # V\        P                   J d   V # W,
          pV! V4      ;r\#        ^V4       F-  pWV,          ,          pVP                  WVR7      pW,          pK/  	  W! W,          V4      ,          p^ RIHp V! VRRR	7      # ^ R
IHp ^RIHp V! V RR7      P/                  4       p V P1                  4       w  ppVP2                  ! V!  '       d   \5        4       hVP3                  V4      '       d'   V! VV! V4      ,          4      P7                  WW4R7      # Ves   VP3                  V4      '       d\   ^RIHp \=        RVV.R7      w  ppVP?                  V! VVV,          ,          4      V! V4      VV,          ,           4      pVV,          p TP                  4       p ^ RI H!p VP3                  V\        PD                  4      '       d   Ve   \G        4       hVPI                  V4      w  ppVP3                  V4      '       d   ^ RI)H*p V! V4      PW                  4       pVPX                  '       g   VPZ                  '       d   VP\                  '       g\   W P_                  WVR7      8X  dE   V! VV! V4      ,          4      P7                  WW4R7      pVV! VV! V4      ,          4      8X  d   V # V# VPa                  WR7      p\c        V4      V,
          PW                  4       pVV,          pVPZ                  '       g   \K        4       hVVV,          ,
          o2S2P3                  \d        4      '       d	   V	! V4      o2S2Pf                  '       d   V! VVV,          ,          V4      # VPX                  '       d)   VV,          pVV 8w  d   VV! W,          V4      ,          pV# R p V23R lp! VPI                  WR7      w  pp"TPh                  '       d?   T"\        Pj                  8X  d*   TP?                  R R 4      pTPI                  YR7      w  pp"T"Pl                  '       g   TPo                  4       pTPX                  '       d
   TT,          # TPI                  YR7      w  pp"T"Pl                  '       gP   TT,
          T,          Pq                  4       pTPI                  YR7      w  pp"T"Pl                  '       g   \K        4       h^ RI9H:p# TP7                  TT#! S24      Y4R7      P                  4       p$/ p%\v        Px                  ! T$4       F8  pT ! Y4      w  p&p'T%P{                  T'\        Pj                  4      T&,           T%T'&   K:  	  \        P|                  p(\        Pj                  \        P|                  /p)T%p*^ RI?H@p+HAp, T(T",          S2,
          Pf                  '       dz   T,! TT(4      T+! T(4      ,          p-T* F;  pT)P{                  T\        Pj                  4      T-T*T,          ,          ,           T)T&   K=  	  T!! T*T%4      p*T(\        P|                  ,          p(K  ^ RIBHCp. TP                  '       g   TPX                  '       d   TPf                  '       d   TT,
          P                  Y4      p/T.! T/4      Pf                  '       d*   T ! TT,          RRT,          ,          ,          T4      w  p0p1MpT.! T/4      PX                  '       d2   T ! T! TT! T4      ,          4      Pa                  YTR7      T4      w  p0p1M'T ! TT,          T4      w  p0p1MT ! TT,          T4      w  p0p1\        Pj                  pT) F1  p'T'T1,           pTT)T',          T0,          TT,          ,          ,          pK3  	  TP                  '       dC   TPl                  '       d1   TT",          T,
          P                  '       d   T\c        T 4      8X  g    TT! Y,          T4      ,          pT# T#   \F        \J        \4        3 d    TP7                  T\M        ^T4      Y4R7      P                  4       pTP3                  \        PN                  \        PP                  4      '       d   \K        4       hTPI                  T4      w  pp ELzi ; i  \F        \J        3 dP    T! TTS2,          ,          T^ 4      ^ 8X  d(   TT,          TTT,          ,          T,          ,           u # \K        4       hi ; i  \J         d*    T! TT! T4      ,          4      P7                  YY4R7      u # i ; i)r   r   )limit)Ordersympify)r   logx)powsimpTr;   )r  combine)	powdenest)_illegal)rX  )r   r  cdir)Wildzc, ex)r}   exclude)	polygamma)
logcombiner  r  r  c                d   \         P                  \         P                  r2\        P                  ! V 4       FP  pVP                  V4      '       d/   VP                  4       w  rSWQ8w  d    V P                  V4      u # KH  W$,          pKR  	  W#3#   \         d    T \         P                  3u u # i ; ir*   )	r	   r\   r^   r   r  r  r   leadtermr"  )r   r\  r   r;   factorr4   s   &&    r%   	coeff_exp$Pow._eval_nseries.<locals>.coeff_exp  s    3---::a== & 2 2 4IDy0#'==#33 ! OE . :	  * 0#'</0s   )BB/.B/c                   < / p\        W4       FR  w  r4W4,           pVS8  g   K  VP                  V\        P                  4      W,          W,          ,          ,           W%&   KT  	  V# r*   )r   re  r	   r^   )d1d2rese1e2r   maxpows   &&    r%   mulPow._eval_nseries.<locals>.mul"  sP    C!"/W;!ggb!&&1BF26MACG * Jr(   c                    V P                   # r*   )is_Floatr[  s   &r%   r]  #Pow._eval_nseries.<locals>.<lambda>6  s    AJJr(   c                    \        V 4      # r*   )r   r[  s   &r%   r]  r  6  s    (1+r(   )ceiling)	factorialffrQ   rR   )Grp   r;   rN   sympy.series.limitsr  sympy.series.orderr  sympy.core.sympifyr  r4   r	   ra   nseriesr  removeOr   r[   rangesympy.simplify.powsimpr  r  numbersr  trigsimpr   r  r   _eval_nseriessymbolr  r  replace'sympy.functions.special.gamma_functionsr  
EulerGammar"  r  NotImplementedErrorrd   rZ   rY   sympy.simplify.simplifyr  cancelr   rh   r   _eval_as_leading_termas_leading_termr   r7  r   r  r^   r   simplifyr  r   r  r:  r  re  r\   (sympy.functions.combinatorial.factorialsr  r  rv   rQ   rf   dirr  )3r,   r\  r   r  r  r;   rN   r  r  r  e_seriese0r  
exp_seriesr   r   r  r  r  rA   rB   r  r   r   r  _r   r  r  r  r  r  r  r  r   r  gpolygtermsco1r  r  r  tkr  r  r   rQ   ndirincoinexr  s3   &&&&&                                             @r%   r*  Pow._eval_nseries  s    	D-,.99xx''T':H   8|#x'')1a0BQ'''QT1~%QZZA #B'J1a[!||A|6"
 ! %a.(J6:D%@@4%T*335!155(+5588qQx=..qD.LLc

$Gs;EAr		#a2g,AD(89Aa4DIIK		!IuuY--$2B l"::a=DAq 55:::1$$&A			Q[[[QYYY11!T1JJ!CF(m11!t1O#aAh-'K
a+a[1_$$&aC{{{%''QqS::fQZFQqS1%%9991ADyU14^#H			,::a:+DAq :::!qvv+ 		.0EFA::a:+DAq}}}

Ayyy!t::a:+DAq===!eQY&&(zz!z/1}}}-//?WV_4KSSUMM%(D(GCB/#5F2J ) EEJsV|(((q!HYq\)E!IIb!&&1E"R&L@b	 RBJA;|||			ammmE;;q'D$x###&q!tR2a4L'8!<
dD!!!&s1SV8}'D'DQX\'D']_`a
d&q!tQ/
d"1a4+JD$ffBdB59T>!b'))C  AaC!G3K3K3Kx~%QuQT1~% 
s
 /; 	!SAYTEMMOAuuQUUA--..)++::a=DAq		!v /0 	,Qq&y[!Q'1,!ta1fQh&)++	,D ' Q1SV8}2212PPQs>   +b >"b d )f BddAe>3e>1f54f5c                	:   ^ RI HpHp V P                  pV P                  pV P                  \        P
                  J d   VP                  WR7      pVP                  V^ 4      p	V	\        P                  J d   VP                  V^ 4      p	V	P                  RJ d   \        P
                  V	,          # \        RV ,          4      hVP                  V4      '       d(   V! We! V4      ,          4      p
V
P                  WVR7      # ^ RIHp  VP                  WVR7      pTP                  '       g   TP                   '       d   TP                  T4      '       g   Y|,
          P#                  Y4      pT! T4      P                   '       d'   T P%                  Y4      RRT,          ,          ,          # T! T4      P&                  '       d8   T! T4      P)                  YTR7      pTP                  RJ d   T! Yn,          4      # T P%                  Y4      #   \         d    T u # i ; i)	r   r   r	  FzCannot expand %s around 0r  r  rR   r   )rp   r;   rN   r4   r	   ra   r3  r2  rZ   r  ro   r   r  rv   rQ   rf   r   r6  r   r   r2  )r,   r\  r  r  r;   rN   rB   rA   r~   arg0ltrQ   r  r?  log_leadterms   &&&&           r%   r2  Pow._eval_as_leading_termr  s   CHHII99##A#1C88Aq>Dquu}yyA5(vvt|#74@AAUU1XXQQZB%%a%>>?%%a%> <<<AMMM!%%(({{1+d8'''  99Q?bBqD\99X%%%#&q6#?#?SW#?#XL#//58"1>2299Q?"  s   H
 
HHc                	`    ^ RI Hp V! V P                  V4      V P                  W!4      ,          # )r   )binomial)r5  rI  r;   r   )r,   r   r\  previous_termsrI  s   &&&* r%   _taylor_termPow._taylor_term  s#    E!$tyy66r(   c                	Z  < V P                   \        P                  Jd   \        SV `  ! W.VO5!  # V^ 8  d   \        P
                  # V^ 8X  d   \        P                  # ^RIHp V! V4      pV'       d   VR,          pVe   WR,          V,          # ^ RIH	p W!,          V! V4      ,          # )r   r  )r  rR   )
r4   r	   ra   supertaylor_termr^   r\   r  r5  r  )r,   r   r\  rJ  r  r   r  r`   s   &&&*   r%   rO  Pow.taylor_term  s    99AFF"7&q=n==q566M655L$AJr"A}uqy FtIaL  r(   c                	V   V P                   \        P                  J d   ^ RIHp V! \        P
                  V P                  ,          \        P                  ^,          ,           4      \        P
                  V! \        P
                  V P                  ,          4      ,          ,
          # R# )r   )r  N)r4   r	   ra   r  r  rw   r;   rx   )r,   r4   r;   rh  r  s   &&&, r%   _eval_rewrite_as_sinPow._eval_rewrite_as_sin  se    99Dqtxx/!$$q&89AOOCPQP_P_`d`h`hPhLi<iii r(   c                	V   V P                   \        P                  J d   ^ RIHp V! \        P
                  V P                  ,          4      \        P
                  V! \        P
                  V P                  ,          \        P                  ^,          ,           4      ,          ,           # R# )r   )r  N)r4   r	   ra   r  r  rw   r;   rx   )r,   r4   r;   rh  r  s   &&&, r%   _eval_rewrite_as_cosPow._eval_rewrite_as_cos  sg    99Dqtxx/01??3qW[W_W_G_bcbfbfghbhGhCi3iii r(   c                	    V P                   \        P                  J dL   ^ RIHp ^V! V P
                  ^,          4      ,           ^V! V P
                  ^,          4      ,
          ,          # R# )r   )tanhN)r4   r	   ra   %sympy.functions.elementary.hyperbolicrX  r;   )r,   r4   r;   rh  rX  s   &&&, r%   _eval_rewrite_as_tanhPow._eval_rewrite_as_tanh  sI    99BTXXaZ((1tDHHQJ/?+?@@ r(   c                	   ^ RI HpHp V\        P                  Jd   R# VP
                  '       d   VP                  \        P                  \        P                  ,          4      pV'       d   VP                  '       d~   V! \        P                  V,          4      V! \        P                  V,          4      r\        Wu4      '       g2   \        W4      '       g   V\        P                  V,          ,           # R# R# R# R# R# )r   )r  r  N)r  r  r  r	   ra   ri   r   rx   rw   rh   rU   )	r,   r4   r;   r  r  r  r   cosinesines	   &&&,     r%   _eval_rewrite_as_sqrtPow._eval_rewrite_as_sqrt  s    Eqvv:::IIaddQ__45E"144:ADDJ!&..z47M7M!AOOD$888 8N. )u r(   c           
         V P                  4       w  r4\        VP                  WR7      !  pVP                  WR7      w  rVVP                  '       d   VP	                  4       w  rxVP                  '       d   V\
        P                  8w  d   WW,          p	V P                  W94      p
\
        P                  pV
P                  '       g4   \        V	P                  V	P                  4      w  rV P                  W<4      p
WP                  V\        WXW,          V	P                  ,          ,           4      4      3# \        WV4      pVP                  '       d   VP                  '       d~   VP                  WR7      w  rxV P                  Wt4      P                  4       w  rVP                  4       w  rV\
        P                  J g   W8X  d   WP                  \        W4      V4      3# \
        P                  V P                  W44      3# )a  Return the tuple (R, self/R) where R is the positive Rational
extracted from self.

Examples
========

>>> from sympy import sqrt
>>> sqrt(4 + 4*sqrt(2)).as_content_primitive()
(2, sqrt(1 + sqrt(2)))
>>> sqrt(3 + 3*sqrt(2)).as_content_primitive()
(1, sqrt(3)*sqrt(1 + sqrt(2)))

>>> from sympy import expand_power_base, powsimp, Mul
>>> from sympy.abc import x, y

>>> ((2*x + 2)**2).as_content_primitive()
(4, (x + 1)**2)
>>> (4**((1 + y)/2)).as_content_primitive()
(2, 4**(y/2))
>>> (3**((1 + y)/2)).as_content_primitive()
(1, 3**((y + 1)/2))
>>> (3**((5 + y)/2)).as_content_primitive()
(9, 3**((y + 1)/2))
>>> eq = 3**(2 + 2*x)
>>> powsimp(eq) == eq
True
>>> eq.as_content_primitive()
(9, 3**(2*x))
>>> powsimp(Mul(*_))
3**(2*x + 2)

>>> eq = (2 + 2*x)**y
>>> s = expand_power_base(eq); s.is_Mul, s
(False, (2*x + 2)**y)
>>> eq.as_content_primitive()
(1, (2*(x + 1))**y)
>>> s = expand_power_base(_[1]); s.is_Mul, s
(True, 2**y*(x + 1)**y)

See docstring of Expr.as_content_primitive for more examples.
)r  clear)r   _keep_coeffas_content_primitiver   r   r	   r^   r   r$  r   r   ri   rt   r\   )r,   r  rb  rA   rB   cepehr  cehr   r  icehr   mes   &&&            r%   rd  Pow.as_content_primitive  sv   V !///MN'''E=== ??$DA}}}affdIIa%FF}}}$SUUCEE2GD		!*A))A{214:~'FGGG===QXXX))')GDA99Q?//1DAMMOEAAEEzRW ))K$5q999uudiio%%r(   c                	   T pVP                  R R4      '       d   VP                  4       pVP                  4       w  rEVP                  ^ 4      pV'       d   WE,          pWs8w  d   VP	                  4       # VP                  ! V!  pVP                  ! V!  p	V	'       d%   V'       d   R# VP                  ^ 4      pVRJ d   R# MV	f   R# VP                  ^ 4      # )r4  TFN)re  r4  r   equalsis_constant)
r,   wrtflagsr  rA   rB   bzr<  econbcons
   &*,       r%   rn  Pow.is_constant  s    99Z&&==?D!XXa[$C{((}}c"}}c"!BU{ \xx{r(   c                	    V P                   w  r4VP                  V4      '       dO   VP                  V4      '       g6   VP                  WV,           4      pW5V,
          ,          ^,
          V ,          # R# R# )r:   N)r-   r  r2  )r,   r   steprA   rB   new_es   &&&   r%   _eval_difference_deltaPow._eval_difference_delta+  sU    yy5588AEE!HHFF1$h'E	NQ&$.. %8r(   r#   rZ  r*   r9   r   )NFr2   r  )DrX   
__module____qualname____firstlineno____doc__r;  	__slots__r   propertyr-   r4   r;   r>   r   rz   r   classmethodr   r   ry   r   r   r   r   r   r   r   r   r  r
  r  r  r  r  r  rD  r   rK  rO  rS  rj  rn  r  r  r  r  r  r  r  r  r  r  r  r   r  r*  r2  rK  rO  rR  rU  rZ  r_  rd  rn  rx  __static_attributes____classcell__)r`   s   @r%   r   r      s   Wp F#I		 
	     ! ! ` `D " "#R$h6Bp%3:20*D$L/b "B8
)+(yvxtQ*fK$6%,N#-JJ(!4F Dzx #D 7 7! j
j
A
	9O&b./ /r(   r   power)r:  )r   r   )r   rc  )r7  r  r  N);
__future__r   typingr   r   	itertoolsr   r  r   cacher   	singletonr	   r  r
   r   r   rc  r   r   r   r   r   logicr   r   r   r   
parametersr   rT   r   r   r>   r   r   sympy.utilities.iterablesr   sympy.utilities.exceptionsr   sympy.utilities.miscr   sympy.multipledispatchr   r   r  addobjectr:  r(  r   r   r  r   rc  r+  r7  r  r  r#   r(   r%   <module>r     s    " *      %% % = = ) $ + * @ ' -Y/$ Y/v8 	7 		66
C    & ! * *r(   