+
    i c                   s   . R NRNRNRNRNRNRNRNRNR	NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&Nt ]tR'tR(tR)t^ R*It^ R*It^ R*I	t	 ^ R+I
Ht ]! RR,R'R-7      tRtRtRtRtRtRtRtRtR/tR/t]	P2                  Rw8X  d
   R0tR0tRxtR1tMR2tR2tRytR3t]]^,
          ,
          t ! R4 R]4      t  ! R5 R] 4      t! ! R6 R] 4      t" ! R7 R]"4      t# ! R8 R	] ]$4      t% ! R9 R]"4      t& ! R: R]"]$4      t' ! R; R
] 4      t( ! R< R]"4      t) ! R= R] 4      t* ! R> R] 4      t+ ! R? R](]*4      t, ! R@ R](]*]+4      t- ! RA R] ].4      t/]!]%](],]*]-]"]+]/.	t0]#]"]&]"]']"])]"/t1]]]]]]]]3t2^ R*I3t3]3Ph                  ! RB4      t5]6! . RzO4      t7RC t8RD t9A3R{RE lt:RF t; ! RG R ]<4      t=R|RH lt>]P~                  P                  ]=4        ! RI RJ]<4      tA ! RK R]<4      tB ! RL RM]<4      tCR}RN ltD]EP                  tGRO tHRP tIRQ tJRR tKR~RS ltLRT tMRU tN ! RV RW]<4      tO]O! 4       P                  tQR~RX ltRRY tSRZ tTR[^dR\^FR]^5R^^(R_^R`^Ra^Rb^
Rc^/	3Rd ltURRe ltVR|Rf ltW]B! ^]]%],]".. RgR^^ Rh7      tX]B! ^	]]%],]"]!]-.. Ri7      tY]B! ^	]. . Ri7      tZ^ R*I[t[][P                  ! Rj][P                  ][P                  ,          4      P                  t`][P                  ! Rk4      P                  ta][P                  ! Rl4      P                  tb][P                  ! Rm][P                  ][P                  ,          4      tdA[ ^ R*IetfR{Rn ltgRo thRp tiRRq ltjRr tkRs tl]=! Rt4      tm]=! Ru4      tn]=! Rv4      to]=! ^ 4      tp]=! ^4      tq]=! R4      tr]m]n3ts]	P                  P                  tv]	P                  P                  tx]	P                  P                  tz]{! ^
]v^,
          ]v4      t|A	R*#   ] d    R. t ELvi ; i  ] d     Li ; i)DecimalContextDecimalTupleDefaultContextBasicContextExtendedContextDecimalExceptionClampedInvalidOperationDivisionByZeroInexactRounded	SubnormalOverflow	UnderflowFloatOperationDivisionImpossibleInvalidContextConversionSyntaxDivisionUndefined
ROUND_DOWNROUND_HALF_UPROUND_HALF_EVENROUND_CEILINGROUND_FLOORROUND_UPROUND_HALF_DOWN
ROUND_05UP
setcontext
getcontextlocalcontextIEEEContextMAX_PRECMAX_EMAXMIN_EMIN	MIN_ETINYIEEE_CONTEXT_MAX_BITSHAVE_THREADSHAVE_CONTEXTVARZdecimalz1.70z2.4.2N)
namedtuplezsign digits exponent)Zmodulec                      V # N )argss   *#/usr/lib64/python3.14/_pydecimal.py<lambda>r-   C   s        Tl   NZoi   i@Ti   c                   s&   a  ] tR t^at o R tRtV tR# )r   c                    R # r)   r*   selfcontextr+      &&*r,   handleZDecimalException.handlet   s    r.   r*   N__name__
__module____qualname____firstlineno__r4   __static_attributes____classdictcell__Z__classdict__   @r,   r   r   a   s     & r.   c                   s    ] tR t^xtRtR# )r   r*   Nr6   r7   r8   r9   r:   r*   r.   r,   r   r   x       r.   c                   s&   a  ] tR t^t o R tRtV tR# )r   c                s    V'       dB   \        V^ ,          P                  V^ ,          P                  RR4      pVP                  V4      # \        # )    nT)_dec_from_triple_sign_int_fix_nan_NaN)r1   r2   r+   anss   &&* r,   r4   ZInvalidOperation.handle   s9    "47==$q',,TJC<<((r.   r*   Nr5   r<   r=   r,   r   r      s     . r.   c                   s&   a  ] tR t^t o R tRtV tR# )r   c                    \         # r)   rF   r0   r3   r,   r4   ZConversionSyntax.handle       r.   r*   Nr5   r<   r=   r,   r   r      s      r.   c                   s&   a  ] tR t^t o R tRtV tR# )r	   c                s    \         V,          # r)   )_SignedInfinityr1   r2   signr+      &&&*r,   r4   ZDivisionByZero.handle   s    t$$r.   r*   Nr5   r<   r=   r,   r	   r	      s     % %r.   c                   s&   a  ] tR t^t o R tRtV tR# )r   c                rH   r)   rI   r0   r3   r,   r4   ZDivisionImpossible.handle   rJ   r.   r*   Nr5   r<   r=   r,   r   r            r.   c                   s&   a  ] tR t^t o R tRtV tR# )r   c                rH   r)   rI   r0   r3   r,   r4   ZDivisionUndefined.handle   rJ   r.   r*   Nr5   r<   r=   r,   r   r      rO   r.   c                   s    ] tR t^tRtR# )r
   r*   Nr>   r*   r.   r,   r
   r
      r?   r.   c                   s&   a  ] tR t^t o R tRtV tR# )r   c                rH   r)   rI   r0   r3   r,   r4   ZInvalidContext.handle   rJ   r.   r*   Nr5   r<   r=   r,   r   r      s      r.   c                   s    ] tR t^tRtR# )r   r*   Nr>   r*   r.   r,   r   r      r?   r.   c                   s    ] tR t^tRtR# )r   r*   Nr>   r*   r.   r,   r   r      r?   r.   c                   s&   a  ] tR tRt o R tRtV tR# )r   i  c                s   VP                   \        \        \        \        39   d   \
        V,          # V^ 8X  dc   VP                   \        8X  d   \
        V,          # \        VRVP                  ,          VP                  VP                  ,
          ^,           4      # V^8X  dc   VP                   \        8X  d   \
        V,          # \        VRVP                  ,          VP                  VP                  ,
          ^,           4      # R# )r@   9N)roundingr   r   r   r   rK   r   rB   precEmaxr   rL   rN   r,   r4   ZOverflow.handle  s     / ; ;"4((19=0&t,,#D#gll*:#LL5a79 919;.&t,,#D#gll*:$\\',,6q8: : r.   r*   Nr5   r<   r=   r,   r   r     s     ,: :r.   c                       ] tR tRtRtR# )r   i(  r*   Nr>   r*   r.   r,   r   r   (  r?   r.   c                   rT   )r   i7  r*   Nr>   r*   r.   r,   r   r   7  r?   r.   Zdecimal_contextc                  s     \         P                  4       #   \         d%    \        4       p \         P	                  T 4       T u # i ; ir)   )_current_context_vargetZLookupErrorr   setr2   s    r,   r   r   a  s?    #'')) )  )s    ,AAc                 s    V \         \        \        39   d!   V P                  4       p V P	                  4        \
        P                  V 4       R # r)   )r   r   r   copyclear_flagsrU   rW   rX      &r,   r   r   o  s6    ><AA,,.W%r.   c                 s    V f   \        4       p \        V 4      pVP                  4        F5  w  r4V\        9  d   \	        RV R24      h\        VP                  W44       K7  	  V# )NZ'z2' is an invalid keyword argument for this function)r   _ContextManageritems_context_attributes	TypeErrorZsetattrnew_context)ctxZkwargsZctx_managerkeyvalues   &,   r,   r   r   x  sc    H {l!#&Klln
))au$VWXX''4 % r.   c                s   V ^ 8:  g   V \         8  g   V ^ ,          '       d   \        R\          24      h\        4       p^	V ^ ,          ,          ^,
          Vn        ^^V ^,          ^,           ,          ,          Vn        ^VP                  ,
          Vn        \        Vn        ^Vn        \        P                  \        R4      Vn        V# )r@   z5argument must be a multiple of 32, with a maximum of F)r$   
ValueErrorr   rR   rS   Eminr   rQ   clampdictfromkeys_signalstraps)Zbitsra   s   " r,   r   r     s     qyD00D2II ..C-DF G 	G )CD"H~!CHA$(Q,'(CH388|CH"CLCIh.CIJr.   c                   s<  a  ] tR tRt o R{tR|R lt]R 4       t]R 4       tR t	R t
R}R ltR	 tR
 tR tR~R ltR~R ltR~R ltR~R ltR~R ltR~R ltR tR tR tR tRR ltR~R ltR~R ltR~R ltRR ltR~R lt]tR~R lt R~R lt!R~R lt"]"t#R~R lt$R  t%R~R! lt&R~R" lt'R~R# lt(R~R$ lt)R~R% lt*R~R& lt+R~R' lt,R~R( lt-R) t.R* t/]/t0]1R+ 4       t2]1R, 4       t3R- t4R. t5R/ t6R0 t7R1 t8R2 t9R3 t:R4 t;R5 t<R6 t=R7 t>R8 t?]@! ]8]9]:];]<]=]>]?R97      tAR~R: ltBR; tCR< tDR~R= ltER~R> ltFR? tGR}R@ ltHR}RA ltIR~RB ltJR}RC ltKR~RD ltLRE tMRF tNR}RG ltOR}RH ltP]PtQR~RI ltRR~RJ ltSR~RK ltTRL tURM tVRN tWRO tXR~RP ltYR~RQ ltZR~RR lt[RS t\RT t]R~RU lt^R~RV lt_RW t`RX taRY tbRZ tcR~R[ ltdR\ teR] tfR^ tgR~R_ lthR` tiRa tjR~Rb ltkRc tlR~Rd ltmR~Re ltnRf toRg tpR~Rh ltqR~Ri ltrR~Rj ltsR~Rk lttR~Rl ltuR~Rm ltvR~Rn ltwR~Ro ltxR~Rp ltyR~Rq ltzRr t{R~Rs lt|R~Rt lt}R~Ru lt~Rv tRw tRx tR}Ry ltRztV tR# )r    i  Nc                s
   \         P                  V 4      p\        V\        4      '       Ed   \	        VP                  4       P                  R R4      4      pVf,   Vf   \        4       pVP                  \        RV,          4      # VP                  R4      R8X  d	   ^Vn        M^ Vn        VP                  R4      pVe   VP                  R4      ;'       g    Rp\        VP                  R4      ;'       g    R4      p\        \        WV,           4      4      Vn        V\        V4      ,
          Vn        R	Vn        V# VP                  R
4      pVeZ   \        \        T;'       g    R4      4      P#                  R4      Vn        VP                  R4      '       d	   RVn        MRVn        MRVn        RVn        RVn        V# \        V\        4      '       d@   V^ 8  d	   ^ Vn        M^Vn        ^ Vn        \        \%        V4      4      Vn        R	Vn        V# \        V\&        4      '       dG   VP                  Vn        VP                  Vn        VP                  Vn        VP                   Vn        V# \        V\(        4      '       dO   VP*                  Vn        \        VP                  4      Vn        \        VP,                  4      Vn        R	Vn        V# \        V\.        \0        34      '       Ed   \        V4      ^8w  d   \3        R4      h\        V^ ,          \        4      '       d   V^ ,          R9   g   \3        R4      hV^ ,          Vn        V^,          R8X  d   RVn        V^,          Vn        RVn        V# . p	V^,           FX  p
\        V
\        4      '       d7   ^ T
u;8:  d   ^	8:  d(   M M$V	'       g   V
^ 8w  d   V	P5                  V
4       KM  KO  \3        R4      h	  V^,          R9   d<   RP7                  \9        \        V	4      4      Vn        V^,          Vn        RVn        V# \        V^,          \        4      '       dG   RP7                  \9        \        T	;'       g    ^ .4      4      Vn        V^,          Vn        R	Vn        V# \3        R4      h\        V\:        4      '       d   Vf   \        4       pVP                  \<        R4       \&        P?                  V4      pVP                  Vn        VP                  Vn        VP                  Vn        VP                   Vn        V# \A        RV,          4      h)_ zInvalid literal for Decimal: %rrM   -intZfracexp0FdiagZsignalNrA   FTztInvalid tuple size in creation of Decimal from list or tuple.  The list or tuple should have exactly three elements.z|Invalid sign.  The first value in the tuple should be an integer; either 0 for a positive number or 1 for a negative number.zTThe second value in the tuple must be composed of integers in the range 0 through 9.zUThe third value in the tuple must be an integer, or one of the strings 'F', 'n', 'N'.;strict semantics for mixing floats and Decimals are enabledCannot convert %r to Decimalr@      rA   rr   )!object__new__
isinstancestr_parserstripZreplacer   _raise_errorr   ZgrouprC   rn   rD   len_exp_is_speciallstripabsr    _WorkReprM   ro   listtuplerd   appendjoinmapfloatr   
from_floatr_   )clsrc   r2   r1   mintpartfracpartro   rq   digitsZdigit   &&&        r,   rz   ZDecimal.__new__  se   . ~~c" eS!!--c267Ay?(lG++,< AE IK K wwv#%

ggenG"776?00b!''%.//C0G$4 56	#h-/	#(  K wwv# #C$4 5 < <S ADIwwx(($'	$'	 !$DI #DI#' K eS!!z

DICJDI$DK eW%%DIDJDI % 1 1DK eX&&DJEIIDIEIIDI$DK ed5\**5zQ  "G H H uQx--%(e2C  "O P P qDJQx3	!!H	#' 6 K1 "1XXE!%--!u//!UaZ"MM%0 &0 ) *8 9 9 & 8z) "C(8 9DI %aDI'+D$ K  a#.. "CA3(? @DI %aDI',D$
 K % &> ? ?
 eU##$,   &&u-EDIDJDI % 1 1DK6>??r.   c                sx    \        V\        \        \        34      '       d	   V ! V4      # \	        R V,          4      h)ru   )r{   rn   r    r   r_   )r   Znumber   &&r,   from_numberZDecimal.from_number`  s3     fsGU344v;6?@@r.   c                sb   \        V\        4      '       d#   V^ 8  d   ^ M^p^ p\        \        V4      4      pM\        V\        4      '       d   \
        P                  ! V4      '       g   \
        P                  ! V4      '       d   V ! \        V4      4      # \
        P                  ! RV4      R8X  d   ^ pM^p\        V4      P                  4       w  rVVP                  4       ^,
          p\        V^V,          ,          4      pM\        R4      h\        W$V) 4      pV \        J d   V# V ! V4      # )r@   g      ?zargument must be int or float.)r{   rn   r|   r   r   _mathZisinfZisnanZreprZcopysignas_integer_ratio
bit_lengthr_   rB   r    )r   frM   kcoeffrA   dresult   &&      r,   r   ZDecimal.from_floato  s    , aQ1ADAAKE5!!{{1~~Q47|#~~c1%,q6**,DA"A!Q$KE<==!$r2'>Mv;r.   c                sf    V P                   '       d   V P                  pVR 8X  d   ^# VR8X  d   ^# ^ # rx   )r   r   )r1   ro      & r,   _isnanZDecimal._isnan  s0     ))Cczr.   c                sT    V P                   R 8X  d   V P                  '       d   R# ^# ^ # )rs   )r   rC   r1   r[   r,   _isinfinityZDecimal._isinfinity  s$     99zzz	r.   c                s\   V P                  4       pVf   RpMVP                  4       pV'       g	   V'       du   Vf   \        4       pV^8X  d   VP                  \        RV 4      # V^8X  d   VP                  \        RV4      # V'       d   V P	                  V4      # VP	                  V4      # ^ # )NFsNaN)r   r   r   r   rE   )r1   otherr2   self_is_nanother_is_nan   &&&  r,   _check_nansZDecimal._check_nans  s     kkm= L <<>L,$,a++,<f(,. .q ++,<f(-/ /}}W-->>'**r.   c                s   Vf   \        4       pV P                  '       g   VP                  '       d   V P                  4       '       d   VP                  \        RV 4      # VP                  4       '       d   VP                  \        RV4      # V P                  4       '       d   VP                  \        RV 4      # VP                  4       '       d   VP                  \        RV4      # ^ # )Nzcomparison involving sNaNzcomparison involving NaN)r   r   is_snanr   r   is_qnanr1   r   r2      &&&r,   _compare_check_nansZDecimal._compare_check_nans  s     ? lGu000||~~++,<,G,02 2 ++,<,G,13 3 ++,<,F,02 2 ++,<,F,13 3 r.   c                sH    V P                   ;'       g    V P                  R 8g  # rp   r   rD   r   r[   r,   __bool__ZDecimal.__bool__  s!    
 33499#33r.   c                s   V P                   '       g   VP                   '       d3   V P                  4       pVP                  4       pW#8X  d   ^ # W#8  d   R# ^# V '       g   V'       g   ^ # RVP                  ,          ) # V'       g   RV P                  ,          # VP                  V P                  8  d   R# V P                  VP                  8  d   ^# V P                  4       pVP                  4       pWE8X  d   V P                  RV P
                  VP
                  ,
          ,          ,           pVP                  RVP
                  V P
                  ,
          ,          ,           pWg8X  d   ^ # Wg8  d   RV P                  ,          ) # RV P                  ,          # WE8  d   RV P                  ,          # RV P                  ,          ) # )r@   rp   r   )r   r   rC   adjustedrD   r   )r1   r   Zself_infZ	other_infself_adjustedZother_adjustedself_paddedZother_paddedr   r,   _cmpZDecimal._cmp   s[    u000'')H))+I$%	 u{{*++## ;;#I::#)*))c499uzz+A&BBK ::UZZ$))-C(DDL*+djj(((TZZ''+##4::%&&r.   c                s    \        WR R7      w  rV\        J d   V# V P                  W4      '       d   R# V P                  V4      ^ 8H  # )T)equality_opF)_convert_for_comparisonNotImplementedr   r   r   r   r,   __eq__ZDecimal.__eq__@  sE    -dtLN"LE++yy1$$r.   c                s    \        W4      w  rV\        J d   V# V P                  W4      pV'       d   R # V P                  V4      ^ 8  # Fr   r   r   r   r1   r   r2   rG      &&& r,   __lt__ZDecimal.__lt__H  E    -d:N"L&&u6yy!##r.   c                s    \        W4      w  rV\        J d   V# V P                  W4      pV'       d   R # V P                  V4      ^ 8*  # r   r   r   r   r,   __le__ZDecimal.__le__Q  E    -d:N"L&&u6yy1$$r.   c                s    \        W4      w  rV\        J d   V# V P                  W4      pV'       d   R # V P                  V4      ^ 8  # r   r   r   r   r,   __gt__ZDecimal.__gt__Z  r   r.   c                s    \        W4      w  rV\        J d   V# V P                  W4      pV'       d   R # V P                  V4      ^ 8  # r   r   r   r   r,   __ge__ZDecimal.__ge__c  r   r.   c                s    \        VR R7      pV P                  '       g   V'       d.   VP                  '       d   V P                  W4      pV'       d   V# \        V P	                  V4      4      # Traiseit)_convert_otherr   r   r    r   r   r   r,   compareZDecimal.comparel  sW     ud3 %*;*;*;""52C
tyy'((r.   c                s   V P                   '       dl   V P                  4       '       d   \        R 4      hV P                  4       '       d   \        P                  V 4      # V P                  '       d   \        ) # \        # V P                  ^ 8  d   \        ^
V P                  \        4      pM \        \        V P                  ) \        4      p\        V P                  4      V,          \        ,          pV ^ 8  d   TMV) pVR8X  d   R# T# )z"Cannot hash a signaling NaN value.r   )r   r   r_   is_nanry   __hash__rC   _PyHASH_INFr   pow_PyHASH_MODULUS_PyHASH_10INVrn   rD   )r1   Zexp_hashZhash_rG   s   &   r,   r   ZDecimal.__hash__~  s     ||~~ DEEt,,:::'<'&&99>2tyy/:H=499*oFHDII)O;qyeufBYr'C'r.   c           	     s    \        V P                  \        \        \        V P
                  4      4      V P                  4      # r)   )r   rC   r   r   rn   rD   r   r   r[   r,   as_tupleZDecimal.as_tuple  s+    
 DJJc#tyy.A(BDIINNr.   c                sl   V P                   '       d-   V P                  4       '       d   \        R 4      h\        R4      hV '       g   R# \	        V P
                  4      pV P                  ^ 8  d   V^
