fR  gdZeZdZdZdZddlZddlZddl Z ddl m Z e ddZ n#e$rd Z YnwxYwd Zd Zd Zd ZdZdZdZdZdZdZe jdkrdZdZdZndZdZdZeedz z ZGddeZGddeZ GddeZ!Gdd e!Z"Gd!d"ee#Z$Gd#d$e!Z%Gd%d&e!e#Z&Gd'd(eZ'Gd)d*e!Z(Gd+d,eZ)Gd-d.eZ*Gd/d0e'e)Z+Gd1d2e'e)e*Z,Gd3d4ee-Z.e e$e'e+e)e,e!e*e.g Z/e"e!e%e!e&e!e(e!iZ0eeeeeeeefZ1ddl2Z2e2j3d5Z4e5gd6Z6d7Z7d8Z8[2dtd9Z9Gd:d;e:Z;dud=Ze;Gd>d?e:Z?Gd@dAe:Z@GdBdCe:ZAdvdDZBeCjDZEdEZFdFZGdGZHdHZIdwdJZJdKZKdLZLGdMdNe:ZMeMjNZOdwdOZPdPZQdQZRdRdSdTdUdVdWdXdYdZd[ fd\ZSdxd]ZTdud^ZUe@d_ee$e+e!ggd`daddbZVe@dcee$e+e!e e,ggdZWe@dceggdZXddlYZYeYjZdeeYj[eYj\zj]Z^eYjZdfj]Z_eYjZdgj]Z`eYjZdheYj[eYjazZb[Y ddlcZdn #e$rYnwxYwdtdiZedjZfdkZgdydlZhdmZidnZje;doZke;dpZle;dqZme;dZne;dZoe;drZpekelfZqe jrjsZte jrjuZve jrjwZxeydYetdsz etZz[ dS)z)%DecimalContext DecimalTupleDefaultContext BasicContextExtendedContextDecimalExceptionClampedInvalidOperationDivisionByZeroInexactRounded SubnormalOverflow UnderflowFloatOperationDivisionImpossibleInvalidContextConversionSyntaxDivisionUndefined ROUND_DOWN ROUND_HALF_UPROUND_HALF_EVEN ROUND_CEILING ROUND_FLOORROUND_UPROUND_HALF_DOWN ROUND_05UP setcontext getcontext localcontextMAX_PRECMAX_EMAXMIN_EMIN MIN_ETINY HAVE_THREADSHAVE_CONTEXTVARdecimalz1.70z2.4.2N) namedtuplerzsign digits exponentc|SN)argss 1/opt/alt/python311/lib64/python3.11/_pydecimal.pyr/srrrrrrrrTllNZolNZoi@TiceZdZ dZdS)rcdSr+r,selfcontextr-s r.handlezDecimalException.handles r0N__name__ __module__ __qualname__r7r,r0r.rrs($     r0rceZdZdS)r Nr9r:r;r,r0r.r r   r0r ceZdZ dZdS)r c|r=t|dj|djdd}||StS)Nr(nT)_dec_from_triple_sign_int_fix_nan_NaN)r5r6r-anss r.r7zInvalidOperation.handles@  )"47=$q',TJJC<<(( ( r0Nr8r,r0r.r r s(,r0r ceZdZ dZdS)rctSr+rFr4s r.r7zConversionSyntax.handle r0Nr8r,r0r.rrs( r0rceZdZ dZdS)r ct|Sr+)_SignedInfinityr5r6signr-s r.r7zDivisionByZero.handles t$$r0Nr8r,r0r.r r s( %%%%%r0r ceZdZ dZdS)rctSr+rJr4s r.r7zDivisionImpossible.handle"rKr0Nr8r,r0r.rr(r0rceZdZ dZdS)rctSr+rJr4s r.r7zDivisionUndefined.handle-rKr0Nr8r,r0r.rr%rSr0rceZdZdS)r Nr=r,r0r.r r 0r>r0r ceZdZ dZdS)rctSr+rJr4s r.r7zInvalidContext.handleGrKr0Nr8r,r0r.rr<s(r0rceZdZdS)r Nr=r,r0r.r r Jr>r0r ceZdZdS)rNr=r,r0r.rrVsr0rceZdZ dZdS)rc|jttttfvr t |S|dkrF|jt kr t |St|d|jz|j |jz dzS|dkrF|jtkr t |St|d|jz|j |jz dzSdS)Nr(9r1) roundingrrrrrNrrBprecEmaxrrOs r.r7zOverflow.handlews    / ; ; ;"4( ( 199=00&t,,#D#gl*:#L5a799 9 199;..&t,,#D#gl*:$\',6q8:: : 9r0Nr8r,r0r.rras(* : : : : :r0rceZdZdS)rNr=r,r0r.rr  r0rceZdZdS)rNr=r,r0r.rrrbr0rdecimal_context)r_Eminr`capitalsclampr^flagstrapsc tS#t$r-t}t||cYSwxYwr+)_current_context_varget LookupErrorrsetr6s r.rrs_ #''))) ))  )))s4AAc |tttfvr(|}|t |dSr+)rrrcopy clear_flagsrkrnros r.rrsP/><AAA,,..W%%%%%r0c |t}t|}|D]7\}}|tvrt d|dt |j||8|S)N'z2' is an invalid keyword argument for this function)r_ContextManageritems_context_attributes TypeErrorsetattr new_context)ctxkwargs ctx_managerkeyvalues r.r r s"F {ll!#&&Kllnn55 U ) ) )WWWWXX X 'e4444 r0c eZdZ dZd|dZedZdZdZd}dZ d Z d Z d Z d~d Z d~d Zd~dZd~dZd~dZd~dZdZdZdZdZddZd~dZd~dZd~dZddZd~dZeZd~dZd~dZd~d Z e Z!d~d!Z"d"Z#d~d#Z$d~d$Z%d~d%Z&d~d&Z'd~d'Z(d~d(Z)d~d)Z*d~d*Z+d+Z,d,Z-e-Z.e/d-Z0e/d.Z1d/Z2d0Z3d1Z4d2Z5d3Z6d4Z7d5Z8d6Z9d7Z:d8Z;d9Ze6e7e8e9e:e;eZBd~d?ZCd~d@ZDdAZEd}dBZFd~dCZGd~dDZHd}dEZId~dFZJdGZKdHZLd}dIZMd}dJZNeNZOd~dKZPd~dLZQd~dMZRdNZSdOZTdPZUdQZVd~dRZWd~dSZXd~dTZYdUZZdVZ[d~dWZ\d~dXZ]dYZ^dZZ_d[Z`d\Zad~d]Zbd^Zcd_Zdd`Zed~daZfdbZgdcZhd~ddZideZjd~dfZkd~dgZldhZmdiZnd~djZod~dkZpd~dlZqd~dmZrd~dnZsd~doZtd~dpZud~dqZvd~drZwd~dsZxdtZyd~duZzd~dvZ{d~dwZ|dxZ}dyZ~dzZd}d{ZdS)r)_exprDrC _is_special0Ncz t|}t|trt |dd}|.|t}|td|zS| ddkrd|_ nd|_ | d}|~| d pd}t| d pd }tt||z|_ |t|z |_d |_n| d }|[tt|pd d |_ | drd|_nd|_nd |_ d|_d|_|St|trF|dkrd|_ nd|_ d|_tt%||_ d |_|St|t&r2|j|_|j |_ |j |_ |j|_|St|t(rG|j|_ t|j |_ t|j|_d |_|St|t.t0frt|dkrt3dt|dtr |ddvst3d|d|_ |ddkrd |_ |d|_d|_ng} |dD]S} t| tr.d| cxkrdkr!nn| s| dkr| | Et3d|ddvrBdt9t| |_ |d|_d|_not|dtrEdt9t| pdg|_ |d|_d |_nt3d|St|t:rw|t}|t<dt&|}|j|_|j |_ |j |_ |j|_|StAd|z)N_zInvalid literal for Decimal: %rrP-r1r(intfracexprFdiagsignalNrAFTztInvalid tuple size in creation of Decimal from list or tuple. The list or tuple should have exactly three elements.r(r1z|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.rArzUThe 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 enabledzCannot convert %r to Decimal)!object__new__ isinstancestr_parserstripreplacer _raise_errorrgrouprCrrDlenrrlstripabsr_WorkReprPrlisttuple ValueErrorappendjoinmapfloatr from_floatrx) clsrr6r5mintpartfracpartrrdigitsdigits r.rzDecimal.__new__s  ,~~c"" eS ! !"  --c26677Ay?(llG++,< AE IKKKwwv#%%  ggennG"776??0b!''%../C00GH$4 5 566 #h--/ #(  wwv# #C $4$4 5 5 < ???K eU # # $,,     &&u--EDIDJDI % 1D K6>???r0cv t|tr)|dkrdnd}d}tt|}nt|trt j|st j|r|t|St j d|dkrd}nd}t| \}}| dz }t|d|zz}ntdt||| }|tur|S||S)Nr(r1g?zargument must be int or float.)rrrrr_mathisinfisnanreprcopysignas_integer_ratio bit_lengthrxrBr)rfrPkcoeffrAdresults r.rzDecimal.from_floats, ( a   >Q11ADAAKKEE 5 ! ! >{1~~ $Q $s477||#~c1%%,,q66**,,DAq "A!Q$KKEE<== =!$r22 '>>M3v;; r0cD |jr|j}|dkrdS|dkrdSdS)NrAr1rrr()rr)r5rs r._isnanzDecimal._isnans<   )Cczzqqqr0c4 |jdkr |jrdSdSdS)Nrr1r()rrCr5s r. _isinfinityzDecimal._isinfinitys/ 9  z r1qr0cj |}|d}n|}|s|r|t}|dkr|td|S|dkr|td|S|r||S||SdS)NFrsNaNr()rrrr rE)r5otherr6 self_is_nan other_is_nans r. _check_nanszDecimal._check_nanss kkmm = LL <<>>L  +, +$,,a++,>'** *qr0c |t}|js|jr|r|td|S|r|td|S|r|td|S|r|td|SdS)Nzcomparison involving sNaNzcomparison involving NaNr()rris_snanrr is_qnanr5rr6s r._compare_check_nanszDecimal._compare_check_nanss  ? llG   3u0 3||~~ 3++,<,G,0222 3++,<,G,1333 3++,<,F,0222 3++,<,F,1333qr0c( |jp |jdkSNrrrDrs r.__bool__zDecimal.__bool__4s 349#33r0cV |js|jr:|}|}||krdS||krdSdS|s|sdSd|jz S|s d|jzS|j|jkrdS|j|jkrdS|}|}||krW|jd|j|jz zz}|jd|j|jz zz}||krdS||kr d|jz Sd|jzS||kr d|jzSd|jz S)Nr(rr1r)rrrCadjustedrDr)r5rself_inf other_inf self_adjustedother_adjusted self_padded other_paddeds r._cmpz Decimal._cmp;s D   u0 ''))H))++I9$$qI%%rq , ,qu{*++ $# # ; # #2 : # #1  )) N * *)c49uz+A&BBK :UZ$)-C(DDLl**q|++dj(((TZ'' ^ + +# #4:%& &r0ct||d\}}|tur|S|||rdS||dkS)NT) equality_opFr()_convert_for_comparisonNotImplementedrrrs r.__eq__zDecimal.__eq__{s^-dEtLLL e N " "L   E7 + + 5yy1$$r0ct||\}}|tur|S|||}|rdS||dkSNFr(rrrrr5rr6rGs r.__lt__zDecimal.__lt__^-dE:: e N " "L&&ug66  5yy!##r0ct||\}}|tur|S|||}|rdS||dkSrrrs r.__le__zDecimal.__le__^-dE:: e N " "L&&ug66  5yy1$$r0ct||\}}|tur|S|||}|rdS||dkSrrrs r.__gt__zDecimal.__gt__rr0ct||\}}|tur|S|||}|rdS||dkSrrrs r.__ge__zDecimal.__ge__rr0c t|d}|js |r!|jr|||}|r|St||SNTraiseit)_convert_otherrrrrrs r.comparezDecimal.comparesu ud333    %*; ""5'22C  tyy''(((r0c |jrg|rtd|rt|S|jrt StS|jdkrtd|jt}n!tt|j t}t|j |ztz}|dkr|n| }|dkrdn|S)Nz"Cannot hash a signaling NaN value.r( r)rrrxis_nanr__hash__rC _PyHASH_INFrpow_PyHASH_MODULUS _PyHASH_10INVrrD)r5exp_hashhash_rGs r.rzDecimal.__hash__s'   '||~~ ' DEEE 't,,,:''<'&& 9>>2ty/::HH=49*oFFHDI)O;qyyeeufBYYrrC'r0c  t|jttt|j|jSr+)rrCrrrrDrrs r.as_tuplezDecimal.as_tuples3 DJc#ty.A.A(B(BDINNNr0c |jr2|rtdtd|sdSt |j}|jdkr|d|jzzd}}nu|j }|dkr"|dzdkr|dz}|dz}|dkr |dzdk|j }t|| zdz |}|r ||z}||z}d|z|z}|j r| }||fS)Nz#cannot convert NaN to integer ratioz(cannot convert Infinity to integer ratiorr(rr1r) rrr OverflowErrorrrDrminrrC)r5rArd5d2shift2s r.rzDecimal.as_integer_ratios<    P{{}} P !FGGG#$NOOO 4  NN 9>>r49}$aqAA)Bq&&QUaZZaaq&&QUaZZ )B!qb&,,..2B77F f f 2 A : A!t r0c( dt|zS)Nz Decimal('%s'))rrs r.__repr__zDecimal.__repr__ s>T**r0Fc ddg|j}|jr5|jdkr|dzS|jdkr |dz|jzS|dz|jzS|jt |jz}|jdkr |d kr|}n'|sd }n"|jd kr |d zd zd z }n |d z d zd z}|dkrd }d d | zz|jz}n^|t |jkr%|jd |t |jz zz}d}n!|jd|}d |j|dz}||krd}n(|t }ddg|jd||z zz}||z|z|zS)NrrrInfinityrANaNrr(r1rr.eEz%+d)rCrrrDrrrf) r5engr6rP leftdigitsdotplacerrrs r.__str__zDecimal.__str__s Cy$   1yCj((c!!e|di//f}ty00YTY/ 9>>j2oo!HH 0HH Y#  "Q!+a/HH#Q!+a/H q==GS8)_,ty8HH TY ' 'iXc$)nn%< ==GHHi  *GTYxyy11H  ! !CC$,,*W-.*X:M1NNCg~(3..r0c2 |d|S)NT)rr6)rr5r6s r. to_eng_stringzDecimal.to_eng_stringEs ||g|666r0c |jr||}|r|S|t}|s%|jtkr|}n|}||SNro)rrrr^rcopy_abs copy_negate_fixr5r6rGs r.__neg__zDecimal.__neg__Ns    ""7"33C  ? llG %(K77--//CC""$$Cxx   r0c |jr||}|r|S|t}|s%|jtkr|}nt |}||Sr)rrrr^rrrrrs r.__pos__zDecimal.__pos__ds    ""7"33C  ? llG (K77--//CC$--Cxx   r0Tc |s|S|jr||}|r|S|jr||}n||}|Sr)rrrrCrr)r5roundr6rGs r.__abs__zDecimal.__abs__ys  #==?? "   ""7"33C  : 0,,w,//CC,,w,//C r0c t|}|tur|S|t}|js|jr|||}|r|S|rN|j|jkr/|r|tdSt|S|rt|St|j |j }d}|j tkr|j|jkrd}|sH|sFt|j|j}|rd}t|d|}||}|S|sRt!||j |jz dz }|||j }||}|S|sRt!||j |jz dz }|||j }||}|St'|}t'|}t)|||j\}}t'} |j|jkr|j|jkr(t|d|}||}|S|j|jkr||}}|jdkr!d| _|j|jc|_|_n1d| _n)|jdkrd| _d\|_|_nd| _|jdkr|j|jz| _n|j|jz | _|j| _t| }||}|S)Nz -INF + INFr(r1r)r(r()rrrrrrrCrr rrrr^rrBrmaxr__rescaler _normalizerPrr) r5rr6rGr negativezerorPop1op2rs r.__add__zDecimal.__add__sY u%% N " "L ? llG   &u0 &""5'22C  !! %:,,1B1B1D1D,"//0@,OOOt}}$  "" &u~~%$)UZ((  { * *tzU[/H/HL E tz5;//D "4c22C((7##CJ c5: 4Q677C..g&677C((7##CJ c49w|3A566C--W%566C((7##CJtnnuooc3 55S 8sx  w#'!!&|S#>>hhw'' w  Sx1}} %(Xsx"#(( X]]FK!' CHchhFK 8q==37*FJJ37*FJW foohhw r0c t|}|tur|S|js|jr|||}|r|S|||Sr)rrrrr*rrs r.__sub__zDecimal.__sub__s!u%% N " "L   u0 ""5'"::C  ||E--//|AAAr0cf t|}|tur|S|||Sr)rrr,rs r.__rsub__zDecimal.__rsub__s8!u%% N " "L}}T7}333r0c t|}|tur|S|t}|j|jz }|js|jr|||}|r|S|r*|s|tdSt|S|r*|s|tdSt|S|j |j z}|r|s(t|d|}| |}|S|j dkr-t||j |}| |}|S|j dkr-t||j |}| |}|St|}t|}t|t|j|jz|}| |}|S)Nz (+-)INF * 0z 0 * (+-)INFr1)rrrrCrrrrr rNrrBrrDrrr)r5rr6 resultsignrG resultexpr(r)s r.__mul__zDecimal.__mul__s u%% N " "L ? llGZ%+-   3u0 3""5'22C  !! 3Q"//0@-PPP&z22  "" 3Q"//0@-PPP&z22I *  5 ":sI>>C((7##CJ 9  ":uz9EEC((7##CJ :  ":ty)DDC((7##CJtnnuooz3sw/@+A+A9MMhhw r0c4 t|}|turtS|t}|j|jz }|js|jr|||}|r|S|r/|r|tdS|r t|S|r>|tdt|d| S|s9|s|tdS|td|S|s|j|jz }d}nt!|jt!|jz |jzdz}|j|jz |z }t'|}t'|} |dkr$t)|jd|zz| j\}} n$t)|j| jd| zz\}} | r|d zdkr|dz }n7|j|jz } || kr"|dzdkr|dz}|dz }|| kr |dzdkt|t-||}||S) Nz(+-)INF/(+-)INFzDivision by infinityrz0 / 0zx / 0r(r1rr)rrrrCrrrrr rNr rBEtinyrr rrrDr_rdivmodrrr) r5rr6rPrGrrshiftr(r) remainder ideal_exps r. __truediv__zDecimal.__truediv__6s"u%% N " "! ! ? llGzEK'   Du0 D""5'22C  !! Qe&7&7&9&9 Q++,<>OPPP!! -&t,,  "" D$$W.DEEE'c7==??CCC G H++,=wGGG''FF F )ej(CEE OOc$)nn4w|CaGE)ej(50C4..C5//Czz#)#'BI*=sw#G#G yy#)#'37R%Z3G#H#H y 19>>QJE!I 2 Ioo%"*//bLE1HCIoo%"*//tSZZ55xx   r0cz |j|jz }|r|j}nt|j|j}||z }|r|s|dkr,t |dd|||jfS||jkrt|}t|}|j |j kr!|xj d|j |j z zzc_ n |xj d|j |j z zzc_ t|j |j \}} |d|jzkrAt |t|dt |jt| |fS|td} | | fS)Nrrr(rz%quotient too large in //, % or divmod)rCrrrrrBr%r^r_rrrr6rrr) r5rr6rPr9expdiffr(r)qrrGs r._dividezDecimal._divideqs zEK'      3 IIDIuz22I--//ENN$4$44 @u((** @gmm$T322MM)W-=>>@ @ gl " "4..C5//Cw#'!!2#' 1222#' 122#'37++DAq2w|###(s1vvq99(SVVYGGII""#5#JLLCxr0cf t|}|tur|S|||Sr)rrr:rs r. __rtruediv__zDecimal.__rtruediv__s;7u%% N " "L  w 777r0c t|}|tur|S|t}|||}|r||fS|j|jz }|r[|r|td}||fSt||tdfS|sX|s|td}||fS|td||tdfS| ||\}}| |}||fS)Nzdivmod(INF, INF)INF % xz divmod(0, 0)x // 0x % 0) rrrrrCrrr rNrr r?r)r5rr6rGrPquotientr8s r. __divmod__zDecimal.__divmod__sy u%% N " "L ? llGug..  : zEK'      K  "" K**+;=OPPCx'-,,-=yIIKK I I**+rPs r.remainder_nearzDecimal.remainder_nears  ? llGud333ug..  J      G''(8(EGG G D D++,<,BDDD++,=,BDDD      %$--C88G$$ $TY 33 %"4:sNCCC88G$$ $--//ENN$4$44 glQ& & &''(:;; ; b==--0@AAC88G$$ $tnnuoo 7cg   GGrCGcg-. .GGG GGrCGcg-. .GGcgsw''1 Q3!A#; LA FA GL ''(:;; ;z q55T6DAtSVV^<<xx   r0c t|}|tur|S|t}|||}|r|S|rI|r|t dSt|j|jz S|sF|r)|td|j|jz S|tdS| ||dS)Nz INF // INFrDz0 // 0r() rrrrrrr rNrCr rr?rs r. __floordiv__zDecimal.__floordiv__1su%% N " "L ? llGug..  J      A  "" A++,>S^^#B M1 1S:DI:.5#666 6r0c|Sr+r,rs r.realz Decimal.realms r0c tdSNr(rrs r.imagz Decimal.imagqsqzzr0c|Sr+r,rs r. conjugatezDecimal.conjugateus r0c:tt|Sr+)complexrrs r. __complex__zDecimal.__complex__xsuT{{###r0c |j}|j|jz }t||krI|t||z dd}t |j||jdSt|S)NrT) rDr_rgrrrBrCrr)r5r6payloadmax_payload_lens r.rEzDecimal._fix_nan{sz@)",6 w<>&&xtzJJC   ) ) )   ) ) )J#eO  G 9w  ^^di/'9Fzz' CCC":7;KLO%odF33GIgvg&-#E{{CJJqL))u:: ,,!#2#JEqLG~~**8\4:NN&tz5'BB 0, 0$$Y///  0$$Y/// .$$W---   ) ) ) .$$W---J  ,   + + + =A  $)d"2"2   ) ) ))c49t+;&<???4==O44555r0c |jr2|rtdtdt |dt SNrrr()rrrrrr%rrs r. __floor__zDecimal.__floor__ns`    @{{}} @ !5666#$>???4==K00111r0c |jr2|rtdtdt |dt Sr)rrrrrr%rrs r.__ceil__zDecimal.__ceil__}s`    @{{}} @ !5666#$>???4==M22333r0c P t|d}t|d}|js|jr|t}|jdkr|t d|S|jdkr|t d|S|jdkr|}n|jdkr|}n|jdkr8|s|t dSt |j|jz }n|jdkr7|s|t dSt |j|jz }n_t|j|jz tt|j t|j z|j|jz}| ||S) NTrrrrArzINF * 0 in fmaz0 * INF in fma) rrrrrr rNrCrBrrrDr*)r5rthirdr6products r.fmaz Decimal.fmas ud333ud333   ?u0 ?$,,yC++,>C OO+K'L'L'+y5:'=??Gug...r0c2 t|}|tur|St|}|tur|S|t}|}|}|}|s|s|r|dkr|t d|S|dkr|t d|S|dkr|t d|S|r||S|r||S||S|r(|r|s|t dS|dkr|t dS|s|t dS||j kr|t dS|s|s|t dS| rd}n|j }tt|}t|}t|} |j |zt!d |j|z|z}t%| jD]} t!|d |}t!|| j |}t'|t)|dS) Nrrz@pow() 3rd argument not allowed unless all arguments are integersr(zApow() 2nd argument cannot be negative when 3rd argument specifiedzpow() 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 definedr)rrrrrr rE _isintegerrr__isevenrCrrrto_integral_valuerrrangerBr) r5rmodulor6rr modulo_is_nanrPbaseexponentis r. _power_modulozDecimal._power_modulosa/u%% N " "L'' ^ # #M ? llGkkmm ||~~    ,, ,- ,a++,?? ? ==?? DD:DS[[!!..0011E3355666!CDHf$=$==Gx|$$ ) )AtR((DD4v..c$ii333r0c t|}|j|j}}|dzdkr|dz}|dz }|dzdkt|}|j|j}}|dzdkr|dz}|dz }|dzdk|dkr||z}|dzdkr|dz}|dz }|dzdk|dkrdS|d|zz} |jdkr| } |r9|jdkr.|jt|z} t| | z |dz } nd} tddd| zz| | z S|jdkrq|dz} | dvr|| z|krdSt|dz } |dzdz}|tt|krdSt| |z|} t||z|}| |dS| |krdSd | z}n| d krt|d zdz} td | z|\}}|rdS|d zdkr|d z}| dz} |d zdk|dzd z}|tt|krdSt| |z|} t||z|}| |dS| |krdSd | z}ndS|d|zkrdS| |z }tdt||S|dkr |d|zzd}}n|dkr3ttt||z| krdSt|}ttt||z| krdS|d| z}}|d z|d zcxkrdkr"nn|d z}|d z}|d z|d zcxkrdkn|d z|d zcxkrdkr"nn|d z}|d z}|d z|d zcxkrdkn|dkrz||krdSt||\}}|dkrdSdt| |z z} t|||dz z\}}||krn||dz z|z|z}/||kr|dksdS|}|dkr||dzt|zkrdS||z}||z}|d|zkrdSt|}|rF|jdkr;|jt|z} t|| z |t|z } nd} td|d| zz|| z S)Nrr(r1r0r)r]ArrrTd)rrrrPrrCrrrB_nbitsrr_decimal_lshift_exactr6r _log10_lb)r5rpxxcxeyycyerrPzeros last_digitremaxr8rrAxc_bitsremar=r>str_xcs r. _power_exactzDecimal._power_exact sC Br TNNB2gll 2IB !GB2gll UOOB2gll 2IB !GB2gll 77 "HBr'Q,,r ar'Q,,AvvtBF{Hv{{$9!! ekQ&6&6!%3u::!5H^3QqS99#AsSYGG G 6Q;;bJY&&8r>>42JJqL6tRxSYY''4*!b&"55*27B779 4t884Tq2JJrM2% &q!tR 0 0 I 41fkk1HBFA1fkktQwSYY''4)!b&"55*27B779 4t884TtRU{{tBB#As2ww33 3 77b"f9aqAAQww3s3r"u:://B366tRjjG3s2www''((RC//trRCyqAa%1q5%%%%A%%%%%aaa%1q5%%%%A%%%%a%1q5%%%%A%%%%%aaa%1q5%%%%A%%%% q55!||tRmmGBaxxtr {A~&&A )b!ac(++166AaC1q(A  ) FFqAvvtB 66a!C%2...4 U a A::4 R      %+"2"2!Ys5zz1N>)1S[[=99EEE6#e)#3RX>>>r0c |||||St|}|tur|S|t}|||}|r|S|s$|s|t dStSd}|jdkr\| r| sd}n|r|t dS| }|s)|jdkrt|ddSt|S|r)|jdkr t|St|ddS|tkr| rm|jdkrd}n"||jkr|j}nt!|}|j|z}|d|jz kr$d|jz }|t$n>|t&|t$d|jz }t|dd| zz|S|}|r1|jdk|dkkrt|ddSt|Sd}d} ||z} |dk|jdkkr?| t-t/|jkrt|d|jdz}nI|} | t-t/| krt|d| dz }|C|||jdz}|#|dkrtd|j|j}d} ||j} t9|} | j| j}}t9|}|j|j}}|jdkr| }d } t?||||| |z\}}|d d t-t/|| z dz zzzrn|d z }Kt|t/||}| r| sut-|j|jkrH|jdzt-|jz }t|j|jd|zz|j|z }| }|!tDD] }d|j#|< |$|}|t&|j%tLr|tN|j%tPr!|tPd |jtNtLt&t$tRfD]$}|j%|r||%n|$|}|S) Nz0 ** 0r(r1z+x ** y with x negative and y not an integerrr0FTrrrrl)*rrrrrrr _OnerCrrrrBrNrr_rrr r r_log10_exp_boundrrr`r5rrDrrrP_dpowerrqrr_signalsrirrhrrrr )r5rrr6rG result_sign multiplierrself_adjexactboundr5rrrrrrrextrarr< newcontext exceptions r.__pow__zDecimal.__pow__s2 .  %%eVW== =u%% N " "L ? llGug..  J  ++,3???r0c t|d}|t}||j}|js|jr|||}|r|S|s|rR|r#|rt |S|tdS| |j cxkr |j ksn|tdS|s0t|j d|j }||S|}||j kr|tdS||j z dz|jkr|tdS||j |}||j kr|tdSt%|j|jkr|tdS|r7||jkr|t*|j |j kr:||kr|t,|t.||}|S) NTrzquantize with one INFz)target exponent out of bounds in quantizerz9exponent of quantize result too large for current contextr1z7quantize result has too many digits for current context)rrr^rrrrrr r5rr`rBrCrrr_r%rrDrerr r )r5rr^r6rGrs r.rzDecimal.quantize s S$/// ? llG  'H   As A""300C     AD$4$4$6$6 A??$$))9)9););)"4==(++,<(?AAA 38;;;;w|;;;;''(8>@@ @ %"4:sCH==C88G$$ $  7< ' '''(8(cee e 38 #a '', 6 6''(8(acc cmmCHh// <<>>GL ( (''(8(cee e sx==7< ' '''(8(acc c  ,3<<>>GL00   + + + 8di  d{{$$W---   ) ) )hhw r0c t|d}|js|jrP|r|p'|o|S|j|jkSr)rrr is_infiniterrs r. same_quantumzDecimal.same_quantum/ s ud333   @u0 @KKMM4ellnn?$$&&>5+<+<+>+> @yEJ&&r0c |jrt|S|st|jd|S|j|kr)t|j|jd|j|z zz|St |j|jz|z }|dkrt|jd|dz }d}|j|}|||}|jd|pd}|dkrtt|dz}t|j||S)Nrr(r0r1) rrrBrCrrDrrnrr)r5rr^r this_functionrtrs r.r%zDecimal._rescale> s     !4==  :#DJS99 9 9  #DJ(, CS4I(I3PP P TY$)+c1 A::#DJSU;;DF4X> -f-- '6'")c a<<E 1 %%E E3777r0cn |dkrtd|js|st|S||dz|z |}||kr.||dz|z |}|S)Nr(z'argument should be at least 1 in _roundr1)rrrr%r)r5placesr^rGs r._roundzDecimal._round` s  Q;;FGG G   !4 !4== mmDMMOOA-f4h?? <<>>T]]__ , ,,,s||~~a/6AAC r0c |jr)||}|r|St|S|jdkrt|S|st |jddS|t }||j}|d|}||kr| t| t|S)Nror(r) rrrrrBrCrr^r%rr r r5r^r6rGs r.to_integral_exactzDecimal.to_integral_exactw s    !""7"33C  4== 9>>4==  8#DJQ77 7 ? llG  'HmmAx(( $;;   ) ) )W%%% r0c |t}||j}|jr)||}|r|St |S|jdkrt |S|d|S)Nror()rr^rrrrr%rs r.rzDecimal.to_integral_value sN ? llG  'H   !""7"33C  4== 9>>4== ==H-- -r0cD |t}|jrH||}|r|S|r|jdkrt |S|s3t |jd|jdz}||S|jdkr| tdS|j dz}t|}|j dz }|j dzr%|jdz}t|jdz dz}n!|j}t|jdzdz }||z }|dkr |d|zz}d } nt#|d| z\}} | } ||z}d|z} || z} | | krn | | zdz } | o| | z|k} | r|dkr | d|zz} n | d| zz} ||z }n| d zdkr| dz } t dt%| |}|}|t*} ||}| |_|S) Nror(rrr1zsqrt(-x), x > 0rrTr)rrrrrCrrBrrrr r_rrrrrDr6r _shallow_copy _set_roundingrr^)r5r6rGr_oprclr7rr8rAr=r^s r.sqrtz Decimal.sqrt s- ? llG   %""7"33C  !! %djAoot}}$ %"4:sDINCCC88G$$ $ :??''(8:KLL L,|A~ d^^ FaK 6A: & ATY1$)AAADIq A%AQ A:: eOAEE!!S5&[11LAy!ME U  H 1AAvvEQJ   "!A#(  zzb%iR%Z JAA1uzzQq#a&&!,,''))((99hhw# r0c  t|d}|t}|js|jr|}|}|s|rX|dkr|dkr||S|dkr|dkr||S|||S||}|dkr||}|dkr|}n|}||SNTrr1r(rrrrrrrr compare_totalr5rr6snonrrGs r.r$z Decimal.max s ud333 ? llG   8u0 8BB 8R 877rQww99W---77rQww ::g...''w777 IIe   66""5))A 77CCCxx   r0c  t|d}|t}|js|jr|}|}|s|rX|dkr|dkr||S|dkr|dkr||S|||S||}|dkr||}|dkr|}n|}||Srrrs r.rz Decimal.min4 s ud333 ? llG   8u0 8BB 8R 877rQww99W---77rQww ::g...''w777 IIe   66""5))A 77CCCxx   r0c |jrdS|jdkrdS|j|jd}|dt|zkS)NFr(Tr)rrrDr)r5rests r.rzDecimal._isintegerV sL0   5 9>>4y$s3t99}$$r0cP |r |jdkrdS|jd|jzdvS)Nr(Trr)rrDrs r.rzDecimal._iseven_ s4H ty1}}4yDI&'11r0cf |jt|jzdz S#t$rYdSwxYw)Nr1r()rrrDrxrs r.rzDecimal.adjustede sF2 9s49~~-1 1   11 s " 00c |Sr+r,rs r. canonicalzDecimal.canonicalm s  r0c t|d}|||}|r|S|||SNTrro)rrrrs r.compare_signalzDecimal.compare_signalu sS u555&&ug66  J||E7|333r0cV t|d}|jr|jstS|js|jrtS|j}|}|}|s|r||krit |j|jf}t |j|jf}||kr|rtStS||kr|rtStStS|r5|dkrtS|dkrtS|dkrtS|dkrtSn4|dkrtS|dkrtS|dkrtS|dkrtS||krtS||krtS|j|jkr|rtStS|j|jkr|rtStStS)NTrr1r) rrC _NegativeOnerrrrD_Zeror)r5rr6rPself_nan other_nanself_key other_keys r.rzDecimal.compare_total s ud333 : ek  z ek Kz;;==LLNN " (y" (9$$ty>>494 OOUZ7 i'',# ++i''$++#   (q==''>>Kq==''>>K"q==K>>''q==K>>'' %<<  %<<K 9uz ! ! $ ## 9uz ! ! ##  r0c t|d}|}|}||Sr)rrr)r5rr6rYos r.compare_total_magzDecimal.compare_total_mag sI ud333 MMOO NN  q!!!r0cF td|j|j|jSr`)rBrDrrrs r.rzDecimal.copy_abs s 549di9IJJJr0c |jr!td|j|j|jStd|j|j|jS)Nr(r1)rCrBrDrrrs r.rzDecimal.copy_negate sF4 : O#Aty$)T=MNN N#Aty$)T=MNN Nr0cr t|d}t|j|j|j|jSr)rrBrCrDrrrs r. copy_signzDecimal.copy_sign s;2ud333 TY $ 4+;== =r0c* |t}||}|r|S|dkrtS|stS|dkrt |S|j}|}|jdkrF|tt|j dzdzkrtdd|j dz}nb|jdkr`|tt| dzdzkr'tdd| dz }n|jdkr&|| krtddd|dz zzdz| }n|jdkr&|| dz krtdd|dzz| dz }nt|}|j|j}}|jdkr| }d} t%||||z\} } | d d tt| |z dz zzzrn|dz }Itdt| | }|}|t*} ||}| |_|S) Nrorr1r(rr0rr]Trr)rrrrrrr_rrCrrr`rBr5rrrrP_dexprrrrr^) r5r6rGradjrrrrrrr^s r.rz Decimal.exp s ? llGw//  J      # #L K      " "4== Lmmoo :??sSgl1na-?)@)@%A%AAA"1c7<>::CC Z1__s30@0BA/E+F+F'G'G!G!G"1c7==??1+<==CC Z1__r"1cC1Io&;aR@@CC Z1__r!t"1c1Q3i!A66CC$B626qAw!||B E "1a511 sAb3s5zz??1#4Q#6778    #1c%jj#66C''))((99hhw# r0c dS)NTr,rs r. is_canonicalzDecimal.is_canonical1 s tr0c |j Sr+)rrs r. is_finitezDecimal.is_finite9 s ###r0c |jdkS)Nrrrs r.rzDecimal.is_infiniteA sFyCr0c |jdvS)Nrrrs r.rzDecimal.is_nanE sLyJ&&r0ct |js|sdS|t}|j|kSNF)rrrerrs r. is_normalzDecimal.is_normalI s?M   4 5 ? llG|t}}..r0c |jdkS)NrArrs r.rzDecimal.is_qnanQ sIyCr0c |jdkSNr1)rCrs r. is_signedzDecimal.is_signedU sFzQr0c |jdkS)Nrrrs r.rzDecimal.is_snanY sMyCr0ct |js|sdS|t}||jkSr)rrrrers r. is_subnormalzDecimal.is_subnormal] s?G   4 5 ? llG}}--r0c* |j o |jdkSrrrs r.is_zerozDecimal.is_zeroe sD##8 S(88r0c" |jt|jzdz }|dkr%tt|dzdzdz S|dkr(ttd|z dzdzdz St |}|j|j}}|dkrKt|d| zz }t|}t|t|z ||kz S|ttd| z|z zdz S)Nr1rrrr(rrrDrrrrr5r rrrnumdens r. _ln_exp_boundzDecimal._ln_exp_boundi s i#di..(1, !88s3r62:''!+ + "99sBsFB;?++,,q0 0 d^^vrv1 !88aQBh--Ca&&Cs88c#hh&#)4 43s2r6A:'''!++r0c H |t}||}|r|S|stS|dkrtS|t krt S|jdkr|tdSt|}|j |j }}|j }||z dz} t|||}|ddt!t#t%||z dz zzzrn|dz }Pt't|d kt#t%|| }|}|t,} ||}| |_|S) Nror1zln of a negative valuerTrrrr()rr_NegativeInfinityr _InfinityrrrCrr rrrr_r#_dlogrrrrBrrrrr^ r5r6rGrrrrrrr^s r.lnz Decimal.ln s= ? llGw//  J %$ $      " "  4<<L :??''(8(@BB Bd^^vrv1 LT'')))A- !Q''E"s3s5zz??33A5a7889  aKF   s57||SU__vgFF''))((99hhw# r0c( |jt|jzdz }|dkrtt|dz S|dkr"ttd|z dz St |}|j|j}}|dkrQt|d| zz }td|z}t|t|z ||kz dzStd| z|z }t||z|dkz dz S) Nr1rrr(rr231rr s r.rzDecimal._log10_exp_bound s i#di..(1, !88s3xx==? " "99s2c6{{##A% % d^^vrv1 !88aQBh--Cc!e**Cs88c#hh&#)4q8 8"qb&(mm3xx!|sU{+a//r0c  |t}||}|r|S|stS|dkrtS|jdkr|tdS|jddkrX|jdddt|jdz zkr-t|j t|jzdz }nt|}|j |j}}|j}||z dz} t#|||}|d d tt%t'||z dz zzzrn|d z }Pt)t|dkt%t'|| }|}|t.} ||}| |_|S) Nror1zlog10 of a negative valuer(r0rrTrrr)rrr%rr&rCrr rDrrrrrrr_r_dlog10rrrBrrrrr^r(s r.log10z Decimal.log10 s4 ? llGw//  J %$ $      " "  :??''(8(CEE E 9Q<3  49QRR=CTY!9K4L#L#L$)c$)nn4q899CC$B626qA At,,...q0F 1f--Ab3s3u::#7#7#9!#;<<=!    #3uQw<<SZZ6'JJC''))((99hhw# r0c6 ||}|r|S|t}|rtS|s|t ddSt |}||S)Nrozlogb(0)r1) rrrr&rr rrrrs r.logbz Decimal.logb s w//  J ? llG        F'' 1EE E dmmoo&&xx   r0cZ |jdks |jdkrdS|jD] }|dvrdS dS)Nr(F01T)rCrrD)r5digs r. _islogicalzDecimal._islogical# sN :??di1nn59  C$uutr0c|jt|z }|dkr d|z|z}n|dkr||j d}|jt|z }|dkr d|z|z}n|dkr||j d}||fS)Nr(r)r_r)r5r6opaopbdifs r. _fill_logicalzDecimal._fill_logical1 slSXX% 77c'C-CC 1WWw|mnn%ClSXX% 77c'C-CC 1WWw|mnn%CCxr0c |t}t|d}|r|s|tS|||j|j\}}ddt||D}td| dpddS)NTrrclg|]1\}}tt|t|z2Sr,rr.0rbs r. z'Decimal.logical_and..L 4EEE1#c!ffSVVm,,EEEr0r(r rrr5rr r:rDrziprBrr5rr6r7r8rs r. logical_andzDecimal.logical_and> I ? llGud333   :(8(8(:(: :''(899 9''EJGG cEEC EEEFF6==#5#5#<a@@@r0c~ |t}|tdd|jzd|S)Nr(r0)r logical_xorrBr_rs r.logical_invertzDecimal.logical_invertO sD$ ? llG 03w|3CA F F ')) )r0c |t}t|d}|r|s|tS|||j|j\}}ddt||D}td| dpddS)NTrrclg|]1\}}tt|t|z2Sr,r=r>s r.rAz&Decimal.logical_or..d rBr0r(rrCrEs r. logical_orzDecimal.logical_orV sH ? llGud333   :(8(8(:(: :''(899 9''EJGG cEEC EEEFF6==#5#5#<a@@@r0c |t}t|d}|r|s|tS|||j|j\}}ddt||D}td| dpddS)NTrrclg|]1\}}tt|t|z 2Sr,r=r>s r.rAz'Decimal.logical_xor..u rBr0r(rrCrEs r.rIzDecimal.logical_xorg rGr0cR t|d}|t}|js|jr|}|}|s|rX|dkr|dkr||S|dkr|dkr||S|||S||}|dkr||}|dkr|}n|}||Sr rrrrrrrrrrs r.max_magzDecimal.max_magx s)Fud333 ? llG   8u0 8BB 8R 877rQww99W---77rQww ::g...''w777 MMOO !1!1 2 2 66""5))A 77CCCxx   r0cR t|d}|t}|js|jr|}|}|s|rX|dkr|dkr||S|dkr|dkr||S|||S||}|dkr||}|dkr|}n|}||SrrQrs r.min_magzDecimal.min_mag s)Fud333 ? llG   8u0 8BB 8R 877rQww99W---77rQww ::g...''w777 MMOO !1!1 2 2 66""5))A 77CCCxx   r0cN |t}||}|r|S|dkrtS|dkr+t dd|jz|S|}|t| | |}||kr|S| t dd| dz |S)Nrorr1r(r]r0)rrrr%rBr_rmrqrr_ignore_all_flagsrr,r5r5r6rGnew_selfs r. next_minuszDecimal.next_minus sK ? llGw//  J      # #$ $      " "#As7<'7HH H,,..k***!!###99W%% t  O||,QW]]__Q5FGG#%% %r0cN |t}||}|r|S|dkrtS|dkr+t dd|jz|S|}|t| | |}||kr|S| t dd| dz |S)Nror1rr]r(r0)rrrr&rBr_rmrqrrrVrr*r5rWs r. next_pluszDecimal.next_plus sK ? llGw//  J      " "       # ##As7<'7HH H,,..m,,,!!###99W%% t  O||,QW]]__Q5FGG#%% %r0cV t|d}|t}|||}|r|S||}|dkr||S|dkr||}n||}|rV|td|j |t|tn| |jkr|t|t |t|t|s|t"|S)NTrr(rz Infinite result from next_toward)rrrrrr[rYrrrrCr r rrerrr )r5rr6rG comparisons r. next_towardzDecimal.next_toward s ud333 ? llGug..  JYYu%% ??>>%(( (   ..))CC//'**C ??   .  !C!$ , , ,   ) ) )   ) ) ) ) \\^^gl * *   + + +   + + +   ) ) )   ) ) ) .$$W--- r0cZ |rdS|rdS|}|dkrdS|dkrdS|r |jrdSdS|t }|| r |jrd Sd S|jrd Sd S)Nrr r1z +Infinityrz -Infinityz-Zeroz+Zeroroz -Subnormalz +Subnormalz-Normalz+Normal)rrrrrCrr)r5r6infs r. number_classzDecimal.number_classs  <<>> 6 <<>> 5   !88; "99; <<>> z ww ? llG   W  - - $z $#|#| : 99r0c" tdSNrrars r.radixz Decimal.radix:s5r{{r0c |t}t|d}|||}|r|S|jdkr|t S|j t|cxkr |jksn|t S|rt|St|}|j }|jt|z }|dkr d|z|z}n|dkr || d}||d|d|z}t|j |dpd|jSNTrr(rrrrrrr r_rrrrDrrBrCr)r5rr6rGtorotrotdigtopadrotateds r.rotatezDecimal.rotate>skC ? llGud333ug..  J :??''(899 9 U;;;;w|;;;;''(899 9      !4== E  s6{{* 199Y'FF QYYUFGG_F.6&5&>1 's 3 3 :sDIGG Gr0cL |t}t|d}|||}|r|S|jdkr|t Sd|j|jzz}d|j|jzz}|t|cxkr|ksn|t S| rt|St|j |j |jt|z}||}|S)NTrr(rr)rrrrrr r`r_rrrrBrCrDr)r5rr6rGliminflimsuprs r.scalebzDecimal.scaleb_sL ? llGud333ug..  J :??''(899 9w|gl23w|gl23#e**........''(899 9      !4== TZDIE 4J K K FF7OOr0c |t}t|d}|||}|r|S|jdkr|t S|j t|cxkr |jksn|t S|rt|St|}|j }|jt|z }|dkr d|z|z}n|dkr || d}|dkr |d|}n|d|zz}||j d}t|j |dpd|jSrfrg)r5rr6rGrhrirjshifteds r.r7z Decimal.shiftxsC ? llGud333ug..  J :??''(899 9 U;;;;w|;;;;''(899 9      !4== E  s6{{* 199Y'FF QYYUFGG_F 199VeVnGGs5y(Gw|mnn-G $+NN3$7$7$>3 KK Kr0c0|jt|ffSr+) __class__rrs r. __reduce__zDecimal.__reduce__sT --r0cvt|tur|S|t|Sr+typerrtrrs r.__copy__zDecimal.__copy__0 :: K~~c$ii(((r0cvt|tur|S|t|Sr+rw)r5memos r. __deepcopy__zDecimal.__deepcopy__rzr0c |t}t||}|jrXt|j|}t |}|ddkr|dz }t|||S|dddg|j|d<|ddkr#t|j|j |j dz}|j }|d}|~|ddvr| |d z|}nZ|dd vr|| |}n8|dd vr.t|j |kr| ||}|s+|j d kr |dd vr|d |}|s|d r |jrd } n|j} |j t|j z} |ddvr |s|d |z } n0d } n-|dd vr| } n |dd vr|j d kr | dkr| } nd } | d krd} d| z|j z} n]| t|j kr%|j d| t|j z zz} d} n |j d| pd} |j | d} | | z }t!| | | ||S)N) _localeconvrx%gGr precisioneEr1zfF%gGr(no_neg_0r rr)r_parse_format_specifierr _format_signrCrr _format_alignrfrBrDrr^rr%r_format_number)r5 specifierr6rspecrPbodyr^r adjusted_signrrrrrs r. __format__zDecimal.__format__s  ? llG&ykJJJ   3 D11Dt}}''DF|s""  tT22 2 < :g&67DL <3  #DJ 49Q;GGD#%  F|t##{{9Q;99f&&}}iZ::f%%#di..9*D*D{{9h77 . A $v,%*?*?==H--D 'Z( 'TZ 'MM JMYTY/ <4   I1y= &\U " "!HH &\T ! !yA~~*r//% a<<GXI2HH DI & &i#xDI'>"??GHHi  *1cGy+H!mWhTJJJr0)rN)NNr+)FN)TN)r9r:r; __slots__r classmethodrrrrrrrrrrrrrrrrrrrrrr"r*__radd__r,r.r3__rmul__r:r?rArGrIrKrMrQrSrUrZr\ __trunc__propertyr^rbrdrgrErrxrzr}rrrrrdictrnrrrrrrrrrrrr%rrr to_integralrr$rrrrrrrrrrrrr r rrrrrrrrr#r)rr/r1r5r:rFrJrMrIrRrTrYr[r^rardrlrpr7ruryr}rr,r0r.rr s 66I T@T@T@T@l**[*X      @B444-'-'-'@%%%%$$$$%%%%$$$$%%%%))))$(((4OOO000d+++ 2/2/2/2/h7777!!!!,!!!!*,TTTTlH B B B B44446666nH9!9!9!9!vB8888"#"#"#"#H777764444I!I!I!I!V////89999 7 7 7I XX$$$   ZZZL'''------+++++++++#d &**&"    <6<6<6<6| 2 2 2 4 4 4*/*/*/*/XS4S4S4S4jk?k?k?ZVVVVp4444@@@@2;;;;z ' ' ' ' 8 8 8D.:...."$KaaaaF(!(!(!(!T ! ! ! !D%%%222  4 4 4 4FFFFR " " " "KKKOOO==== IIIIV$$$   '''////      ....999,,,20000d000<1111f!!!!<      AAAA"))))AAAA"AAAA"!!!!<!!!!<%%%%.%%%%.,,,,\((((TGGGGB2$K$K$K$KN...))) )))TKTKTKTKTKTKr0rFc~ tt}||_||_||_||_|Sr+)rrrrCrDrr)rP coefficientrspecialr5s r.rBrBs< >>' " "DDJDIDID Kr0c"eZdZ dZdZdZdS)ruc8||_dSr+)rqrz)r5rzs r.__init__z_ContextManager.__init__"s&++--r0c^t|_t|j|jSr+)r saved_contextrrzrs r. __enter__z_ContextManager.__enter__$s('\\4#$$$r0c.t|jdSr+)rr)r5tvtbs r.__exit__z_ContextManager.__exit__(s4%&&&&&r0N)r9r:r;rrrr,r0r.rurusF ...   '''''r0ruceZdZ dTdZdZdZdZdZdZdZ d Z d Z d Z d Z e ZdUd ZdZdZdZdZdZdZdZdVdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9d8Z:d9Z;d:Zd=Z?d>Z@d?ZAd@ZBdAZCdBZDdCZEdDZFdUdEZGdFZHdGZIdHZJdIZKdJZLdKZMdLZNdMZOdNZPdOZQdPZRdQZSdRZTdSZUeUZVdS)WrNc  t} n#t$rYnwxYw||n| j|_||n| j|_||n| j|_||n| j|_||n| j|_||n| j|_| g|_n| |_| j |_ nEtts)tfdtzD|_ n|_ 'ttd|_dStts*tfdtzD|_dS|_dS)Nc3>K|]}|t|vfVdSr+r)r?rYris r. z#Context.__init__..W2MMqq#a5j//2MMMMMMr0r(c3>K|]}|t|vfVdSr+r)r?rYrhs r.rz#Context.__init__..^rr0)r NameErrorr_r^rer`rfrg_ignored_flagsrirqrrrfromkeysrh) r5r_r^rer`rfrgrhrirdcs `` r.rzContext.__init__>s{  BB    D !,DD"' $,$8bk  ,DD"'  ,DD"' $,$8bk #/UURX  !"$D  "0D  =DJJE4(( MMMMHu>t|| !BdDRVX]E^!^___ U]]t|| !BdDRVX]E^!^___t||ut|| !AT4QUW\D]!]^^^!!$e444r0ct|tstd|z|D]}|tvrt d|ztD]}||vrt d|zt |||S)Nz%s must be a signal dictz%s is not a valid signal dict)rrrxrKeyErrorrr)r5rrr~s r._set_signal_dictzContext._set_signal_dictps!T"" <6:;; ; D DC(??>BCCC# D DC!88>BCCC!!$a000r0cT|dkr|||ddS|dkr|||ddS|dkr|||ddS|dkr|||ddS|d kr|||ddS|d kr7|tvrtd |zt|||S|d ks|d kr|||S|dkrt|||St d|z)Nr_r1r`rerr(r`rfrgr^z%s: invalid rounding moderhrirz.'decimal.Context' object has no attribute '%s')r_rounding_modesrxrrrAttributeError)r5rrs r.rzContext.__setattr__{s_ 6>>**45AA A V^^**4BB B V^^**45AA A Z  **41== = W__**41== = Z  O++ ;e CDDD%%dD%88 8 W__((u55 5 % % %%%dD%88 8 @4GII Ir0c&td|z)Nz%s cannot be deleted)r)r5rs r. __delattr__zContext.__delattr__s3d:;;;r0c d|jD}d|jD}|j|j|j|j|j|j|j ||ffS)Ncg|] \}}|| Sr,r,r?sigrs r.rAz&Context.__reduce__..!;;;a;;;;r0cg|] \}}|| Sr,r,rs r.rAz&Context.__reduce__..rr0) rhrvrirtr_r^rer`rfrg)r5rhris r.ruzContext.__reduce__sv;;4:#3#3#5#5;;;;;4:#3#3#5#5;;;DM49di E5:; ;r0c g}|dt|zd|jD}|dd|zdzd|jD}|dd|zdzd|dzS) NzrContext(prec=%(prec)d, rounding=%(rounding)s, Emin=%(Emin)d, Emax=%(Emax)d, capitals=%(capitals)d, clamp=%(clamp)dc&g|]\}}||jSr,r9)r?rrs r.rAz$Context.__repr__..#@@@1a@@@@r0zflags=[, ]c&g|]\}}||jSr,r)r?rrs r.rAz$Context.__repr__..rr0ztraps=[))rvarsrhrvrri)r5rYnamess r.rzContext.__repr__s'  #::   A@ (8(8(:(:@@@ TYYu---3444@@ (8(8(:(:@@@ TYYu---3444yy||c!!r0c0 |jD] }d|j|< dSr`)rhr5flags r.rrzContext.clear_flags/%J ! !D DJt   ! !r0c0 |jD] }d|j|< dSr`)rirs r. clear_trapszContext.clear_trapsrr0c  t|j|j|j|j|j|j|j|j|j }|Sr+) rr_r^rer`rfrgrhrirr5ncs r.rzContext._shallow_copysB/ TY ty$)]DJ DJ(** r0c  t|j|j|j|j|j|j|j|j |j }|Sr+) rr_r^rer`rfrgrhrqrirrs r.rqz Context.copysW, TY ty$)]DJZ__&& (9(9(** r0c t||}||jvr|j|g|RSd|j|<|j|s|j|g|RS||r)_condition_maprlrr7rhri)r5 condition explanationr-errors r.rzContext._raise_errors ""9i88 D' ' '!5577>$.... . 5z%  3%99;;%d2T222 2eK   r0c" |jtSr+) _ignore_flagsrrs r.rVzContext._ignore_all_flagss2!t!8,,r0cZ |jt|z|_t|Sr+)rr)r5rhs r.rzContext._ignore_flagss)2 $2T%[[@E{{r0c |r*t|dttfr|d}|D]}|j|dSr`)rrrrremove)r5rhrs r. _regard_flagszContext._regard_flagssb9  Za5,77 !HE - -D   & &t , , , , - -r0cB t|j|jz dzSr)rrer_rs r.r5z Context.Etinys!/49ty(1,---r0cB t|j|jz dzSr)rr`r_rs r.rmz Context.Etops!:49ty(1,---r0c$ |j}||_|Sr+)r^)r5rxr^s r.rzContext._set_roundings = r0rc t|tr7||ksd|vr|tdSt ||}|r@t|j|j |j z kr|tdS| |S)NrzAtrailing or leading whitespace and underscores are not permitted.rozdiagnostic info too long in NaN) rrrrrrrrrDr_rgr)r5r!rs r.create_decimalzContext.create_decimal s & c3   GSCIIKK%7%73#::$$%5&FGG G C & & & 88:: H#af++ DJ(>>>$$%5%FHH Hvvd||r0cb t|}||Sr+)rrr)r5rrs r.create_decimal_from_floatz!Context.create_decimal_from_floats,    q ! !vvd||r0cR t|d}||Sr)rr"r5rs r.rz Context.abs/s/ " 1d + + +yyy&&&r0c t|d}|||}|turtd|z|SNTrroUnable to convert %s to Decimal)rr*rrxr5rr@r>s r.addz Context.addDsT  1d + + + IIaI & &   =ABB BHr0cFt||Sr+)rrrs r._applyzContext._applyYs166$<<   r0ct t|tstd|S)Nz,canonical requires a Decimal as an argument.)rrrxrrs r.rzContext.canonical\s9 !W%% LJKK K{{}}r0cT t|d}|||Sr)rrr5rr@s r.rzContext.compareis2 @ 1d + + +yyDy)))r0cT t|d}|||Sr)rrrs r.rzContext.compare_signals4 > 1d + + +4000r0cP t|d}||Sr)rrrs r.rzContext.compare_totals- 2 1d + + +q!!!r0cP t|d}||Sr)rrrs r.rzContext.compare_total_mags/  1d + + +""1%%%r0cN t|d}|Sr)rrrs r.rzContext.copy_abss)  1d + + +zz||r0cD t|d}t|Sr)rrrs r. copy_decimalzContext.copy_decimals'  1d + + +qzzr0cN t|d}|Sr)rrrs r.rzContext.copy_negates)  1d + + +}}r0cP t|d}||Sr)rrrs r.rzContext.copy_signs+ ( 1d + + +{{1~~r0c t|d}|||}|turtd|z|Sr)rr:rrxrs r.dividezContext.dividesT : 1d + + + MM!TM * *   =ABB BHr0c t|d}|||}|turtd|z|Sr)rrSrrxrs r. divide_intzContext.divide_int9sT  1d + + + NN1dN + +   =ABB BHr0c t|d}|||}|turtd|z|Sr)rrGrrxrs r.r6zContext.divmodPsT  1d + + + LLDL ) )   =ABB BHr0cR t|d}||Sr)rrrs r.rz Context.expes/ ( !T * * *uuTu"""r0cV t|d}||||Sr)rr)r5rr@rs r.rz Context.fma}s3 & 1d + + +uuQ4u(((r0ct t|tstd|S)Nz/is_canonical requires a Decimal as an argument.)rrrxr rs r.r zContext.is_canonicals; !W%% OMNN N~~r0cN t|d}|Sr)rr rs r.r zContext.is_finites) $ 1d + + +{{}}r0cN t|d}|Sr)rrrs r.rzContext.is_infinites)  1d + + +}}r0cN t|d}|Sr)rrrs r.rzContext.is_nans)  1d + + +xxzzr0cR t|d}||Sr)rrrs r.rzContext.is_normals/ & 1d + + +{{4{(((r0cN t|d}|Sr)rrrs r.rzContext.is_qnans)  1d + + +yy{{r0cN t|d}|Sr)rrrs r.rzContext.is_signeds)  1d + + +{{}}r0cN t|d}|Sr)rrrs r.rzContext.is_snan s)  1d + + +yy{{r0cR t|d}||Sr)rrrs r.rzContext.is_subnormals/ $ 1d + + +~~d~+++r0cN t|d}|Sr)rrrs r.rzContext.is_zero3s)  1d + + +yy{{r0cR t|d}||Sr)rr)rs r.r)z Context.lnDs/ $ 1d + + +ttDt!!!r0cR t|d}||Sr)rr/rs r.r/z Context.log10Zs/ 0 1d + + +wwtw$$$r0cR t|d}||Sr)rr1rs r.r1z Context.logbvs/ , 1d + + +vvdv###r0cT t|d}|||Sr)rrFrs r.rFzContext.logical_and1 . 1d + + +}}Q}---r0cR t|d}||Sr)rrJrs r.rJzContext.logical_inverts2  1d + + +---r0cT t|d}|||Sr)rrMrs r.rMzContext.logical_ors1 . 1d + + +||At|,,,r0cT t|d}|||Sr)rrIrs r.rIzContext.logical_xorrr0cT t|d}|||Sr)rr$rs r.r$z Context.max1 . 1d + + +uuQu%%%r0cT t|d}|||Sr)rrRrs r.rRzContext.max_mag1  1d + + +yyDy)))r0cT t|d}|||Sr)rrrs r.rz Context.min rr0cT t|d}|||Sr)rrTrs r.rTzContext.min_mag;rr0cR t|d}||Sr)rrrs r.minusz Context.minusL/  1d + + +yyy&&&r0c t|d}|||}|turtd|z|Sr)rr3rrxrs r.multiplyzContext.multiply]sT 0 1d + + + IIaI & &   =ABB BHr0cR t|d}||Sr)rrYrs r.rYzContext.next_minus}s/ 1d + + +||D|)))r0cR t|d}||Sr)rr[rs r.r[zContext.next_pluss/ 1d + + +{{4{(((r0cT t|d}|||Sr)rr^rs r.r^zContext.next_towards1 > 1d + + +}}Q}---r0cR t|d}||Sr)rrrs r.rzContext.normalizes/ ( 1d + + +{{4{(((r0cR t|d}||Sr)rrars r.razContext.number_classs0- \ 1d + + +~~d~+++r0cR t|d}||Sr)rrrs r.plusz Context.plusr!r0c t|d}||||}|turtd|z|Sr)rrrrx)r5rr@rr>s r.powerz Context.power#sXG P 1d + + + IIaI . .   =ABB BHr0cT t|d}|||Sr)rrrs r.rzContext.quantizess25 l 1d + + +zz!Tz***r0c" tdSrcrars r.rdz Context.radixs r{{r0c t|d}|||}|turtd|z|Sr)rrKrrxrs r.r8zContext.remaindersT < 1d + + + IIaI & &   =ABB BHr0cT t|d}|||Sr)rrQrs r.rQzContext.remainder_nears4 < 1d + + +4000r0cT t|d}|||Sr)rrlrs r.rlzContext.rotates1 2 1d + + +xx4x(((r0cP t|d}||Sr)rrrs r.rzContext.same_quantums- ( 1d + + +~~a   r0cT t|d}|||Sr)rrprs r.rpzContext.scaleb2s1  1d + + +xx4x(((r0cT t|d}|||Sr)rr7rs r.r7z Context.shiftEs1 4 1d + + +wwq$w'''r0cR t|d}||Sr)rrrs r.rz Context.sqrtcs/ 8 1d + + +vvdv###r0c t|d}|||}|turtd|z|Sr)rr,rrxrs r.subtractzContext.subtractsT  1d + + + IIaI & &   =ABB BHr0cR t|d}||Sr)rrrs r.rzContext.to_eng_strings/ 0 1d + + +t,,,r0cR t|d}||Sr)rrrs r. to_sci_stringzContext.to_sci_strings/  1d + + +yyy&&&r0cR t|d}||Sr)rrrs r.rzContext.to_integral_exacts2 4 1d + + +""4"000r0cR t|d}||Sr)rrrs r.rzContext.to_integral_values2 2 1d + + +""4"000r0) NNNNNNNNNr+)r)Wr9r:r;rrrrrrurrrrrrqryrrVrrrr5rmrrrrrrrrrrrrrrrrrr6rrr r rrrrrrrrr)r/r1rFrJrMrIr$rRrrTr r#rYr[r^rrar*r,rrdr8rQrlrrpr7rr7rr:rrrr,r0r.rr+s$BFDH&*""""H 5 5 5 1 1 1III2<<<;;; " " "!!! !!! H!!!!,------H......&"$'''**!!!   "*"*"*H!1!1!1F""":&&&         0###J.*###0))).    ,    ))).   " ,,,,"""",%%%8$$$4...6...&---6...6&&&6***"&&&6***"'''"@***()))(!.!.!.F)))00,0,0,d'''"NNNN`8+8+8+t$$$L 1 1 1D))):!!!0)))&(((<$$$@.---8'''111<111<$KKKr0rc eZdZdZddZdZdS)rrPrrNc|d|_d|_d|_dSt|tr3|j|_t|j|_|j|_dS|d|_|d|_|d|_dS)Nr(r1r)rPrrrrrCrDr)r5rs r.rz_WorkRep.__init__s~ =DIDHDHHH w ' '  DI5:DHzDHHHaDIQxDHQxDHHHr0c8d|jd|jd|jdS)N(rrr>rs r.rz_WorkRep.__repr__s#!%DHHHdhhh??r0r+)r9r:r;rrrr,r0r.rrsA$I     @@@@@r0rc |j|jkr|}|}n|}|}tt|j}tt|j}|jt d||z dz z}||jzdz |krd|_||_|xjd|j|jz zzc_|j|_||fS)Nrrr1r)rrrrr)r(r)r_tmprtmp_len other_lenrs r.r&r&s w#cg,,GC NN##I 'CGdNQ.// /C59q 3&&  GGrcg )**GGiCG 8Or0c |dkrdS|dkr|d|zzStt|}t|t|dz }|| krdn|d| zzS)Nr(rr)rrrrstrip)rArstr_nval_ns r.rr6s  Avvq a2q5yCFF E Sc!2!2333rzzttqBF{2r0cv |dks|dkrtdd}||kr||| |zz dz }}||k|S)Nr(z3Both arguments to _sqrt_nearest should be positive.r1)r)rArr@s r. _sqrt_nearestrKKs^  AvvaNOOOA q&&!QBE'1*1 q&& Hr0cH d|z||z }}|d||dz zz|dzz|kzS)Nr1rr,)rr7r@r=s r._rshift_nearestrMZs? :qEzqA 1!9 1%) **r0cN t||\}}|d|z|dzz|kzS)Nrr1)r6)rr@r=r>s r. _div_nearestrObs5 !Q<>%Q}QuW'='=%=r5yIIIIII   E)3 / //r0ceZdZ dZdZdS) _Log10Memoizecd|_dS)N/23025850929940456840179914546843642076011014886)rrs r.rz_Log10Memoize.__init__s G r0c |dkrtd|t|jkrwd} d||zdzz}tt t d|z|d}|| dd|zkrn|dz }R|ddd |_t|jd|d zS) Nr(zp should be nonnegativerTrrrrrr1)rrrrrOrXrGr)r5rrrRrs r. getdigitsz_Log10Memoize.getdigitss  q55677 7 DK  E 5O\%1a..#>>??5&''?c%i//   !--,,SbS1DK4;t!t$%%%r0N)r9r:r;rrfr,r0r.rbrbs;CHHH&&&&&r0rbc t||z|z}tdtt|zd|zz }t ||}||z}t |dz ddD]}t |||zz||z}t |dz ddD] }||dzz}t |||zz|}!||zS)NrQrr1r(rr)rrrrrOr) rrRrSrTrUrMshiftrrs r._iexpri s!( 1qyA SSVV_qs # $ $$AQA TF 1Q32  55 FQJ! 4 41Q3B  //QqS AfHv . . Q3Jr0c j |dz }td|tt|zdz }||z}||z}|dkr |d|zz}n |d| zz}t|t |\}}t |d|z}t t |d|zd||z dzfS)Nrr(r1rir)r$rrr6r[rOri) rrrrr=r7cshiftquotrs r.rr2s 4FA 1s3q66{{?Q& ' 'E E A aCE zz2u9BJv}Q//00ID# sBI & &C c2q5))4 0 0$(Q, >>r0c ttt||z}t||||zdz}||z }|dkr ||zd|zz}nt ||zd| z}|dkrHtt||zdk|dkkrd|dz zdzd|z } } nJuQx0 00r0c t|tr|St|trt|S|r/t|trt|S|rt d|zt S)Nr)rrrrrrxr)rr allow_floats r.rrs%!! %u~~)z%//)!!%(((C9EABBB r0cx t|tr||fSt|tjr_|jsBt |jtt|j |j z|j }|t|j fS|r,t|tj r|jdkr|j}t|t rWt#}|rd|jt&<n|t&d|t|fSt,t,fS)Nr(r1r)rr_numbersRationalrrBrCrrrD denominatorr numeratorComplexrbr^rrrhrrrr)r5rrr6s r.rrs7 %!!U{ %*++. /#DJ$'DI9J(J$K$K$(I//DWU_---- z%)9::uzQ %/,,  O,-GM. ) )  M O O OW''.... > ))r0ri?Bi)r_r^rirhr`rerfrgr)r_r^rirha # A numeric string consists of: # \s* (?P[-+])? # an optional sign, followed by either... ( (?=\d|\.\d) # ...a number (with at least one digit) (?P\d*) # having a (possibly empty) integer part (\.(?P\d*))? # followed by an optional fractional part (E(?P[-+]?\d+))? # followed by an optional exponent, or... | Inf(inity)? # ...an infinity, or... | (?Ps)? # ...an (optionally signaling) NaN # NaN (?P\d*) # with (possibly empty) diagnostic info. ) # \s* \Z z0*$z50*$z\A (?: (?P.)? (?P[<>=^]) )? (?P[-+ ])? (?Pz)? (?P\#)? (?P0)? (?P(?!0)\d+)? (?P,)? (?:\.(?P0|(?!0)\d+))? (?P[eEfFgGn%])? \Z c  t|}|td|z|}|d}|d}|ddu|d<|dr(|td|z|td|z|pd|d<|pd|d<|d d |d <t |d pd |d <|d t |d |d <|d dkr|d |ddvrd|d <|ddkrVd|d<|t j}|dtd|z|d|d<|d|d<|d|d<n|dd|d<ddg|d<d|d<|S)NzInvalid format specifier: fillalignzeropadz7Fill character conflicts with '0' in format specifier: z2Alignment conflicts with '0' in format specifier:  >rPr minimumwidthrrr(rxgGnr1rAr thousands_sepzJExplicit thousands separator conflicts with 'n' type in format specifier: grouping decimal_pointrrr )_parse_format_specifier_regexmatchr groupdictr_locale localeconv) format_specrr format_dictrrs r.rr,s:$ &++K88Ay5 CDDD++--K v D  E))4D@K 9A  68CDEE E  24?@AA A+#K!@KLMM M'2?'C O$"-j"9 J'2?'C O$$  ' /+-K (#$a& J'* O$ r0cb |d}|d}||t|z t|z z}|d}|dkr ||z|z}na|dkr ||z|z}nR|dkr ||z|z}nC|dkr.t|dz}|d||z|z||dz}ntd |S) Nrrr7888 Mr0c ddlm}m}|sgS|ddkr6t|dkr#||dd||dS|dtjkr |ddSt d)Nr()chainrepeatrrrz unrecognised format for grouping) itertoolsrrrrCHAR_MAXr)rrrs r._group_lengthsrs(''''''' = "  s8}}11uXcrc]FF8B<$8$8999 ") ) )};<<?? ? CKKA.. 2 2 c1s6{{?+faRSSk9:::!Q  )q.. ESXX F Y * * c1s6{{?+faRSSk9::: 88HV$$ % %%r0c4 |rdS|ddvr|dSdS)NrrPz +rr,) is_negativers r.rrs0#s f  F|rr0c t||}|s|dr |d|z}|dks |ddvr,ddddd|d}|d ||z }|dd kr|d z }|d r)|d t|z t|z }nd}t|||}t |||z|S) Naltrr(rxrrr)rrrrz{0}{1:+}rrr)rformatrrr)rrrrrrPecharrs r.rrs"  T * *D44;4(83 axx4<4''#C88fFJ%%eS111 F|sC I(3x==83t99D  #GT9==G wx/ 6 66r0Infz-Infr rrr+)F)r()r)FF)r1){__all__r9 __xname__ __version____libmpdec_version__mathrnumbersrsys collectionsr) _namedtupler ImportErrorrrrrrrrrr%r&maxsizer!r"r#r$ArithmeticErrorrr r rZeroDivisionErrorr rrr rr rrrrxrrrr contextvars ContextVarrk frozensetrwrrr rrrBNumberregisterrurrr&rrrrrKrMrOrXr.r'rbrfr[rirrrrrrrrrecompileVERBOSE IGNORECASErrrvrDOTALLrlocalerrrrrrrr&r%rFrrrrN hash_infomodulusrr`rrW _PyHASH_NANrrr,r0r.rs aF! ! ! F    &555555;~/EFFLL&&&%%LLL&  #  #   ;'!H!H"HHHHH  #         .        ':'%%%%%%'8%%%     )        (*;                %                   #:#:#:#:#:w#:#:#:L     )        %y    ^Wh 'N D##3$%5#$4 !13 }o}/:G-{-.?@@iOOO   &&&++++hw3Kw3Kw3Kw3Kw3Kfw3Kw3Kw3Krg& !!! ' ' ' ' 'f ' ' 'O$O$O$O$O$fO$O$O$b6@@@@@v@@@4< 333*    +++!!!. . . . ` 1 1 1D*0*0*0X!&!&!&!&!&F!&!&!&F ) ####J"?"?"?H(((Vr" br++1111&"*"*"*"*T /x)9:  w x)97IN ' * "*"Z"-# ! !""'#&RZ   $ bj  & !+ ,Z !!      D NNNN`6===.#&#&#&#&J#7#7#7R GENN GFOOwu~~ wqzzwr{{ /0-'m m B!+_== CCs.99$K))K10K1