V P                  ,          ,          ^r!MV P                  ) pV^ 8  d#   V^,          ^ 8X  d   V^,          pV^,          pK)  V P                  ) p\        W) ,          P                  4       ^,
          V4      pV'       d   W,          pWE,          p^V,          V,          pV P                  '       d   V) pW3# )z#cannot convert NaN to integer ratioz(cannot convert Infinity to integer ratiorv   )
r   r   rd   OverflowErrorrn   rD   r   minr   rC   )r1   rA   r   Zd5Zd2Zshift2   &     r,   r   ZDecimal.as_integer_ratio  s     {{}} !FGG#$NOOK 		N99>r499}$aq ))Bq&QUaZaa ))B!b&,,.2B7F2A:::Atr.   c                s&    R \        V 4      ,          # )zDecimal('%s'))r|   r   r[   r,   __repr__ZDecimal.__repr__  s     T**r.   c                s   R R.V P                   ,          pV P                  '       d`   V P                  R8X  d
   VR,           # V P                  R8X  d   VR,           V P                  ,           # VR,           V P                  ,           # V P                  \	        V P                  4      ,           pV P                  ^ 8:  d   VR8  d   TpMKV'       g   ^pM@V P                  R8X  d   V^,           ^,          ^,
          pMV^,
          ^,          ^,           pV^ 8:  d&   RpRRV) ,          ,           V P                  ,           pMvV\	        V P                  4      8  d8   V P                  RV\	        V P                  4      ,
          ,          ,           pR pM%V P                  R	V pRV P                  VR	 ,           pWE8X  d   R pM7Vf   \        4       pR
R.VP                  ,          RWE,
          ,          ,           pW6,           V,           V,           # )rl   rm   rs   ZInfinityrA   NaNr   rp   .NeEz%+d)rC   r   r   rD   r   r   capitals)	r1   engr2   rM   
leftdigitsdotplacer   r   ro   	   &&&      r,   __str__ZDecimal.__str__  s    Cy$yyCj((c!e|dii//f}tyy00 YYTYY/

 99>j2o!HHYY#"Q!+a/H #Q!+a/Hq=GS8)_,tyy8HTYY'iiXc$))n%< ==GHii	*GTYYxy11H!C$,*W--.*:M1NNC~(3..r.   c                s(    V P                  R VR7      # )T)r   r2   )r   r1   r2   r   r,   to_eng_stringZDecimal.to_eng_string
  s     ||g|66r.   c                s   V P                   '       d   V P                  VR 7      pV'       d   V# Vf   \        4       pV '       g'   VP                  \        8w  d   V P                  4       pMV P                  4       pVP                  V4      # rX   )r   r   r   rQ   r   copy_abscopy_negate_fixr1   r2   rG      && r,   __neg__ZDecimal.__neg__  sq    
 ""7"3C
? lG((K7 --/C""$Cxx  r.   c                s   V P                   '       d   V P                  VR 7      pV'       d   V# Vf   \        4       pV '       g'   VP                  \        8w  d   V P                  4       pM\        V 4      pVP                  V4      # r   )r   r   r   rQ   r   r   r    r   r   r   r,   __pos__ZDecimal.__pos__)  sj    
 ""7"3C
? lG((K7--/C$-Cxx  r.   c                s   V'       g   V P                  4       # V P                  '       d   V P                  VR 7      pV'       d   V# V P                  '       d   V P	                  VR 7      pV# V P                  VR 7      pV# r   )r   r   r   rC   r   r   )r1   Zroundr2   rG   r   r,   __abs__ZDecimal.__abs__>  sq     ==?"""7"3C
:::,,w,/C 
 ,,w,/C
r.   c                s
   \        V4      pV\        J d   V# Vf   \        4       pV P                  '       g   VP                  '       d   V P	                  W4      pV'       d   V# V P                  4       '       dS   V P                  VP                  8w  d-   VP                  4       '       d   VP                  \        R4      # \        V 4      # VP                  4       '       d   \        V4      # \        V P                  VP                  4      p^ pVP                  \        8X  d   V P                  VP                  8w  d   ^pV '       gS   V'       gK   \        V P                  VP                  4      pV'       d   ^p\        VRV4      pVP                  V4      pV# V '       g\   \!        WAP                  VP"                  ,
          ^,
          4      pVP%                  WBP                  4      pVP                  V4      pV# V'       g\   \!        W@P                  VP"                  ,
          ^,
          4      pV P%                  WBP                  4      pVP                  V4      pV# \'        V 4      p\'        V4      p\)        WxVP"                  4      w  rx\'        4       p	VP*                  VP*                  8w  d   VP,                  VP,                  8X  d!   \        VRV4      pVP                  V4      pV# VP,                  VP,                  8  d   YrVP*                  ^8X  d,   ^V	n        VP*                  VP*                  uVn        Vn        M7^ V	n        M/VP*                  ^8X  d   ^V	n        ^ ^ uVn        Vn        M^ V	n        VP*                  ^ 8X  d$   VP,                  VP,                  ,           V	n        M"VP,                  VP,                  ,
          V	n        VP.                  V	n        \        V	4      pVP                  V4      pV# )Nz
-INF + INFrp   )r   r   r   r   r   r   rC   r   r   r    r   r   rQ   r   rB   r   maxrR   _rescaler   
_normalizerM   rn   ro   )
r1   r   r2   rG   ro   ZnegativezerorM   op1op2r   
   &&&       r,   __add__ZDecimal.__add__T  s   
 u%N"L? lGu000""52C
!!::,1B1B1D1D"//0@,OOt}$  ""u~%$))UZZ({*tzzU[[/HLEtzz5;;/D"4c2C((7#CJc::4Q67C..&6&67C((7#CJc99w||3A56C--%5%56C((7#CJtnuoc588sxxww#''!&|S#>hhw'
ww Sxx1}%(XXsxx"#(XX]FK"#QCHchFK 88q=377*FJ377*FJWW
fohhw
r.   c                s    \        V4      pV\        J d   V# V P                  '       g   VP                  '       d   V P                  WR 7      pV'       d   V# V P	                  VP                  4       VR 7      # r   )r   r   r   r   r   r   r   r   r,   __sub__ZDecimal.__sub__  si    u%N"Lu000""5":C
 ||E--/|AAr.   c                T    \        V4      pV\        J d   V# VP                  WR 7      # r   )r   r   r   r   r   r,   __rsub__ZDecimal.__rsub__  s*    u%N"L}}T}33r.   c                s>   \        V4      pV\        J d   V# Vf   \        4       pV P                  VP                  ,          pV P                  '       g   VP                  '       d   V P                  W4      pV'       d   V# V P                  4       '       d,   V'       g   VP                  \        R4      # \        V,          # VP                  4       '       d,   V '       g   VP                  \        R4      # \        V,          # V P                  VP                  ,           pV '       d	   V'       g!   \        VRV4      pVP                  V4      pV# V P                  R8X  d*   \        W1P                  V4      pVP                  V4      pV# VP                  R8X  d*   \        W0P                  V4      pVP                  V4      pV# \        V 4      p\        V4      p\        V\        VP                   VP                   ,          4      V4      pVP                  V4      pV# )Nz(+-)INF * 0z0 * (+-)INFrp   1)r   r   r   rC   r   r   r   r   r   rK   r   rB   r   rD   r   r|   rn   )r1   r   r2   Z
resultsignrG   Z	resultexpr   r      &&&     r,   __mul__ZDecimal.__mul__  s   
 u%N"L? lGZZ%++-
u000""52C
!!"//0@-PP&z22  """//0@-PP&z22II

*	 5":sI>C((7#CJ 99":zz9EC((7#CJ::":yy)DC((7#CJtnuoz3sww/@+A9Mhhw
r.   c                s   \        V4      pV\        J d   \        # Vf   \        4       pV P                  VP                  ,          pV P                  '       g   VP                  '       d   V P                  W4      pV'       d   V# V P                  4       '       d-   VP                  4       '       d   VP                  \        R4      # V P                  4       '       d   \        V,          # VP                  4       '       d2   VP                  \        R4       \        VRVP                  4       4      # V'       g6   V '       g   VP                  \        R4      # VP                  \        RV4      # V '       g"   V P                  VP                  ,
          p^ pEMO\!        VP"                  4      \!        V P"                  4      ,
          VP$                  ,           ^,           pV P                  VP                  ,
          V,
          p\'        V 4      p\'        V4      p	V^ 8  d2   \)        VP*                  ^
V,          ,          V	P*                  4      w  rjM1\)        VP*                  V	P*                  ^
V) ,          ,          4      w  rjV
'       d   V^,          ^ 8X  d
   V^,          pMEV P                  VP                  ,
          pW[8  d#   V^
,          ^ 8X  d   V^
,          pV^,          pK(  \        V\-        V4      V4      pVP/                  V4      # )Nz(+-)INF/(+-)INFzDivision by infinityrp   z0 / 0zx / 0)r   r   r   rC   r   r   r   r   r   rK   r   rB   Etinyr   r	   r   r   rD   rR   r   divmodrn   r|   r   )r1   r   r2   rM   rG   ro   r   shiftr   r   	remainder	ideal_exps   &&&         r,   __truediv__ZDecimal.__truediv__  s?   u%N"!!? lGzzEKK'u000""52C
!!e&7&7&9&9++,<>OPP!!&t,,  ""$$W.DE'c7==?CC ++,=wGG''FF))ejj(CE 

Oc$))n4w||CaGE))ejj(50C4.C5/Cz#)#''BI*=sww#G y#)#''377R%Z3G#H 19>QJE !II

2	o%"*/bLE1HCtSZ5xx  r.   c                s*   V P                   VP                   ,          pVP                  4       '       d   V P                  pM \        V P                  VP                  4      pV P	                  4       VP	                  4       ,
          pV '       d   VP                  4       '       g   VR8:  d)   \        VR^ 4      V P                  WBP                  4      3# WRP                  8:  Ed   \        V 4      p\        V4      pVP                  VP                  8  d=   V;P                  ^
VP                  VP                  ,
          ,          ,          un        M;V;P                  ^
VP                  VP                  ,
          ,          ,          un        \        VP                  VP                  4      w  rV^
VP                  ,          8  d7   \        V\        V4      ^ 4      \        V P                   \        V	4      V4      3# VP                  \        R4      p
W3# )   rp   z%quotient too large in //, % or divmodr   )rC   r   r   r   r   rB   r   rQ   rR   r   ro   rn   r   r|   r   r   )r1   r   r2   rM   r   expdiffr   r   qrrG   r   r,   _divideZDecimal._divide6  s}    zzEKK'		IDIIuzz2I--/ENN$44u((**gm$T32MM)-=-=>@ @ll"4.C5/Cww#''!2#'' 1222#'' 122#''377+DA2w||##(s1vq9(SVYGI I ""#5#JLxr.   c                r   r   )r   r   r   r   r   r,   __rtruediv__ZDecimal.__rtruediv__W  s-    u%N"L   77r.   c                s   \        V4      pV\        J d   V# Vf   \        4       pV P                  W4      pV'       d   W33# V P                  VP                  ,          pV P                  4       '       dS   VP                  4       '       d   VP                  \        R4      pW33# \        V,          VP                  \        R4      3# V'       gO   V '       g   VP                  \        R4      pW33# VP                  \        RV4      VP                  \        R4      3# V P                  W4      w  rVVP                  V4      pWV3# )Nzdivmod(INF, INF)INF % xzdivmod(0, 0)x // 0x % 0)r   r   r   r   rC   r   r   r   rK   r   r	   r  r   )r1   r   r2   rG   rM   Zquotientr      &&&    r,   
__divmod__ZDecimal.__divmod__^  s-    u%N"L? lGu.:zzEKK'  ""**+;=OPx'-,,-=yIK K **+<nMx,,^XtL,,-=wGI I #ll5:NN7+	""r.   c                r   r   )r   r   r  r   r   r,   __rdivmod__ZDecimal.__rdivmod__  s-    u%N"L66r.   c                s   \        V4      pV\        J d   V# Vf   \        4       pV P                  W4      pV'       d   V# V P	                  4       '       d   VP                  \        R4      # V'       g5   V '       d   VP                  \        R4      # VP                  \        R4      # V P                  W4      ^,          pVP                  V4      pV# )Nr  r  z0 % 0)
r   r   r   r   r   r   r   r   r  r   )r1   r   r2   rG   r   r   r,   __mod__ZDecimal.__mod__  s     u%N"L? lGu.J''(8)DD++,<gFF++,=wGGLL03	NN7+	r.   c                r   r   )r   r   r	  r   r   r,   __rmod__ZDecimal.__rmod__  s*    u%N"L}}T}33r.   c                sF   Vf   \        4       p\        VRR7      pV P                  W4      pV'       d   V# V P                  4       '       d   VP	                  \
        R4      # V'       g5   V '       d   VP	                  \
        R4      # VP	                  \        R4      # VP                  4       '       d   \        V 4      pVP                  V4      # \        V P                  VP                  4      pV '       g)   \        V P                  RV4      pVP                  V4      # V P                  4       VP                  4       ,
          pWRP                  ^,           8  d   VP	                  \        4      # VR8:  d-   V P!                  WBP"                  4      pVP                  V4      # \%        V 4      p\%        V4      pVP&                  VP&                  8  d=   V;P(                  ^
VP&                  VP&                  ,
          ,          ,          un        M;V;P(                  ^
VP&                  VP&                  ,
          ,          ,          un        \+        VP(                  VP(                  4      w  r^V	,          V^,          ,           VP(                  8  d   WP(                  ,          p	V^,          pV^
VP                  ,          8  d   VP	                  \        4      # V P                  p
V	^ 8  d   ^V
,
          p
V	) p	\        V
\-        V	4      V4      pVP                  V4      # )NTr   zremainder_near(infinity, x)zremainder_near(x, 0)zremainder_near(0, 0)rp   r   )r   r   r   r   r   r   r   r    r   r   r   rB   rC   r   rR   r   r   rQ   r   ro   rn   r   r|   )r1   r   r2   rG   ideal_exponentr   r   r   r   r   rM   r   r,   remainder_nearZDecimal.remainder_near  su    ? lGud3u.J ''(8(EG G ++,<,BD D ++,=,BD D $-C88G$$ TYY

3"4::sNCC88G$$ --/ENN$44llQ&&''(:;;b=--0@0@AC88G$$ tnuo77cggGGrCGGcgg-..GGGrCGGcgg-..Gcggsww' Q3!A#; LAFAGLL  ''(:;; zzq5T6DAtSV^<xx  r.   c                s6   \        V4      pV\        J d   V# Vf   \        4       pV P                  W4      pV'       d   V# V P	                  4       '       dU   VP	                  4       '       d   VP                  \        R4      # \        V P                  VP                  ,          ,          # V'       gQ   V '       d3   VP                  \        RV P                  VP                  ,          4      # VP                  \        R4      # V P                  W4      ^ ,          # )Nz
INF // INFr  z0 // 0)r   r   r   r   r   r   r   rK   rC   r	   r   r  r   r   r,   __floordiv__ZDecimal.__floordiv__  s    u%N"L? lGu.J  ""++,<lKK&tzzEKK'?@@++NH,0JJ,DF F ++,=xHH||E+A..r.   c                r   r   )r   r   r  r   r   r,   __rfloordiv__ZDecimal.__rfloordiv__  s-    u%N"L!!$!88r.   c                s    V P                  4       '       d9   V P                  4       '       d   \        R 4      hV P                  '       d   RMRpM\	        V 4      p\        V4      # )z%Cannot convert signaling NaN to floatz-nannan)r   r   rd   rC   r|   r   r1   sr   r,   	__float__ZDecimal.__float__  sE    ;;==||~~ !HII***%AD	AQxr.   c                s   V P                   '       dC   V P                  4       '       d   \        R 4      hV P                  4       '       d   \	        R4      hRV P
                  ,          pV P                  ^ 8  d5   V\        V P                  4      ,          ^
V P                  ,          ,          # T\        V P                  RV P                   ;'       g    R4      ,          # )zCannot convert NaN to integerz"Cannot convert infinity to integerNrp   r   )	r   r   rd   r   r   rC   r   rn   rD   r  r   r,   __int__ZDecimal.__int__#  s    {{}} !@AA!!###$HII$**99>S^#B		M11S:DII.55#666r.   c                r(   r)   r*   r   r[   r,   realZDecimal.real2  s    r.   c                s    \        ^ 4      # r@   r    r   r[   r,   imagZDecimal.imag6  s    qzr.   c                r(   r)   r*   r   r[   r,   	conjugateZDecimal.conjugate:  s    r.   c                s*    \        \        V 4      4      # r)   )Zcomplexr   r   r[   r,   __complex__ZDecimal.__complex__=  s    uT{##r.   c                s   V P                   pVP                  VP                  ,
          p\        V4      V8  dF   V\        V4      V,
          R  P	                  R4      p\        V P                  W P                  R4      # \        V 4      # )Nrp   T)	rD   rR   rf   r   r   rB   rC   r   r    )r1   r2   ZpayloadZmax_payload_len   &&  r,   rE   ZDecimal._fix_nan@  sm    )) ",,6w</)c'l?:;<CCCHG#DJJDIIt}r.   c                s   V P                   '       d3   V P                  4       '       d   V P                  V4      # \        V 4      # VP	                  4       pVP                  4       pV '       g   VP                  V.VP                  ,          p\        \        V P                  V4      V4      pWPP                  8w  d-   VP                  \        4       \        V P                  R V4      # \        V 4      # \        V P                   4      V P                  ,           VP"                  ,
          pWc8  dN   VP                  \$        RV P                  4      pVP                  \&        4       VP                  \(        4       V# Wb8  pV'       d   TpV P                  V8  Ed   \        V P                   4      V P                  ,           V,
          p	V	^ 8  d!   \        V P                  RV^,
          4      p ^ p	V P*                  VP,                  ,          p
V
! W	4      pV P                   RV	 ;'       g    R pV^ 8  dD   \/        \1        V4      ^,           4      p\        V4      VP"                  8  d   VRR pV^,          pWc8  d#   VP                  \$        RV P                  4      pM\        V P                  W4      pV'       d   V'       d   VP                  \2        4       V'       d   VP                  \4        4       V'       d   VP                  \&        4       VP                  \(        4       V'       g   VP                  \        4       V# V'       d   VP                  \4        4       VP                  ^8X  dh   V P                  V8  dW   VP                  \        4       V P                   R V P                  V,
          ,          ,           p\        V P                  W4      # \        V 4      # )rp   
above Emaxr   Nr   )r   r   rE   r    r   EtoprS   rf   r   r   r   r   r   rB   rC   r   rD   rR   r   r
   r   _pick_rounding_functionrQ   r|   rn   r   r   )r1   r2   r   r  exp_maxZnew_expZexp_minrG   Zself_is_subnormalr   Zrounding_methodchangedr   r      &&            r,   r   ZDecimal._fixL  s    {{}}}}W-- t}$ ||~||T*7==9G#dii/9G))#$$W-'

CAAt}$ dii.499,w||;>&&xtzzJC  )  )J#OG 99w^dii/'9Fz'

CC"::7;K;KLO%d3GIIgv&--#E{CJqL)u:,!#2JEqLG ~**8\4::N&tzz5B ,$$Y/ $$Y/$$W-  )$$W-J  + ==A$))d"2  )))c499t+;&<<K#DJJBB t}r.   c                sB    \        V P                  V4      '       d   ^ # R# )r@   r   )
_all_zerosrD   r1   rR   r   r,   _round_downZDecimal._round_down  s    dii&&Ir.   c                s&    V P                  V4      ) # r)   )r#  r"  r   r,   	_round_upZDecimal._round_up  s      &&&r.   c                sv    V P                   V,          R 9   d   ^# \        V P                   V4      '       d   ^ # R# )Z56789r   )rD   r!  r"  r   r,   _round_half_upZDecimal._round_half_up  s.    99T?g%		4((Ir.   c                s`    \        V P                  V4      '       d   R# V P                  V4      # rw   r   _exact_halfrD   r%  r"  r   r,   _round_half_downZDecimal._round_half_down  s)    tyy$''I&&t,,r.   c                s    \        V P                  V4      '       d)   V^ 8X  g    V P                  V^,
          ,          R9   d   R# V P                  V4      # )r@   02468r   r'  r"  r   r,   _round_half_evenZDecimal._round_half_even  sD    tyy$''diiQ/7:I&&t,,r.   c                sl    V P                   '       d   V P                  V4      # V P                  V4      ) # r)   rC   r#  r"  r   r,   _round_ceilingZDecimal._round_ceiling  s0    :::##D))$$T***r.   c                sl    V P                   '       g   V P                  V4      # V P                  V4      ) # r)   r,  r"  r   r,   _round_floorZDecimal._round_floor  s0    zzz##D))$$T***r.   c                s    V'       d1   V P                   V^,
          ,          R9  d   V P                  V4      # V P                  V4      ) # )rw   Z05)rD   r#  r"  r   r,   _round_05upZDecimal._round_05up  s>    DIId1f%T1##D))$$T***r.   )r   r   r   r   r   r   r   r   c                sD   VeA   \        V\        4      '       g   \        R4      h\        ^ RV) 4      pV P	                  V4      # V P
                  '       d-   V P                  4       '       d   \        R4      h\        R4      h\        V P                  ^ \        4      4      # )Nz+Second argument to round should be integralr   cannot round a NaNcannot round an infinity)r{   rn   r_   rB   quantizer   r   rd   r   r   r   )r1   rA   ro   r   r,   	__round__ZDecimal.__round__  s    ^ =a%% MNN"1cA2.C==%% {{}} !566#$>??4==O455r.   c                    V P                   '       d-   V P                  4       '       d   \        R 4      h\        R4      h\	        V P                  ^ \        4      4      # r0  r1  )r   r   rd   r   rn   r   r   r   r[   r,   	__floor__ZDecimal.__floor__3  sI     {{}} !566#$>??4==K011r.   c                r4  r5  )r   r   rd   r   rn   r   r   r   r[   r,   __ceil__ZDecimal.__ceil__B  sI     {{}} !566#$>??4==M233r.   c           	     s   \        VR R7      p\        VR R7      pV P                  '       g   VP                  '       Ed9   Vf   \        4       pV P                  R8X  d   VP	                  \
        RV 4      # VP                  R8X  d   VP	                  \
        RV4      # V P                  R8X  d   T pEM>VP                  R8X  d   TpEM)V P                  R8X  dH   V'       g   VP	                  \
        R4      # \        V P                  VP                  ,          ,          pMVP                  R8X  dG   V '       g   VP	                  \
        R4      # \        V P                  VP                  ,          ,          pMy\        V P                  VP                  ,          \        \        V P                  4      \        VP                  4      ,          4      V P                  VP                  ,           4      pXP                  W#4      # )Tr   rr   r   rA   rs   zINF * 0 in fmaz0 * INF in fma)r   r   r   r   r   r   rK   rC   rB   r|   rn   rD   r   )r1   r   Zthirdr2   Zproduct   &&&& r,   fmaZDecimal.fmaQ  s    ud3ud3 u000$,yyC++,<fdKKzzS ++,<feLLyyCs"c!"//0@0@B B)$**u{{*BCs""//0@0@B B)$**u{{*BC&tzzEKK'?'*3tyy>C

O+K'L'+yy5::'=?G u..r.   c                s   \        V4      pV\        J d   V# \        V4      pV\        J d   V# Vf   \        4       pV P                  4       pVP                  4       pVP                  4       pV'       g   V'       g	   V'       d   V^8X  d   VP	                  \
        RV 4      # V^8X  d   VP	                  \
        RV4      # V^8X  d   VP	                  \
        RV4      # V'       d   V P                  V4      # V'       d   VP                  V4      # VP                  V4      # V P                  4       '       d-   VP                  4       '       d   VP                  4       '       g   VP	                  \
        R4      # V^ 8  d   VP	                  \
        R4      # V'       g   VP	                  \
        R4      # VP                  4       VP                  8  d   VP	                  \
        R4      # V'       g   V '       g   VP	                  \
        R4      # VP                  4       '       d   ^ pMV P                  p\        \        V4      4      p\        V P                  4       4      p\        VP                  4       4      p	VP                  V,          \!        ^
VP"                  V4      ,          V,          p\%        V	P"                  4       F  p
\!        V^
V4      pK  	  \!        WP                  V4      p\'        V\)        V4      ^ 4      # )Nr   z@pow() 3rd argument not allowed unless all arguments are integerszApow() 2nd argument cannot be negative when 3rd argument specifiedzpow() 3rd argument cannot be 0zSinsufficient precision: pow() 3rd argument must not have more than precision digitszXat least one of pow() 1st argument and 2nd argument must be nonzero; 0**0 is not defined)r   r   r   r   r   r   rE   
_isintegerr   rR   _isevenrC   r   rn   r   to_integral_valuer   ro   rangerB   r|   )r1   r   modulor2   r   r   Zmodulo_is_nanrM   Zbaseexponentis   &&&&       r,   _power_moduloZDecimal._power_modulo}  s    u%N"L'^#M? lG kkm||~,-a++,<f(,. .q ++,<f(-/ /!++,<f(.0 0}}W--~~g..??7++ !!  ""!!##''(8)LM M 19''(8)OP P ''(8(HJ J
 ??,''(8);< < T''(8)>? ? ==??D::D S[!..01E3356 6!CDHHf$==Gx||$AtR(D %4v.c$i33r.   c                s   \        V 4      pVP                  VP                  rTV^
,          ^ 8X  d   V^
,          pV^,          pK"  \        V4      pVP                  VP                  rV^
,          ^ 8X  d   V^
,          pV^,          pK"  V^8X  d   WW,          pV^
,          ^ 8X  d   V^
,          pV^,          pK"  V^ 8  d   R# V^
V,          ,          p	VP                  ^8X  d   V	) p	VP	                  4       '       dH   VP
                  ^ 8X  d7   V P                  \        V4      ,          p
\        W,
          V^,
          4      pM^ p\        ^ RRV,          ,           W,
          4      # VP                  ^8X  Ed   V^
,          pVR9   d   WD) ,          V8w  d   R# \        V4      ^,
          pV^],          ^A,          pV\        \        V4      4      8  d   R# \        W,          V4      p\        WW,          V4      pVe   Vf   R# W8  d   R# ^V,          pMV^8X  d   \        V4      ^,          ^A,          p\        ^V,          V4      w  rOV'       d   R# V^,          ^ 8X  d   V^,          pV^,          pK"  V^
,          ^,          pV\        \        V4      4      8  d   R# \        W,          V4      p\        WW,          V4      pVe   Vf   R# W8  d   R# ^V,          pMR# \        V4      p\        V4      V8  d   R# V) V,
          p\        ^ VV4      # V^ 8  d   V^
V,          ,          ^ppMV^ 8w  d,   \        \        \        Wu,          4      4      4      V) 8:  d   R# \        V4      p\        \        \        V4      V,          4      4      V) 8:  d   R# T^
V) ,          ppV^,          V^,          u;8X  d   ^ 8X  d   M MV^,          pV^,          pK4  V^,          V^,          u;8X  d   ^ 8X  d   M MV^,          pV^,          pK4  V^8  d   XV8:  d   R# \        VV4      w  ppV^ 8w  d   R# ^\        V4      ) V,          ) ,          p \        VVV^,
          ,          4      w  ppVV8:  d   M VV^,
          ,          V,           V,          pKF  VV8X  d   V^ 8X  g   R# TpV^8  d!   VV^d,          \        V4      ,          8  d   R# VV,          pVV,          p\        V4      p\        V4      V8  d   R# VP	                  4       '       dQ   VP
                  ^ 8X  d@   V P                  \        V4      ,          p
\        WZ,
          V\        V4      ,
          4      pM^ p\        ^ VRV,          ,           W[,
          4      # )
   Nr   rp   )r   i   i      )r   rn   ro   rM   r:  rC   r   r   rB   _nbitsr   r|   _decimal_lshift_exactr   r   	_log10_lb)r1   r   pxxcxeyycyer?  r  ZzerosZ
last_digitr   Zemaxr   Zstrxcr   rA   Zxc_bitsremar   r   Zstr_xcs   &&&                      r,   _power_exactZDecimal._power_exact  s   t TNB2gl2IB!GBUOB2gl2IB!GB 7HBr'Q,r	aAvBF{Hvv{$9!!ekkQ&6!%3u:!5H3QqS9#AsSYGG 66Q;bJY&8r>2JqL6 tRxSY' *!&"5*27B79
8Tq 2JrM2% &q!tR 01fk1HBFA
 tQwSY')!&"5*27B79
8T GE5zA~BB#Aub11 7b"f9aqAqQw3s3ru:/B36RjG3s2ww'(RC/rRCyqAa%1q5%A%aaa%1q5%A%aa q5!|RmGBax r
{A~&&Ab!ac(+16AaC1q(AFqAvB 6a!C%2..U
a Rv;?
 %++"2!YYs5z1N)1S[=9EE6#e)#3RX>>r.   c                sL   Ve   V P                  WV4      # \        V4      pV\        J d   V# Vf   \        4       pV P	                  W4      pV'       d   V# V'       g%   V '       g   VP                  \        R4      # \        # ^ pV P                  ^8X  d^   VP                  4       '       d   VP                  4       '       g   ^pMV '       d   VP                  \        R4      # V P                  4       p V '       g,   VP                  ^ 8X  d   \        VR^ 4      # \        V,          # V P                  4       '       d,   VP                  ^ 8X  d   \        V,          # \        VR^ 4      # V \        8X  Ed    VP                  4       '       d   VP                  ^8X  d   ^ pM(WP                  8  d   VP                  pM\!        V4      pV P"                  V,          pV^VP                  ,
          8  d)   ^VP                  ,
          pVP                  \$        4       M=VP                  \&        4       VP                  \$        4       ^VP                  ,
          p\        VRRV) ,          ,           V4      # V P)                  4       pVP                  4       '       d2   VP                  ^ 8H  V^ 8  8X  d   \        VR^ 4      # \        V,          # R pRp	V P+                  4       VP)                  4       ,           p
V^ 8  VP                  ^ 8H  8X  dC   V
\-        \/        VP0                  4      4      8  d   \        VRVP0                  ^,           4      pM>VP3                  4       pV
\-        \/        V) 4      4      8  d   \        VRV^,
          4      pVfQ   V P5                  WP                  ^,           4      pVe+   V^8X  d"   \        ^VP6                  VP"                  4      pRp	Vf   VP                  p\9        V 4      pVP                   VP:                  r\9        V4      pVP                   VP:                  ppVP<                  ^8X  d   V) p^p \?        WVVVV,           4      w  ppV^^
\-        \/        V4      4      V,
          ^,
          ,          ,          ,          '       d   MV^,          pKb  \        V\/        V4      V4      pV	'       Ed   VP                  4       '       Eg   \-        VP6                  4      VP                  8:  dn   VP                  ^,           \-        VP6                  4      ,
          p\        VP                  VP6                  RV,          ,           VP"                  V,
          4      pVPA                  4       pVPC                  4        \D         F  p^ VPF                  V&   K  	  VPI                  V4      pVP                  \&        4       VPJ                  \L        ,          '       d   VP                  \N        4       VPJ                  \P        ,          '       d"   VP                  \P        RVP                  4       \N        \L        \&        \$        \R        3 F/  pVPJ                  V,          '       g   K  VP                  V4       K1  	  V# VPI                  V4      pV# )Nz0 ** 0z+x ** y with x negative and y not an integerrp   r   FTr  )*rA  r   r   r   r   r   r   _OnerC   r:  r;  r   rB   rK   r   rR   rn   r   r   r
   r   _log10_exp_boundr   r|   rS   r   rP  rD   r   ro   rM   _dpowerrY   rZ   ri   rj   r   flagsr   r   r   r   )r1   r   r>  r2   rG   Zresult_signZ
multiplierro   Zself_adjexactZboundr   rG  rH  rI  rJ  rK  rL  rM  extrar   r   Z
newcontextZ	exceptions   &&&&                    r,   __pow__ZDecimal.__pow__  sM   0 %%eW==u%N"L? lG u.J ++,<hGG ::?!!}}"#K "//0@EG G ##%D {{a'S!<<&{33 {{a&{33'S!<<
 4<!!
 ;;!#!"J\\)!(J!$UJii*,7<<'GLL.C((1$$W-$$W-n#KS#XsCC ==? q hl3'S!<<&{33  %%'%..*::Mu{{a/0 C-..&{CaH MMOECK((&{CqA ;##E<<!+;<C!#*1chhAC ;AAUUAEEAUUAEEBvv{S E$RRQuW=
sAb3s5z?1#4Q#67788
";E
C@C 5))++ 388},!,,*S]:&syy#((3w;2F'*xx'79 !J""$%	./
  + & ((:&C ##G,	**''	2 ))$$X|SYYG&	7GWL	##I..((3 M 
 ((7#C
r.   c                sV    \        V4      pV\        J d   V# VP                  WVR 7      # r   )r   r   rW  )r1   r   r>  r2      &&&&r,   __rpow__ZDecimal.__rpow__	  s,    u%N"L}}T7};;r.   c                s`   Vf   \        4       pV P                  '       d   V P                  VR7      pV'       d   V# V P                  V4      pVP	                  4       '       d   V# V'       g   \        VP                  R^ 4      # VP                  VP                  4       .VP                  ,          p\        VP                  4      pVP                  pVP                  V^,
          ,          R8X  d   Wd8  d   V^,          pV^,          pK9  \        VP                  VP                  R V V4      # )NrX   rp   )r   r   r   r   r   rB   rC   rS   r  rf   r   rD   r   )r1   r2   rG   Zdupr  Zendro   s   &&     r,   	normalizeZDecimal.normalize	  s     ? lG""7"3C
ii ??J#CIIsA66<<0?#((mhhhhs1uo$1HC1HC		388DS>3??r.   c                s    \        VR R7      pVf   \        4       pVf   VP                  pV P                  '       g   VP                  '       d   V P	                  W4      pV'       d   V# VP                  4       '       g   V P                  4       '       dN   VP                  4       '       d"   V P                  4       '       d   \        V 4      # VP                  \        R4      # VP                  4       VP                  u;8:  d   VP                  8:  g   M VP                  \        R4      # V '       g3   \        V P                  RVP                  4      pVP                  V4      # V P                  4       pWSP                  8  d   VP                  \        R4      # WQP                  ,
          ^,           VP                   8  d   VP                  \        R4      # V P#                  VP                  V4      pVP                  4       VP                  8  d   VP                  \        R4      # \%        VP&                  4      VP                   8  d   VP                  \        R4      # V'       d5   VP                  4       VP(                  8  d   VP                  \*        4       VP                  V P                  8  d1   W@8w  d   VP                  \,        4       VP                  \.        4       VP                  V4      pV# )Tr   zquantize with one INFz)target exponent out of bounds in quantizerp   z9exponent of quantize result too large for current contextz7quantize result has too many digits for current context)r   r   rQ   r   r   r   r    r   r   r   r   rS   rB   rC   r   r   rR   r   r   rD   re   r   r
   r   )r1   ro   rQ   r2   rG   r   s   &&&&  r,   r2  ZDecimal.quantize	  sU   
 S$/? lG''Hs""30C
  D$4$4$6$6??$$)9)9););"4=(++,<(?A A 388;w||;''(8>@ @ "4::sCHH=C88G$$<<'''(8(ce e88#a'',,6''(8(ac c mmCHHh/<<>GLL(''(8(ce esxx=7<<'''(8(ac c 3<<>GLL0  +88dii{$$W-  ) hhw
r.   c                sF   \        VR R7      pV P                  '       g   VP                  '       dY   V P                  4       ;'       d    VP                  4       ;'       g)    V P                  4       ;'       d    VP                  4       # V P                  VP                  8H  # r   )r   r   r   is_infiniter   r   r   r,   same_quantumZDecimal.same_quantum	  s~     ud3u000KKM44elln ? ?$$&>>5+<+<+>@yyEJJ&&r.   c                s   V P                   '       d   \        V 4      # V '       g   \        V P                  R V4      # V P                  V8  dA   \        V P                  V P
                  R V P                  V,
          ,          ,           V4      # \        V P
                  4      V P                  ,           V,
          pV^ 8  d!   \        V P                  RV^,
          4      p ^ pV P                  V,          pV! W4      pV P
                  RV ;'       g    R pV^8X  d   \        \        V4      ^,           4      p\        V P                  Wa4      # )rp   r   N)
r   r    rB   rC   r   rD   r   r  r|   rn   )r1   ro   rQ   r   Zthis_functionr  r   r  r,   r   ZDecimal._rescale
  s    4= #DJJS9999#DJJ(,		CS4I(I3P P
 TYY$))+c1A:#DJJSU;DF44X>-		'6"))ca<E
1%E

E77r.   c                sr   V^ 8:  d   \        R4      hV P                  '       g	   V '       g   \        V 4      # V P                  V P	                  4       ^,           V,
          V4      pVP	                  4       V P	                  4       8w  d/   VP                  VP	                  4       ^,           V,
          V4      pV# )r@   z'argument should be at least 1 in _round)rd   r   r    r   r   )r1   placesrQ   rG   r   r,   _roundZDecimal._round0
  s     Q;FGG44= mmDMMOA-f4h?
 <<>T]]_,,,s||~a/6AC
r.   c                s   V P                   '       d(   V P                  VR 7      pV'       d   V# \        V 4      # V P                  ^ 8  d   \        V 4      # V '       g   \	        V P
                  R^ 4      # Vf   \        4       pVf   VP                  pV P                  ^ V4      pW08w  d   VP                  \        4       VP                  \        4       V# )rX   rp   )r   r   r    r   rB   rC   r   rQ   r   r   r
   r   r1   rQ   r2   rG   r   r,   to_integral_exactZDecimal.to_integral_exactG
  s     ""7"3C
4= 99>4= #DJJQ77? lG''HmmAx(;  )W%
r.   c                s   Vf   \        4       pVf   VP                  pV P                  '       d(   V P                  VR7      pV'       d   V# \	        V 4      # V P
                  ^ 8  d   \	        V 4      # V P                  ^ V4      # )NrX   )r   rQ   r   r   r    r   r   r_  r   r,   r<  ZDecimal.to_integral_valued
  sv    ? lG''H""7"3C
4= 99>4= ==H--r.   c                sd   Vf   \        4       pV P                  '       dO   V P                  VR7      pV'       d   V# V P                  4       '       d   V P                  ^ 8X  d   \        V 4      # V '       g:   \        V P                  RV P                  ^,          4      pVP                  V4      # V P                  ^8X  d   VP                  \        R4      # VP                  ^,           p\        V 4      pVP                  ^,	          pVP                  ^,          '       d8   VP                  ^
,          p\        V P                   4      ^,	          ^,           pM/VP                  p\        V P                   4      ^,           ^,	          pW7,
          pV^ 8  d   V^dV,          ,          pRp	M\#        V^dV) ,          4      w  rjV
'       * p	WX,          p^
V,          p Wk,          pW8:  d   MW,           ^,	          pK!  T	;'       d    W,          V8H  p	V	'       d3   V^ 8  d   V^
V,          ,          pMV^
V) ,          ,          pWX,          pMV^,          ^ 8X  d
   V^,          p\        ^ \%        V4      V4      pVP'                  4       pVP)                  \*        4      pVP                  V4      pWn        V# )NrX   rp   zsqrt(-x), x > 0T)r   r   r   r   rC   r    rB   r   r   r   r   rR   r   ro   rn   r   rD   r   r|   _shallow_copy_set_roundingr   rQ   )r1   r2   rG   rR   opr   clr   rU  r   rA   r   rQ   r   r,   sqrtZDecimal.sqrtw
  s)   ? lG""7"3C
!!djjAot}$"4::sDIINCC88G$$::?''(8:KLL, ||A~ d^FFaK66A::ATYY1$)AADIIq A%A A:eOAE!!S5&[1LA!ME	
 HAvEQJ""!#(zb%iR%ZJA 1uzQq#a&!, '')((9hhw#
r.   c                s
   \        VR R7      pVf   \        4       pV P                  '       g   VP                  '       d   V P                  4       pVP                  4       pV'       g	   V'       dP   V^8X  d   V^ 8X  d   V P	                  V4      # V^8X  d   V^ 8X  d   VP	                  V4      # V P                  W4      # V P                  V4      pV^ 8X  d   V P                  V4      pVR8X  d   TpMT pVP	                  V4      # Tr   r   r   r   r   r   r   r   r   compare_totalr1   r   r2   ZsnZonrd  rG   r  r,   r   ZDecimal.max
  s     ud3? lGu000 BBR7rQw99W--7rQw ::g..''77IIe6 ""5)A7CCxx  r.   c                s
   \        VR R7      pVf   \        4       pV P                  '       g   VP                  '       d   V P                  4       pVP                  4       pV'       g	   V'       dP   V^8X  d   V^ 8X  d   V P	                  V4      # V^8X  d   V^ 8X  d   VP	                  V4      # V P                  W4      # V P                  V4      pV^ 8X  d   V P                  V4      pVR8X  d   T pMTpVP	                  V4      # rg  rh  rj  r  r,   r   ZDecimal.min  s     ud3? lGu000 BBR7rQw99W--7rQw ::g..''77IIe6""5)A7CCxx  r.   c                s    V P                   '       d   R # V P                  ^ 8  d   R# V P                  V P                  R pVR\        V4      ,          8H  # )FTNrp   )r   r   rD   r   )r1   Zrestr   r,   r:  ZDecimal._isinteger&  sF    99>yy$s3t9}$$r.   c                s    V '       d   V P                   ^ 8  d   R# V P                  RV P                   ,           ,          R9   # )r@   Tr*  r   )r   rD   r   r[   r,   r;  ZDecimal._iseven/  s.    tyy1}yyDII&'11r.   c                s     V P                   \        V P                  4      ,           ^,
          #   \         d     ^ # i ; irw   )r   r   rD   r_   r   r[   r,   r   ZDecimal.adjusted5  s5    	99s499~-11 		s   ,/ >>c                r(   r)   r*   r   r[   r,   	canonicalZDecimal.canonical=  s	     r.   c                sv    \        VR R7      pV P                  W4      pV'       d   V# V P                  WR7      # Tr   rX   )r   r   r   r   r   r,   compare_signalZDecimal.compare_signalE  s9     u5&&u6J||E|33r.   c                s   \        VR R7      pV P                  '       d   VP                  '       g   \        # V P                  '       g   VP                  '       d   \        # V P                  pV P	                  4       pVP	                  4       pV'       g	   V'       d   WE8X  d}   \        V P                  4      V P                  3p\        VP                  4      VP                  3pWg8  d   V'       d   \        # \        # Wg8  d   V'       d   \        # \        # \        # V'       d6   V^8X  d   \        # V^8X  d   \        # V^8X  d   \        # V^8X  d   \        # M4V^8X  d   \        # V^8X  d   \        # V^8X  d   \        # V^8X  d   \        # W8  d   \        # W8  d   \        # V P                  VP                  8  d   V'       d   \        # \        # V P                  VP                  8  d   V'       d   \        # \        # \        # r   )	r   rC   _NegativeOnerQ  r   r   rD   _Zeror   )r1   r   r2   rM   Zself_nanZ	other_nanZself_keyZ	other_keyr   r,   ri  ZDecimal.compare_totalQ  s    ud3 :::ekkkzzzekkkKzz ;;=LLN	y$tyy>4994

OUZZ7	'#++'++#q=''>Kq=''>K " q=K>''q=K>''<<K99uzz!##99uzz!##r.   c                s~    \        VR R7      pV P                  4       pVP                  4       pVP                  V4      # r   )r   r   ri  )r1   r   r2   r  Zor   r,   compare_total_magZDecimal.compare_total_mag  s6    
 ud3MMONNq!!r.   c                sZ    \        ^ V P                  V P                  V P                  4      # r  )rB   rD   r   r   r   r[   r,   r   ZDecimal.copy_abs  s!    499dii9I9IJJr.   c                s    V P                   '       d-   \        ^ V P                  V P                  V P                  4      # \        ^V P                  V P                  V P                  4      # r  )rC   rB   rD   r   r   r   r[   r,   r   ZDecimal.copy_negate  sI    :::#Atyy$))T=M=MNN#Atyy$))T=M=MNNr.   c                s    \        VR R7      p\        VP                  V P                  V P                  V P
                  4      # r   )r   rB   rC   rD   r   r   r   r   r,   	copy_signZDecimal.copy_sign  s6    ud3TYY $		4+;+;= 	=r.   c                s   Vf   \        4       pV P                  VR7      pV'       d   V# V P                  4       R8X  d   \        # V '       g   \        # V P                  4       ^8X  d   \        V 4      # VP                  pV P                  4       pV P                  ^ 8X  dR   V\        \        VP                  ^,           ^,          4      4      8  d!   \        ^ RVP                  ^,           4      pEMV P                  ^8X  d[   V\        \        VP                  4       ) ^,           ^,          4      4      8  d%   \        ^ RVP                  4       ^,
          4      pEM2V P                  ^ 8X  d3   WC) 8  d,   \        ^ RRV^,
          ,          ,           R,           V) 4      pMV P                  ^8X  d3   WC) ^,
          8  d%   \        ^ RV^,           ,          V) ^,
          4      pM\        V 4      pVP                  VP                   rvVP"                  ^8X  d   V) p^p \%        WgW8,           4      w  rV	^^
\        \        V	4      4      V,
          ^,
          ,          ,          ,          '       d   MV^,          pK^  \        ^ \        V	4      V
4      pVP'                  4       pVP)                  \*        4      pVP-                  V4      pWn        V# )NrX   r   rp   rP   r   )r   r   r   rp  rQ  r    rR   r   rC   r   r|   rS   rB   r   r   rn   ro   rM   _dexpra  rb  r   r   rQ   )r1   r2   rG   rG  adjrc  rd  r   rV  r   ro   rQ   s   &&          r,   ro   ZDecimal.exp  s2    ? lG w/J #L K "4=  LLmmo ::?sSgll1na-?)@%AA"1c7<<>:CZZ1_s30@0BA/E+F'G!G"1c7==?1+<=CZZ1_r"1cC1Io&;aR@CZZ1_r!t"1c1Q3i!A6C $B66266qww!|B
 E"11
Ab3s5z?1#4Q#67788
"1c%j#6C '')((9hhw#
r.   c                r/   )Tr*   r   r[   r,   is_canonicalZDecimal.is_canonical  s     r.   c                s$    V P                   '       * # r)   )r   r   r[   r,   	is_finiteZDecimal.is_finite	  s     ####r.   c                     V P                   R 8H  # )rs   r   r   r[   r,   r[  ZDecimal.is_infinite      yyCr.   c                s     V P                   R9   # )rA   rx   rx  r   r[   r,   r   ZDecimal.is_nan  s    yyJ&&r.   c                s    V P                   '       g	   V '       g   R # Vf   \        4       pVP                  V P                  4       8*  # r   )r   r   re   r   r   r   r,   	is_normalZDecimal.is_normal  s4    4? lG||t}}..r.   c                rw  )rA   rx  r   r[   r,   r   ZDecimal.is_qnan!  ry  r.   c                s     V P                   ^8H  # rk  )rC   r   r[   r,   	is_signedZDecimal.is_signed%  s    zzQr.   c                rw  )rr   rx  r   r[   r,   r   ZDecimal.is_snan)  ry  r.   c                s    V P                   '       g	   V '       g   R # Vf   \        4       pV P                  4       VP                  8  # r   )r   r   r   re   r   r   r,   is_subnormalZDecimal.is_subnormal-  s4    4? lG}}--r.   c                sR    V P                   '       * ;'       d    V P                  R 8H  # r   r   r   r[   r,   is_zeroZDecimal.is_zero5  s"    ###88		S(88r.   c                sp   V P                   \        V P                  4      ,           ^,
          pV^8  d*   \        \        V^,          ^
,          4      4      ^,
          # VR8:  d1   \        \        RV,
          ^,          ^
,          4      4      ^,
          # \	        V 4      pVP
                  VP                  rCV^ 8X  dJ   \        V^
V) ,          ,
          4      p\        V4      p\        V4      \        V4      ,
          WV8  ,
          # V\        \        ^
V) ,          V,
          4      4      ,           ^,
          # )rw   r   r   r   r   rD   r|   r   rn   ro   r1   rt  rc  rd  r   numZden   &      r,   _ln_exp_boundZDecimal._ln_exp_bound9  s     ii#dii.(1,!8s3r62:'!++"9sBsFB;?+,q00d^vvrvv1!8aQBh-Ca&Cs8c#h&#)443s2r6A:''!++r.   c           
     s@   Vf   \        4       pV P                  VR7      pV'       d   V# V '       g   \        # V P                  4       ^8X  d   \        # V \
        8X  d   \        # V P                  ^8X  d   VP                  \        R4      # \        V 4      pVP                  VP                  rTVP                  pW`P                  4       ,
          ^,           p \        WEV4      pV^^
\!        \#        \%        V4      4      4      V,
          ^,
          ,          ,          ,          '       d   MV^,          pK_  \'        \        V^ 8  4      \#        \%        V4      4      V) 4      pVP)                  4       pVP+                  \,        4      p	VP/                  V4      pWn        V# )NrX   zln of a negative value)r   r   _NegativeInfinityr   	_InfinityrQ  rp  rC   r   r   r   rn   ro   rR   r  _dlogr   r|   r   rB   ra  rb  r   r   rQ   
r1   r2   rG   rc  rd  r   rG  r]  r   rQ   
   &&        r,   lnZ
Decimal.lnR  s`    ? lG w/J $$ " 4<L ::?''(8(@B B d^vvrvv1LL ''))A-!'E"s3s5z?3A5a78899aKFs57|SU_vgF'')((9hhw#
r.   c                sl   V P                   \        V P                  4      ,           ^,
          pV^8  d   \        \        V4      4      ^,
          # VR8:  d#   \        \        RV,
          4      4      ^,
          # \	        V 4      pVP
                  VP                  rCV^ 8X  dX   \        V^
V) ,          ,
          4      p\        ^V,          4      p\        V4      \        V4      ,
          WV8  ,
          ^,           # \        ^
V) ,          V,
          4      p\        V4      V,           VR8  ,
          ^,
          # )rw   Z231r   r   r~  r  r  r,   rR  ZDecimal._log10_exp_bound  s     ii#dii.(1,!8s3x=?""9s2c6{#A%%d^vvrvv1!8aQBh-Cc!e*Cs8c#h&#)4q88"qb&(m3x!|sU{+a//r.   c           
     s.   Vf   \        4       pV P                  VR7      pV'       d   V# V '       g   \        # V P                  4       ^8X  d   \        # V P
                  ^8X  d   VP                  \        R4      # V P                  ^ ,          R8X  dq   V P                  R,          R\        V P                  4      ^,
          ,          8X  d8   \        V P                  \        V P                  4      ,           ^,
          4      pM\        V 4      pVP                  VP                  rTVP                  pW`P!                  4       ,
          ^,           p \#        WEV4      pV^^
\        \%        \'        V4      4      4      V,
          ^,
          ,          ,          ,          '       d   MV^,          pK_  \)        \        V^ 8  4      \%        \'        V4      4      V) 4      pVP+                  4       pVP-                  \.        4      p	VP1                  V4      pWn        V# )NrX   zlog10 of a negative valuer   :rw   NNrp   )r   r   r  r   r  rC   r   r   rD   r   r    r   r   rn   ro   rR   rR  _dlog10r|   r   rB   ra  rb  r   r   rQ   r  r  r,   log10ZDecimal.log10  s    ? lG w/J $$ " ::?''(8(CE E 99Q<3499R=CTYY!9K4L#L$))c$))n4q89C $B66266qA ,,..q0Ff-Ab3s3u:#7#9!#;<<==!"3uQw<SZ6'JC'')((9hhw#
r.   c                s    V P                  VR 7      pV'       d   V# Vf   \        4       pV P                  4       '       d   \        # V '       g   VP	                  \
        R^4      # \        V P                  4       4      pVP                  V4      # )rX   zlogb(0))	r   r   r   r  r   r	   r    r   r   r   r   r,   logbZDecimal.logb  s}     w/J? lG  ''	1EE
 dmmo&xx  r.   c                s    V P                   ^ 8w  g   V P                  ^ 8w  d   R# V P                   F  pVR9  g   K   R# 	  R# )r@   FZ01T)rC   r   rD   )r1   Zdigr   r,   
_islogicalZDecimal._islogical  s9     ::?dii1n99C$  r.   c                s4   VP                   \        V4      ,
          pV^ 8  d   RV,          V,           pMV^ 8  d   W!P                   ) R pVP                   \        V4      ,
          pV^ 8  d   RV,          V,           pW#3# V^ 8  d   W1P                   ) R pW#3# r@   rp   N)rR   r   )r1   r2   opaopbZdifr8  r,   _fill_logicalZDecimal._fill_logical  s    llSX%7c'C-C1W||mn%CllSX%7c'C-C x 1W||mn%Cxr.   c                s   Vf   \        4       p\        VRR7      pV P                  4       '       d   VP                  4       '       g   VP                  \        4      # V P                  W P                  VP                  4      w  r4RP                  \        W44       UUu. uF)  w  rV\        \        V4      \        V4      ,          4      NK+  	  upp4      p\        ^ VP                  R4      ;'       g    R^ 4      # u uppi NTr   rl   rp   r   r   r  r   r   r  rD   r   Zzipr|   rn   rB   r   r1   r   r2   r  r  rO  br   r   r,   logical_andZDecimal.logical_and      
 ? lGud3  (8(8(:(:''(899 ''EJJG
 CE#c!fSVm,EF6==#5#<#<a@@ F   /C;
c                sz    Vf   \        4       pV P                  \        ^ RVP                  ,          ^ 4      V4      # )Nr   )r   logical_xorrB   rR   r   r   r,   logical_invertZDecimal.logical_invert"  s;    
 ? lG 03w||3CA F ') 	)r.   c                s   Vf   \        4       p\        VRR7      pV P                  4       '       d   VP                  4       '       g   VP                  \        4      # V P                  W P                  VP                  4      w  r4RP                  \        W44       UUu. uF)  w  rV\        \        V4      \        V4      ,          4      NK+  	  upp4      p\        ^ VP                  R4      ;'       g    R^ 4      # u uppi r  r  r  r   r,   
logical_orZDecimal.logical_or,  r  r  c                s   Vf   \        4       p\        VRR7      pV P                  4       '       d   VP                  4       '       g   VP                  \        4      # V P                  W P                  VP                  4      w  r4RP                  \        W44       UUu. uF)  w  rV\        \        V4      \        V4      ,          4      NK+  	  upp4      p\        ^ VP                  R4      ;'       g    R^ 4      # u uppi r  r  r  r   r,   r  ZDecimal.logical_xor@  r  r  c                sB   \        VR R7      pVf   \        4       pV P                  '       g   VP                  '       d   V P                  4       pVP                  4       pV'       g	   V'       dP   V^8X  d   V^ 8X  d   V P	                  V4      # V^8X  d   V^ 8X  d   VP	                  V4      # V P                  W4      # V P                  4       P                  VP                  4       4      pV^ 8X  d   V P                  V4      pVR8X  d   TpMT pVP	                  V4      # rg  	r   r   r   r   r   r   r   r   ri  rj  r  r,   max_magZDecimal.max_magT  s    ud3? lGu000 BBR7rQw99W--7rQw ::g..''77MMO  !126""5)A7CCxx  r.   c                sB   \        VR R7      pVf   \        4       pV P                  '       g   VP                  '       d   V P                  4       pVP                  4       pV'       g	   V'       dP   V^8X  d   V^ 8X  d   V P	                  V4      # V^8X  d   V^ 8X  d   VP	                  V4      # V P                  W4      # V P                  4       P                  VP                  4       4      pV^ 8X  d   V P                  V4      pVR8X  d   T pMTpVP	                  V4      # rg  r  rj  r  r,   min_magZDecimal.min_magr  s    ud3? lGu000 BBR7rQw99W--7rQw ::g..''77MMO  !126""5)A7CCxx  r.   c                s   Vf   \        4       pV P                  VR7      pV'       d   V# V P                  4       R8X  d   \        # V P                  4       ^8X  d-   \	        ^ RVP
                  ,          VP                  4       4      # VP                  4       pVP                  \        4       VP                  4        V P                  V4      pW08w  d   V# V P                  \	        ^ RVP                  4       ^,
          4      V4      # NrX   rP   r   r   )r   r   r   r  rB   rR   r  rY   rb  r   _ignore_all_flagsr   r   r   r1   r2   rG   Znew_selfr  r,   
next_minusZDecimal.next_minus  s    ? lGw/J#$$"#As7<<'7HH,,.k*!!#99W%O||,QW]]_Q5FG#% 	%r.   c                s   Vf   \        4       pV P                  VR7      pV'       d   V# V P                  4       ^8X  d   \        # V P                  4       R8X  d-   \	        ^RVP
                  ,          VP                  4       4      # VP                  4       pVP                  \        4       VP                  4        V P                  V4      pW08w  d   V# V P                  \	        ^ RVP                  4       ^,
          4      V4      # r  )r   r   r   r  rB   rR   r  rY   rb  r   r  r   r   r   r  r  r,   	next_plusZDecimal.next_plus  s    ? lGw/J"##As7<<'7HH,,.m,!!#99W%O||,QW]]_Q5FG#% 	%r.   c                s   \        VR R7      pVf   \        4       pV P                  W4      pV'       d   V# V P                  V4      pV^ 8X  d   V P	                  V4      # VR8X  d   V P                  V4      pMV P                  V4      pVP                  4       '       dN   VP                  \        RVP                  4       VP                  \        4       VP                  \        4       V# VP                  4       VP                  8  dr   VP                  \        4       VP                  \         4       VP                  \        4       VP                  \        4       V'       g   VP                  \"        4       V# )Tr   z Infinite result from next_towardr   )r   r   r   r   rr  r  r  r   r   r   rC   r
   r   r   re   r   r   r   )r1   r   r2   rG   Z
comparisonr   r,   next_towardZDecimal.next_toward  s.    ud3? lGu.JYYu%
?>>%((..)C//'*C ??  !C!$,   )  ) 
 \\^gll*  +  +  )  ) $$W-
r.   c                s   V P                  4       '       d   R # V P                  4       '       d   R# V P                  4       pV^8X  d   R# VR8X  d   R# V P                  4       '       d   V P                  '       d   R# R# Vf   \        4       pV P                  VR7      '       d   V P                  '       d   R# R# V P                  '       d   R	# R
# )r   r   z	+Infinityz	-Infinityz-Zeroz+ZerorX   z
-Subnormalz
+Subnormalz-Normalz+Normalr   )r   r   r   r}  rC   r   r|  )r1   r2   infr   r,   number_classZDecimal.number_class  s     <<>><<>> !8"9<<>>zzz? lGW--zzz##:::r.   c                    \        ^
4      # rB  r  r   r[   r,   radixZDecimal.radix  s    r{r.   c                s   Vf   \        4       p\        VRR7      pV P                  W4      pV'       d   V# VP                  ^ 8w  d   VP	                  \
        4      # VP                  ) \        V4      u;8:  d   VP                  8:  g   M VP	                  \
        4      # V P                  4       '       d   \        V 4      # \        V4      pV P                  pVP                  \        V4      ,
          pV^ 8  d   RV,          V,           pMV^ 8  d   WV) R  pWTR  VR V ,           p\        V P                  VP                  R4      ;'       g    RV P                  4      # NTr   rp   r   r   r   r   r   r   rR   rn   r   r    rD   r   rB   rC   r   )r1   r   r2   rG   torotrotdigtopadZrotatedr   r,   rotateZDecimal.rotate  s'   ? lGud3u.J::?''(899U;w||;''(8994=  E
s6{*19Y'FQYFG_F .6&5>1

 's 3 : :sDIIG 	Gr.   c                s   Vf   \        4       p\        VRR7      pV P                  W4      pV'       d   V# VP                  ^ 8w  d   VP	                  \
        4      # RVP                  VP                  ,           ,          p^VP                  VP                  ,           ,          pV\        V4      u;8:  d   V8:  g   M VP	                  \
        4      # V P                  4       '       d   \        V 4      # \        V P                  V P                  V P                  \        V4      ,           4      pVP                  V4      pV# )NTr   r   )r   r   r   r   r   r   rS   rR   rn   r   r    rB   rC   rD   r   )r1   r   r2   rG   ZliminfZlimsupr   r  r,   scalebZDecimal.scaleb;  s    ? lGud3u.J::?''(899w||gll23w||gll23#e*..''(8994= TZZDIIE
4JKFF7Or.   c                s   Vf   \        4       p\        VRR7      pV P                  W4      pV'       d   V# VP                  ^ 8w  d   VP	                  \
        4      # VP                  ) \        V4      u;8:  d   VP                  8:  g   M VP	                  \
        4      # V P                  4       '       d   \        V 4      # \        V4      pV P                  pVP                  \        V4      ,
          pV^ 8  d   RV,          V,           pMV^ 8  d   WV) R  pV^ 8  d   VR V pMVRV,          ,           pWrP                  ) R  p\        V P                  VP                  R4      ;'       g    RV P                  4      # r  r  )r1   r   r2   rG   r  r  r  Zshiftedr   r,   r   ZDecimal.shiftT  sC   ? lGud3u.J::?''(899U;w||;''(8994=  E
s6{*19Y'FQYFG_F 19VenGs5y(G||mn-G

$+NN3$7$>$>3		K 	Kr.   c                s2    V P                   \        V 4      33# r)   )	__class__r|   r   r[   r,   
__reduce__ZDecimal.__reduce__{  s    T--r.   c                `    \        V 4      \        J d   V # V P                  \        V 4      4      # r)   typer    r  r|   r   r[   r,   __copy__ZDecimal.__copy__~  &    : K~~c$i((r.   c                r  r)   r  )r1   Zmemor   r,   __deepcopy__ZDecimal.__deepcopy__  r  r.   c                sV   Vf   \        4       p\        WR7      pV P                  '       dS   \        V P                  V4      p\        V P                  4       4      pVR,          R8X  d
   VR,          p\        WVV4      # VR,          f   RR.VP                  ,          VR&   VR,          R8X  d3   \        V P                  V P                  V P                  ^,           4      p VP                  pVR,          pVe   VR,          R9   d   V P                  V^,           V4      p M[VR,          R9   d   V P                  V) V4      p M9VR,          R	9   d,   \        V P                  4      V8  d   V P                  W4      p V '       g2   V P                  ^ 8  d!   VR,          R9   d   V P                  ^ V4      p V '       g%   VR
,          '       d   V P                  '       d   ^ p	MV P                  p	V P                  \        V P                  4      ,           p
VR,          R9   d   V '       g   Ve   ^V,
          pM?^pM<VR,          R9   d   T
pM+VR,          R	9   d   V P                  ^ 8:  d   V
R8  d   T
pM^pX^ 8  d   RpRV) ,          V P                  ,           pMyV\        V P                  4      8  d8   V P                  RV\        V P                  4      ,
          ,          ,           pRpM(V P                  R V ;'       g    RpV P                  VR  pW,
          p\!        WWV4      # )N)_localeconvr  %gG	precisioneEzfF%ZgGZno_neg_0rp   rl   r   )r   _parse_format_specifierr   _format_signrC   r|   r   _format_alignr   rB   rD   r   rQ   r^  r   r   _format_number)r1   Z	specifierr2   r  specrM   bodyrQ   r  Zadjusted_signr   r   r   r   ro   s   &&&&           r,   
__format__ZDecimal.__format__  s    ? lG&yJ 

D1Dt}}'DF|s" T22 <:g&6&67DL <3#DJJ		499Q;GD ##%	 F|t#{{9Q;9f&}}iZ:f%#dii.9*D{{97 		A$v,%*?==H-DZ((TZZZM JJM YYTYY/
<4I1y=&\U"!H&\T!yyA~*r/% a<GXI2HDII&ii#xDII'>"??GHii	*11cGyy+H! mhTJJr.   )r   rD   r   rC   )r   rD   rC   r   )rp   N)NNr)   )FN)TN)r6   r7   r8   r9   	__slots__rz   Zclassmethodr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Z__radd__r   r   r   Z__rmul__r   r  r  r  r  r	  r
  r  r  r  r  r  Z	__trunc__Zpropertyr  r  r  r  rE   r   r#  r$  r%  r)  r+  r-  r.  r/  rg   r  r3  r6  r7  r9  rA  rP  rW  rY  rZ  r2  r\  r   r^  r`  r<  to_integralrf  r   r   r:  r;  r   rl  rn  ri  rq  r   r   rr  ro   ru  rv  r[  r   rz  r   r{  r   r|  r}  r  r  rR  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,   r    r      s     7IT@l A A * *X@B4-'@%$%$%)$(4O0d+
2/h7!,!*,Tl HB46n H9!vB8"#H764I!V/897 I   $
ZL'--+++ # &**&" 	<6|24*/XS4jv?pVp<@2;z' 8D.:." $KaF(!T !D%2
4FR	"KO=IV$ '/  .9,20d0<1f!<A()A(A(!<!<%.%.,\(TGB2$KN.)
)TK TKr.   c                 sh    \         P                  \        4      pWn        Wn        W$n        W4n        V# r)   )ry   rz   r    rC   rD   r   r   )rM   Zcoefficientr?  Zspecialr1   r8  r,   rB   rB     s,     >>'"DJIIKr.   c                   s2   a  ] tR tRt o R tR tR tRtV tR# )r\   i  c                s0    VP                  4       V n        R # r)   )rY   r`   )r1   r`   r   r,   __init__Z_ContextManager.__init__  s    &++-r.   c                sb    \        4       V n        \        V P                  4       V P                  # r)   )r   saved_contextr   r`   r   r[   r,   	__enter__Z_ContextManager.__enter__   s&    '\4##$r.   c                s0    \        V P                  4       R # r)   )r   r  )r1   tvZtbrX  r,   __exit__Z_ContextManager.__exit__  s    4%%&r.   )r`   r  N)	r6   r7   r8   r9   r  r  r  r:   r;   r<   r=   r,   r\   r\     s     . ' 'r.   r\   c                   s"  a  ] tR tRt o RUR ltR tR tR tR tR t	R	 t
R
 tR tR tR t]tRVR ltR tR tR tRtR tR tR tRWR l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- t0R. t1R/ t2R0 t3R1 t4R2 t5R3 t6R4 t7R5 t8R6 t9R7 t:R8 t;R9 t<R: t=R; t>R< t?R= t@R> tAR? tBR@ tCRA tDRB tERC tFRD tGRVRE ltHRF tIRG tJRH tKRI tLRJ tMRK tNRL tORM tPRN tQRO tRRP tSRQ tTRR tURS tV]VtWRTtXV tYR# )Xr   i  Nc
                s  aa  \         p
Ve   TMX
P                  V n        Ve   TMX
P                  V n        Ve   TMX
P                  V n        Ve   TMX
P
                  V n        Ve   TMX
P                  V n        Ve   TMX
P                  V n        V	f	   . V n        MWn        Sf!   X
P                  P                  4       V n	        MC\        S\        4      '       g'   \        V3R l\        S,            4       4      V n	        MSV n	        Sf"   \        P                  \        ^ 4      V n        R # \        S\        4      '       g(   \        V3R l\        S,            4       4      V n        R # SV n        R #   \         d     EL|i ; i)Nc              3   B   <"   T F  q\        VS9   4      3x  K  	  R # 5ir)   rn   ).0r  rj      & r,   	<genexpr>#Context.__init__.<locals>.<genexpr>3       M<Lq#a5j/2<L   c              3   r  r)   r  )r  r  rT  r  r,   r  r  :  r  r  )r   Z	NameErrorrR   rQ   re   rS   r   rf   _ignored_flagsrj   rY   r{   rg   ri   rh   rT  )r1   rR   rQ   re   rS   r   rf   rT  rj   r  Zdcs   &&&&&&&ff& r,   r  ZContext.__init__  s&   
	B !,D"''	$,$8bkk ,D"''	 ,D"''	$,$8bkk#/URXX
!"$D"0=DJE4((MHu<LMMDJDJ=x3DJE4((MHu<LMMDJDJ7  		s   E8 8FFc                sF   \        V\        4      '       g   \        R V,          4      hVR8X  d   W$8  d   \        RWWB3,          4      hMBVR8X  d   W#8  d   \        RWWB3,          4      hM W#8  g   W$8  d   \        RWWB3,          4      h\        P                  WV4      # )z%s must be an integer-infz%s must be in [%s, %d]. got: %sr  z%s must be in [%d, %s]. got: %sz%s must be in [%d, %d]. got %s)r{   rn   r_   rd   ry   __setattr__)r1   namerc   ZvminZvmaxs   &&&&&r,   _set_integer_checkZContext._set_integer_check>  s    %%%3d:;;6>| !BdRVE^!^__ U]| !BdRVE^!^__  |u| !ATQUD]!]^^!!$e44r.   c                s   \        V\        4      '       g   \        R V,          4      hV F   pV\        9   d   K  \	        RV,          4      h	  \         F  pW29   d   K  \	        RV,          4      h	  \
        P                  WV4      # )z%s must be a signal dictz%s is not a valid signal dict)r{   rg   r_   ri   ZKeyErrorry   r  )r1   r  r   rb   r   r,   _set_signal_dictZContext._set_signal_dictL  sy    !T""6:;;C(?>BCC  C8>BCC  !!$a00r.   c                s   VR 8X  d   V P                  W^R4      # VR8X  d   V P                  WR^ 4      # VR8X  d   V P                  W^ R4      # VR8X  d   V P                  W^ ^4      # VR8X  d   V P                  W^ ^4      # VR8X  d4   V\        9   g   \        RV,          4      h\        P	                  WV4      # VR	8X  g   VR
8X  d   V P                  W4      # VR8X  d   \        P	                  WV4      # \        RV,          4      h)rR   r  re   r  rS   r   rf   rQ   z%s: invalid rounding moderT  rj   r  z.'decimal.Context' object has no attribute '%s')r  _rounding_modesr_   ry   r  r  AttributeError)r1   r  rc   r   r,   r  ZContext.__setattr__W  s   6>**45AAV^**4BBV^**45AAZ**41==W_**41==ZO+   ;e CDD%%d%88W_((55%%%%d%88 @4GI Ir.   c                s&    \        R V,          4      h)z%s cannot be deleted)r  )r1   r  r   r,   __delattr__ZContext.__delattr__p  s    3d:;;r.   c           	     s   V P                   P                  4        UUu. uF  w  rV'       g   K  VNK  	  pppV P                  P                  4        UUu. uF  w  rV'       g   K  VNK  	  pppV P                  V P                  V P
                  V P                  V P                  V P                  V P                  W433# u uppi u uppi r)   )
rT  r]   rj   r  rR   rQ   re   rS   r   rf   )r1   Zsigr  rT  rj   s   &    r,   r  ZContext.__reduce__t  s    #'::#3#3#5;#5#5;#'::#3#3#5;#5#5;DMM499dii

E:; 	; <;s   C C C&Cc                sL   . pVP                  R \        V 4      ,          4       V P                  P                  4        UUu. uF  w  r#V'       g   K  VP                  NK  	  pppVP                  RRP                  V4      ,           R,           4       V P                  P                  4        UUu. uF  w  rSV'       g   K  VP                  NK  	  pppVP                  RRP                  V4      ,           R,           4       RP                  V4      R,           # u uppi u uppi )zrContext(prec=%(prec)d, rounding=%(rounding)s, Emin=%(Emin)d, Emax=%(Emax)d, capitals=%(capitals)d, clamp=%(clamp)dzflags=[, Z]ztraps=[))r   ZvarsrT  r]   r6   r   rj   )r1   r  r   r  Znamesr  r   r,   r   ZContext.__repr__{  s    	 # : 	 )-

(8(8(:@(:a(:@	TYYu--34(,

(8(8(:@(:a(:@	TYYu--34yy|c!!	 A@s   DD0D D c                J    V P                    F  p^ V P                   V&   K  	  R# r@   N)rT  r1   flagr   r,   rZ   ZContext.clear_flags      JJD DJJt r.   c                r  r  )rj   r  r   r,   clear_trapsZContext.clear_traps  r  r.   c                s    \        V P                  V P                  V P                  V P                  V P
                  V P                  V P                  V P                  V P                  4	      pV# r)   )
r   rR   rQ   re   rS   r   rf   rT  rj   r  r1   Zncr   r,   ra  ZContext._shallow_copy  sM    TYYtyy$))]]DJJ

DJJ((* 	r.   c                s   \        V P                  V P                  V P                  V P                  V P
                  V P                  V P                  P                  4       V P                  P                  4       V P                  4	      pV# r)   )r   rR   rQ   re   rS   r   rf   rT  rY   rj   r  r  r   r,   rY   ZContext.copy  s\    TYYtyy$))]]DJJZZ__&

(9((* 	r.   c                s   \         P                  W4      pW@P                  9   d   V! 4       P                  ! V .VO5!  # ^V P                  V&   V P
                  V,          '       g   V! 4       P                  ! V .VO5!  # V! V4      hrk  )_condition_maprV   r  r4   rT  rj   )r1   Z	conditionZexplanationr+   Zerrors   &&&* r,   r   ZContext._raise_error  sx     ""98'''7>>$...

5zz%  ;%%d2T22 K  r.   c                s(    V P                   ! \         # r)   )_ignore_flagsri   r   r[   r,   r  ZContext._ignore_all_flags  s    !!8,,r.   c                sZ    V P                   \        V4      ,           V n         \        V4      # r)   )r  r   )r1   rT  s   &*r,   r  ZContext._ignore_flags  s%      $22T%[@E{r.   c                s    V'       d-   \        V^ ,          \        \        34      '       d
   V^ ,          pV F  pV P                  P	                  V4       K   	  R# r  )r{   r   r   r  Zremove)r1   rT  r  s   &* r,   _regard_flagsZContext._regard_flags  s@    Za5,77!HED&&t, r.   c                \    \        V P                  V P                  ,
          ^,           4      # rk  )rn   re   rR   r   r[   r,   r   ZContext.Etiny      499tyy(1,--r.   c                r  rk  )rn   rS   rR   r   r[   r,   r  ZContext.Etop  r  r.   c                s*    V P                   pWn         V# r)   )rQ   )r1   r  rQ   r   r,   rb  ZContext._set_rounding  s     ==r.   c                s   \        V\        4      '       d2   WP                  4       8w  g   R V9   d   V P                  \        R4      # \        WR7      pVP                  4       '       dL   \        VP                  4      V P                  V P                  ,
          8  d   V P                  \        R4      # VP                  V 4      # )rk   zAtrailing or leading whitespace and underscores are not permitted.rX   zdiagnostic info too long in NaN)r{   r|   r~   r   r   r    r   r   rD   rR   rf   r   )r1   r  r   r   r,   create_decimalZContext.create_decimal  s     c3SIIK%73#:$$%5&FG G C&88::#aff+		DJJ(>>$$%5%FH Hvvd|r.   c                sN    \         P                  V4      pVP                  V 4      # r)   )r    r   r   )r1   r   r   r   r,   create_decimal_from_floatZ!Context.create_decimal_from_float  s"     q!vvd|r.   c                @    \        VR R7      pVP                  V R7      # rm  )r   r   r1   rO  r   r,   r   ZContext.abs  s!    $ 1d+yyy&&r.   c                |    \        VR R7      pVP                  W R7      pV\        J d   \        RV,          4      hV# Tr   rX   Unable to convert %s to Decimal)r   r   r   r_   r1   rO  r  r   r   r,   addZContext.add   s>     1d+IIaI&=ABBHr.   c                s6    \        VP                  V 4      4      # r)   )r|   r   r  r   r,   _applyZContext._apply5  s    166$<  r.   c                d    \        V\        4      '       g   \        R 4      hVP                  4       # )z,canonical requires a Decimal as an argument.)r{   r    r_   rl  r  r   r,   rl  ZContext.canonical8  s)     !W%%JKK{{}r.   c                @    \        VR R7      pVP                  W R7      # rm  )r   r   r1   rO  r  r   r,   r   ZContext.compareE  s"    B 1d+yyy))r.   c                r  rm  )r   rn  r  r   r,   rn  ZContext.compare_signali  s%    @ 1d+00r.   c                >    \        VR R7      pVP                  V4      # r   )r   ri  r  r   r,   ri  ZContext.compare_total  s    4 1d+q!!r.   c                r  r   )r   rq  r  r   r,   rq  ZContext.compare_total_mag  s!    
 1d+""1%%r.   c                <    \        VR R7      pVP                  4       # r   )r   r   r  r   r,   r   ZContext.copy_abs  s     1d+zz|r.   c                s2    \        VR R7      p\        V4      # r   )r   r    r  r   r,   copy_decimalZContext.copy_decimal  s     1d+qzr.   c                r  r   )r   r   r  r   r,   r   ZContext.copy_negate  s     1d+}}r.   c                r  r   )r   rr  r  r   r,   rr  ZContext.copy_sign  s    * 1d+{{1~r.   c                r  r  )r   r   r   r_   r  r   r,   divideZContext.divide  s>    < 1d+MM!M*=ABBHr.   c                r  r  )r   r  r   r_   r  r   r,   
divide_intZContext.divide_int  s>      1d+NN1N+=ABBHr.   c                r  r  )r   r  r   r_   r  r   r,   r   ZContext.divmod,  s>     1d+LLL)=ABBHr.   c                r  rm  )r   ro   r  r   r,   ro   ZContext.expA  s!    * !T*uuTu""r.   c                sB    \        VR R7      pVP                  W#V R7      # rm  )r   r9  )r1   rO  r  rd  rX  r,   r9  ZContext.fmaY  s#    ( 1d+uuQ4u((r.   c                r  )z/is_canonical requires a Decimal as an argument.)r{   r    r_   ru  r  r   r,   ru  ZContext.is_canonicalp  s*     !W%%MNN~~r.   c                r  r   )r   rv  r  r   r,   rv  ZContext.is_finite}  s    & 1d+{{}r.   c                r  r   )r   r[  r  r   r,   r[  ZContext.is_infinite  s     1d+}}r.   c                r  r   )r   r   r  r   r,   r   ZContext.is_nan  s     1d+xxzr.   c                r  rm  )r   rz  r  r   r,   rz  ZContext.is_normal  s!    ( 1d+{{4{((r.   c                r  r   )r   r   r  r   r,   r   ZContext.is_qnan  s     1d+yy{r.   c                r  r   )r   r{  r  r   r,   r{  ZContext.is_signed  s     1d+{{}r.   c                r  r   )r   r   r  r   r,   r   ZContext.is_snan  s     1d+yy{r.   c                r  rm  )r   r|  r  r   r,   r|  ZContext.is_subnormal  s!    & 1d+~~d~++r.   c                r  r   )r   r}  r  r   r,   r}  ZContext.is_zero  s     1d+yy{r.   c                r  rm  )r   r  r  r   r,   r  Z
Context.ln   s!    & 1d+ttDt!!r.   c                r  rm  )r   r  r  r   r,   r  ZContext.log106  s!    2 1d+wwtw$$r.   c                r  rm  )r   r  r  r   r,   r  ZContext.logbR  s!    . 1d+vvdv##r.   c                r  rm  )r   r  r  r   r,   r  ZContext.logical_andl  !    0 1d+}}Q}--r.   c                r  rm  )r   r  r  r   r,   r  ZContext.logical_invert  s$      1d+--r.   c                r  rm  )r   r  r  r   r,   r  ZContext.logical_or  s!    0 1d+||A|,,r.   c                r  rm  )r   r  r  r   r,   r  ZContext.logical_xor  r  r.   c                r  rm  )r   r   r  r   r,   r   ZContext.max  !    0 1d+uuQu%%r.   c                r  rm  )r   r  r  r   r,   r  ZContext.max_mag  !     1d+yyy))r.   c                r  rm  )r   r   r  r   r,   r   ZContext.min  r  r.   c                r  rm  )r   r  r  r   r,   r  ZContext.min_mag  r   r.   c                r  rm  )r   r   r  r   r,   minusZContext.minus(  !     1d+yyy&&r.   c                r  r  )r   r   r   r_   r  r   r,   multiplyZContext.multiply9  s>    2 1d+IIaI&=ABBHr.   c                r  rm  )r   r  r  r   r,   r  ZContext.next_minusY  s!    " 1d+||D|))r.   c                r  rm  )r   r  r  r   r,   r  ZContext.next_plusm  s!    " 1d+{{4{((r.   c                r  rm  )r   r  r  r   r,   r  ZContext.next_toward  s"    @ 1d+}}Q}--r.   c                r  rm  )r   rZ  r  r   r,   rZ  ZContext.normalize  s!    * 1d+{{4{((r.   c                r  rm  )r   r  r  r   r,   r  ZContext.number_class  s"    ^ 1d+~~d~++r.   c                r  rm  )r   r   r  r   r,   plusZContext.plus  r  r.   c                s~    \        VR R7      pVP                  W#V R7      pV\        J d   \        RV,          4      hV# r  )r   rW  r   r_   )r1   rO  r  r>  r   r8  r,   powerZContext.power  sA    R 1d+IIaI.=ABBHr.   c                r  rm  )r   r2  r  r   r,   r2  ZContext.quantizeO  s"    n 1d+zz!z**r.   c                r  r  r  r   r[   r,   r  ZContext.radix  s     r{r.   c                r  r  )r   r	  r   r_   r  r   r,   r   ZContext.remainder  s>    > 1d+IIaI&=ABBHr.   c                r  rm  )r   r  r  r   r,   r  ZContext.remainder_near  s$    > 1d+00r.   c                r  rm  )r   r  r  r   r,   r  ZContext.rotate  s!    4 1d+xxx((r.   c                r  r   )r   r\  r  r   r,   r\  ZContext.same_quantum  s    * 1d+~~a  r.   c                r  rm  )r   r  r  r   r,   r  ZContext.scaleb  s!      1d+xxx((r.   c                r  rm  )r   r   r  r   r,   r   ZContext.shift!  s!    6 1d+wwqw''r.   c                r  rm  )r   rf  r  r   r,   rf  ZContext.sqrt?  s!    : 1d+vvdv##r.   c                r  r  )r   r   r   r_   r  r   r,   subtractZContext.subtract_  s>      1d+IIaI&=ABBHr.   c                r  rm  )r   r   r  r   r,   r   ZContext.to_eng_stringv  s!    2 1d+t,,r.   c                r  rm  )r   r   r  r   r,   to_sci_stringZContext.to_sci_string  s!    
 1d+yyy&&r.   c                r  rm  )r   r`  r  r   r,   r`  ZContext.to_integral_exact  s$    6 1d+""4"00r.   c                r  rm  )r   r<  r  r   r,   r<  ZContext.to_integral_value  s$    4 1d+""4"00r.   )	rS   re   r  r   rf   rT  rR   rQ   rj   )	NNNNNNNNNr)   r   )Zr6   r7   r8   r9   r  r  r  r  r  r  r   rZ   r  ra  rY   r  r   r  r  r  r   r   r  rb  r  r  r   r  r  rl  r   rn  ri  rq  r   r  r   rr  r  r  r   ro   r9  ru  rv  r[  r   rz  r   r{  r   r|  r}  r  r  r  r  r  r  r  r   r  r   r  r  r  r  r  r  rZ  r  r  r  r2  r  r   r  r  r\  r  r   rf  r  r   r  r`  r<  r  r:   r;   r<   r=   r,   r   r     s    &"H5	1I2<;"!
!
 H!,-- H..&"$'**!"*H!1F":&0#J.*#0). , )." ,,"",%8$4.6.&-6.6&6*"&6*"'"@*()(!.F)00,d'"N`8+t$L 1D):!0)&(<$@.-8'1<1< $Kr.   c                   s4   a  ] tR tRt o RtRR ltR tRtV tR# )r   i  Nc                s8   Vf   R V n         ^ V n        R V n        R # \        V\        4      '       d?   VP
                  V n         \        VP                  4      V n        VP                  V n        R # V^ ,          V n         V^,          V n        V^,          V n        R # r)   )rM   rn   ro   r{   r    rC   rD   r   )r1   rc   r   r,   r  Z_WorkRep.__init__  sq    =DIDHDHw''DI5::DHzzDH aDIQxDHQxDHr.   c                s\    R V P                   : RV P                  : RV P                  : R2# )Z(r  r  rM   rn   ro   r   r[   r,   r   Z_WorkRep.__repr__  s    !%DHHdhh??r.   )ro   rn   rM   r  r)   )	r6   r7   r8   r9   r  r  r   r:   r;   r<   r=   r,   r   r     s     $I
 @ @r.   r   c                 s
   V P                   VP                   8  d   TpT pMT pTp\        \        VP                  4      4      p\        \        VP                  4      4      pVP                   \	        RWR,
          ^,
          4      ,           pWdP                   ,           ^,
          V8  d   ^Vn        Wtn         V;P                  ^
VP                   VP                   ,
          ,          ,          un        VP                   Vn         W3# r&  )ro   r   r|   rn   r   )r   r   rR   Ztmpr   Ztmp_lenZ	other_lenro   r   r,   r   r     s    
 ww #cgg,GC		N#I
''CGNQ./
/C99q 3&		GGrcgg		)**GiiCG8Or.   c                 s    V ^ 8X  d   ^ # V^ 8  d   V ^
V,          ,          # \        \        V 4      4      p\        V4      \        VP                  R4      4      ,
          pW1) 8  d   R# V ^
V) ,          ,          # r  )r|   r   r   rstrip)rA   r   Zstr_nZval_nr  r,   rE  rE    si     	Av	
a2q5y CFE
Sc!233rzt2qBF{2r.   c                 s|    V ^ 8:  g   V^ 8:  d   \        R4      h^ pW8w  d   YV ) V,          ,
          ^,	          rK   V# )r@   z3Both arguments to _sqrt_nearest should be positive.)rd   )rA   rO  r  r   r,   _sqrt_nearestr
  '  s?     	AvaNOOA
&QBE'1*1Hr.   c                 s~    ^V,          W,	          r2V^W^,
          ,          ,          V^,          ,           V8  ,           # rk  r*   )rH  r   r  r   r  r,   _rshift_nearestr  6  s4    
 :qzq1!91%)**r.   c                 s^    \        W4      w  r#V^V,          V^,          ,           V8  ,           # r   )r   )rO  r  r   r   r  r,   _div_nearestr  >  s*    
 !<DA!qsa  r.   c                 sh   W,
          p^ pWB8:  d   \        V4      W$,
          ,          V8  g$   WB8  di   \        V4      WB,
          ,	          V8  dL   \        W,          ^,          V\        W\        W44      ,           ,          V4      ,           4      pV^,          pK  \	        R\        \        V4      4      ,          ^V,          ,          4      ) p\        W44      p\        W4      p\        V^,
          ^ R4       F%  p\        W4      \        Wg,          V4      ,
          pK'  	  \        Ws,          V4      # )r@   r   )r   r  r
  r  rn   r   r|   r=  )	rH  MLrK  RTZyshiftZwr   r   r,   _ilogr  F  s    < 	
A	A6c!fmq(5SVqs]a'!#!]10E.E+FJJL	Q 
SSV_qs#	$$AQ"FQA1Q32fh!::  Qr.   c                 s   V^,          p\        \        V 4      4      pW,           W,           ^8  ,
          pV^ 8  dv   ^
V,          pW,           V,
          pV^ 8  d   V ^
V,          ,          p M\        V ^
V) ,          4      p \        W4      p\	        V4      p\        Wu,          V4      pWE,          p	M^ p\        V^
V) ,          4      p	\        W,           ^d4      # r  )r   r|   r  r  _log10_digits)
rd  r   rG  re  r   r  r   log_dZlog_10Zlog_tenpowerr   r,   r  r  v  s     FA 	CFA	qsaxA1uECE6QJAQQB'Aaq!UWf-s#ArA2v.*C00r.   c                 s   V^,          p\        \        V 4      4      pW,           W,           ^8  ,
          pV^ 8  dP   W,           V,
          pV^ 8  d   V ^
V,          ,          p M\        V ^
V) ,          4      p \        V ^
V,          4      pM^ pV'       d_   \        \        \	        V4      4      4      ^,
          pW',           ^ 8  d+   \        V\        W',           4      ,          ^
V,          4      pM^ pM^ p\        W,           ^d4      # r  )r   r|   r  r  r   r  )	rd  r   rG  re  r   r   r  rV  Z	f_log_tenr   r,   r  r    s     FA
 	CFA	qsaxA 	1uCE6QJAQQB'A aQ  	CAK "9> %Q}QW'=%=r5yIII	 	)3//r.   c                   s,   a  ] tR tRt o R tR tRtV tR# )_Log10Memoizei  c                s    R V n         R# )Z/23025850929940456840179914546843642076011014886Nr   r   r[   r,   r  Z_Log10Memoize.__init__  s	    Gr.   c                s   V^ 8  d   \        R4      hV\        V P                  4      8  dv   ^p ^
W,           ^,           ,          p\        \	        \        ^
V,          V4      ^d4      4      pWB) R RV,          8w  d   MV^,          pKZ  VP                  R4      RR V n        \        V P                  RV^,            4      # )r@   zp should be nonnegativeNrp   r   )rd   r   r   r|   r  r  r	  rn   )r1   rG  rV  r  r   s   &&   r,   	getdigitsZ_Log10Memoize.getdigits  s     q5677DKK   EO\%1a.#>?&'?c%i/
 !--,Sb1DK4;;t!$%%r.   r  N)r6   r7   r8   r9   r  r  r:   r;   r<   r=   r,   r  r    s     H& &r.   r  c                 s   \        W,          V,          4      p\        R\        \        V4      4      ,          ^V,          ,          4      ) p\	        W4      pW,          p\        V^,
          ^ R4       F"  p\	        WV,           ,          Wg,          4      pK$  	  \        V^,
          RR4       F+  pW^,           ,          p\	        WUV,           ,          V4      pK-  	  W,           # )rB  r  r   )rD  rn   r   r|   r  r=  )	rH  r  r  r  r  rK  ZMshiftr@  r   r   r,   _iexpr    s    * 	qyA 
SSV_qs#	$$AQATF1Q32QJ4  1Q3BqSfHv.   3Jr.   c           	      s   V^,          p\        ^ V\        \        V 4      4      ,           ^,
          4      pW#,           pW,           pV^ 8  d   V ^
V,          ,          pMV ^
V) ,          ,          p\        V\	        V4      4      w  rx\        V^
V,          4      p\        \        V^
V,          4      R4      Wr,
          ^,           3# )r   i  )r   r   r|   r   r  r  r  )	rd  r   rG  rV  r   r   ZcshiftZquotrN  r   r,   rs  rs    s     FA 1s3q6{?Q&'E		A CEz2u9BJv}Q/0ID sBI
&C c2q5)40$(Q,>>r.   c                 s0   \        \        \        V4      4      4      V,           p\        WWE,           ^,           4      pW5,
          pV^ 8  d   Wb,          ^
V,          ,          pM\	        Wb,          ^
V) ,          4      pV^ 8X  d_   \        \        V 4      4      V,           ^8  V^ 8  8X  d#   ^
V^,
          ,          ^,           ^V,
          rW3# ^
V,          ^,
          V) r W3# \        W^,           ) V^,           4      w  r\	        V	^
4      p	V
^,          p
W3# rk  )r   r|   r   r  r  rs  )rI  rJ  rL  rM  rG  r  Zlxcr   Zpcr   ro   s   &&&&&      r,   rS  rS  2  s      	CBLBA A
C DEzVBI#&"uf*-	Qw R\B!#a0ac1ac3 : Qq1"3 :	 21vqs+
UB'q:r.   r   Z2Z3Z4Z5Z6Z7Z8rP   c                 s    V ^ 8:  d   \        R4      h\        V 4      p^d\        V4      ,          W^ ,          ,          ,
          # )r@   z0The argument to _log10_lb should be nonnegative.)rd   r|   r   )rd  Z
correctionZstr_cr   r,   rF  rF  \  s:     	AvKLLFEs5z>JQx000r.   c                 s   \        V \        4      '       d   V # \        V \        4      '       d   \        V 4      # V'       d,   \        V \        4      '       d   \        P	                  V 4      # V'       d   \        R V ,          4      h\        # )r  )r{   r    rn   r   r   r_   r   )r   r   Zallow_floatr   r,   r   r   g  sg     %!!%u~z%//!!%((9EABBr.   c                 s   \        V\        4      '       d   W3# \        V\        P                  4      '       dx   V P                  '       gO   \        V P                  \        \        V P                  4      VP                  ,          4      V P                  4      p V \        VP                  4      3# V'       d>   \        V\        P                  4      '       d   VP                  ^ 8X  d   VP                  p\        V\         4      '       dT   \#        4       pV'       d   ^VP$                  \&        &   MVP)                  \&        R4       V \        P+                  V4      3# \,        \,        3# )r@   rt   )r{   r    _numbersZRationalr   rB   rC   r|   rn   rD   Zdenominatorr   Z	numeratorZComplexr  r  r   r   rT  r   r   r   r   )r1   r   r   r2   r   r,   r   r   z  s    %!!{ %**++#DJJ$'DII9J9J(J$K$(II/D WU__---
 z%)9)9::uzzQ

%,,-GMM.)  MOW''...>))r.   i?B )rR   rQ   rj   rT  rS   re   r   rf   )rR   rQ   rj   rT  a          # A numeric string consists of:
#    \s*
    (?P<sign>[-+])?              # an optional sign, followed by either...
    (
        (?=\d|\.\d)              # ...a number (with at least one digit)
        (?P<int>\d*)             # having a (possibly empty) integer part
        (\.(?P<frac>\d*))?       # followed by an optional fractional part
        (E(?P<exp>[-+]?\d+))?    # followed by an optional exponent, or...
    |
        Inf(inity)?              # ...an infinity, or...
    |
        (?P<signal>s)?           # ...an (optionally signaling)
        NaN                      # NaN
        (?P<diag>\d*)            # with (possibly empty) diagnostic info.
    )
#    \s*
    \z
z0*$z50*$a*  \A
(?:
   (?P<fill>.)?
   (?P<align>[<>=^])
)?
(?P<sign>[-+ ])?
(?P<no_neg_0>z)?
(?P<alt>\#)?
(?P<zeropad>0)?
(?P<minimumwidth>\d+)?
(?P<thousands_sep>[,_])?
(?:\.
    (?=[\d,_])  # lookahead for digit or separator
    (?P<precision>\d+)?
    (?P<frac_separators>[,_])?
)?
(?P<type>[eEfFgGn%])?
\z
c                 s   \         P                  V 4      pVf   \        RV ,           4      hVP                  4       pVR,          pVR,          pVR,          R JVR&   VR,          '       d-   Ve   \        RV ,           4      hVe   \        RV ,           4      hT;'       g    RVR&   T;'       g    RVR&   VR	,          f   R
VR	&   \	        VR,          ;'       g    R4      VR&   VR,          e   \	        VR,          4      VR&   VR,          ^ 8X  d   VR,          e   VR,          R9   d   ^VR&   VR,          R8X  da   RVR&   Vf   \
        P                  ! 4       pVR,          e   \        RV ,           4      hVR,          VR&   VR,          VR&   VR,          VR&   MVR,          f   RVR&   ^^ .VR&   RVR&   VR,          f   RVR&   V# )NzInvalid format specifier: fillalignzeropadz7Fill character conflicts with '0' in format specifier: z2Alignment conflicts with '0' in format specifier: Z >rM   rm   minimumwidthrp   r  r  ZgGnrA   r  thousands_sepzJExplicit thousands separator conflicts with 'n' type in format specifier: groupingdecimal_pointrl   r   frac_separators)_parse_format_specifier_regexmatchrd   Z	groupdictrn   _localeZ
localeconv)Zformat_specr  r   Zformat_dictr  r  s   &&    r,   r  r    s$   & 	&++K8Ay5CDD ++-K vD E))4D@K	9 68CD E E 24?@ A A++#K !<<CK 6"!F #&k.&A&H&HS"IK;+#&{;'?#@K  ;1$v&+f*=*F'(K$ 6c!!F!,,.K'3 >@KL M M'2?'CO$"-j"9J'2?'CO$'/+-K(#$a&J'*O$$%-)+%&r.   c                 s   VR ,          pVR,          pWC\        V 4      ,
          \        V4      ,
          ,          pVR,          pVR8X  d   W,           V,           pV# VR8X  d   WP,           V,           pV# VR8X  d   W,           V,           pV# VR8X  d1   \        V4      ^,          pVRV V ,           V,           WXR ,           pV# \        R4      h)	r  r  r  Z<r  Z=Z^NzUnrecognised alignment field)r   rd   )	rM   r  r  r  r  Zpaddingr  r   Zhalfr   r,   r  r  _  s     'L<D3t9,s4y89GME|w& M 
#$& M 
#$& M 
#7|Q$$&-> M 788r.   c                 s    ^ RI HpHp V '       g   . # V R,          ^ 8X  d*   \        V 4      ^8  d   V! V RR V! V R,          4      4      # V R,          \        P
                  8X  d   V RR # \        R4      h)r@   )chainrepeatNz unrecognised format for groupingr   r   )Z	itertoolsr'  r(  r   r&  ZCHAR_MAXrd   )r!  r'  r(  s   &  r,   _group_lengthsr)  z  sl     (		"	s8}1Xcr]F8B<$899	"))	)};<<r.   c                 s<   VR ,          pVR,          p. p\        V4       F  pV^ 8:  d   \        R4      h\        \        \	        V 4      V^4      V4      pVP                  RV\	        V 4      ,
          ,          W) R ,           4       V RV)  p W&,          pV '       g
   V^ 8:  d    M^V\	        V4      ,          pK  	  \        \	        V 4      V^4      pVP                  RV\	        V 4      ,
          ,          W) R ,           4       VP                  \        V4      4      # )r   r!  zgroup length should be positiverp   N)r)  rd   r   r   r   r   r   Zreversed)r   r  	min_widthZsepr!  Zgroupsre  r  r,   _insert_thousands_sepr+    s    " 
CJHFH%6>??CKA.2c1s6{?+fRSk9:!	)q.SX	 & FY*c1s6{?+fRSk9:88HV$%%r.   c                 sH    V '       d   R # VR,          R9   d
   VR,          # R# )rm   rM   z +rl   r*   )is_negativer  r   r,   r  r    s#     	f	F|r.   c           	      sd  a \        W4      pVR ,          pS'       d8   V'       d0   VP                  V3R l\        ^ \        S4      ^4       4       4      oS'       g   VR,          '       d   VR,          S,           oV^ 8w  g   VR,          R9   d1   RRRRRRR	R/VR,          ,          pSR
P	                  Ws4      ,          oVR,          R8X  d
   SR,          oVR,          '       d+   VR,          \        S4      ,
          \        V4      ,
          pM^ p\        WV4      p\        WQS,           V4      # )r#  c              3   s:   <"   T F  pSW^,            x  K  	  R# 5i)i   Nr*   )r  Zposr   r  r,   r  Z!_format_number.<locals>.<genexpr>  s"      !H,FS "*#Ag!6,Fs   Zaltr"  r  r  r   r   r  r  z{0}{1:+}r  r  r  )r  r   r=  r   Zformatr+  r  )	r,  r   r   ro   r  rM   Zfrac_sepZecharr*  s	   &&f&&    r,   r  r    s	   $ *D%&HH== !H,1!S]A,F!H H 4;;(83
ax4<4'c3S#sC8fFJ%%e11F|sCI(3x=83t9D		#G9=Gx/66r.   ZInfz-Infr   l    lNZoi)rR   re   rS   r   rf   rQ   rT  rj   r)   r   r  )rC  )FFirk  r   )}Z__all__r6   Z	__xname__Z__version__Z__libmpdec_version__Zmathr   Znumbersr  ZsysZcollectionsr'   Z_namedtupler   ZImportErrorr   r   r   r   r   r   r   r   r%   r&   Zmaxsizer    r!   r"   r$   r#   ZArithmeticErrorr   r   r   r   ZZeroDivisionErrorr	   r   r   r
   r   r   r   r   r   r_   r   ri   r  r  ZcontextvarsZ
ContextVarrU   Z	frozensetr^   r   r   r   r   ry   r    rB   ZNumberZregisterr\   r   r   r   rn   r   rD  rE  r
  r  r  r  r  r  r  r  r  r  rs  rS  rF  r   r   r   r   r   ZreZcompileZVERBOSEZ
IGNORECASEr%  r}   r!  r(  ZDOTALLr$  Zlocaler&  r  r  r)  r+  r  r  r  r  rF   rp  rQ  ro  rK   Z	hash_infoZmodulusr   r  r   r  Z_PyHASH_NANr   r   r*   r.   r,   <module>r-     sm  $!!!
 ! ! %! '8! ! "! $6! 8H! ! ! &! (2! 4?! !  !!  +!!  -?!!  AT!!& '!& "'!& $5'!& 7F'!( )!( )!(  1)!( 3?)!. /!. /!. !//!. 1>/!4 5!4 5!4 (5!4 *55!4 7N5!: ;!@ A!F 	    
&5~/EiXL
 
##
 ;;'!H!H"HHHH
#	 .
 
' :' %%'8 % 	) 		(*; 	
 
% 
 
	  	#:w #:L) %y   ^Wh'ND ##3$%5#$4 !13 }o}/:G "--.?@ O & +\6]4Kf ]4K~h& 	   !
'f 'O$f O$b6@v @4< 
3*+!. ` 1D*0X!&F !&F ))#J"?H(V 	S#r3CS"Rb#r3+ 1&"*T /x)9: x)97IN * 

** " ZZ"--#!" "'# & ZZ$$
jj && !#

 ,$ ZZ		%! ( 
	Qf6=.#&J(7\ EN	FO u~
qzr{ /0 --''mmmm B!+_=E  &%L&N~  		s$   &O  <O1  
O.-O.1O;:O;