function div(d,c){return(d-(d%c))/c;}BigDecimal.prototype.div=div;function arraycopy(f,e,a,d,c){var b;if(d>e){for(b=c-1;b>=0;--b){a[b+d]=f[b+e];}}else{for(b=0;b<c;++b){a[b+d]=f[b+e];}}}BigDecimal.prototype.arraycopy=arraycopy;function createArrayWithZeros(b){var c=new Array(b);var a;for(a=0;a<b;++a){c[a]=0;}return c;}BigDecimal.prototype.createArrayWithZeros=createArrayWithZeros;BigDecimal.prototype.abs=abs;BigDecimal.prototype.add=add;BigDecimal.prototype.compareTo=compareTo;BigDecimal.prototype.divide=divide;BigDecimal.prototype.divideInteger=divideInteger;BigDecimal.prototype.max=max;BigDecimal.prototype.min=min;BigDecimal.prototype.multiply=multiply;BigDecimal.prototype.negate=negate;BigDecimal.prototype.plus=plus;BigDecimal.prototype.pow=pow;BigDecimal.prototype.remainder=remainder;BigDecimal.prototype.subtract=subtract;BigDecimal.prototype.equals=equals;BigDecimal.prototype.format=format;BigDecimal.prototype.intValueExact=intValueExact;BigDecimal.prototype.movePointLeft=movePointLeft;BigDecimal.prototype.movePointRight=movePointRight;BigDecimal.prototype.scale=scale;BigDecimal.prototype.setScale=setScale;BigDecimal.prototype.signum=signum;BigDecimal.prototype.toString=toString;BigDecimal.prototype.layout=layout;BigDecimal.prototype.intcheck=intcheck;BigDecimal.prototype.dodivide=dodivide;BigDecimal.prototype.bad=bad;BigDecimal.prototype.badarg=badarg;BigDecimal.prototype.extend=extend;BigDecimal.prototype.byteaddsub=byteaddsub;BigDecimal.prototype.diginit=diginit;BigDecimal.prototype.clone=clone;BigDecimal.prototype.checkdigits=checkdigits;BigDecimal.prototype.round=round;BigDecimal.prototype.allzero=allzero;BigDecimal.prototype.finish=finish;BigDecimal.prototype.ROUND_CEILING=MathContext.prototype.ROUND_CEILING;BigDecimal.prototype.ROUND_DOWN=MathContext.prototype.ROUND_DOWN;BigDecimal.prototype.ROUND_FLOOR=MathContext.prototype.ROUND_FLOOR;BigDecimal.prototype.ROUND_HALF_DOWN=MathContext.prototype.ROUND_HALF_DOWN;BigDecimal.prototype.ROUND_HALF_EVEN=MathContext.prototype.ROUND_HALF_EVEN;BigDecimal.prototype.ROUND_HALF_UP=MathContext.prototype.ROUND_HALF_UP;BigDecimal.prototype.ROUND_UNNECESSARY=MathContext.prototype.ROUND_UNNECESSARY;BigDecimal.prototype.ROUND_UP=MathContext.prototype.ROUND_UP;BigDecimal.prototype.ispos=1;BigDecimal.prototype.iszero=0;BigDecimal.prototype.isneg=-1;BigDecimal.prototype.MinExp=-999999999;BigDecimal.prototype.MaxExp=999999999;BigDecimal.prototype.MinArg=-999999999;BigDecimal.prototype.MaxArg=999999999;BigDecimal.prototype.plainMC=new MathContext(0,MathContext.prototype.PLAIN);BigDecimal.prototype.bytecar=new Array((90+99)+1);BigDecimal.prototype.bytedig=diginit();BigDecimal.prototype.ZERO=new BigDecimal("0");BigDecimal.prototype.ONE=new BigDecimal("1");BigDecimal.prototype.TEN=new BigDecimal("10");function BigDecimal(){this.ind=0;this.form=MathContext.prototype.PLAIN;this.mant=null;this.exp=0;if(BigDecimal.arguments.length==0){return;}var t;var m;var h;if(BigDecimal.arguments.length==1){t=BigDecimal.arguments[0];m=0;h=t.length;}else{t=BigDecimal.arguments[0];m=BigDecimal.arguments[1];h=BigDecimal.arguments[2];}if(typeof t=="string"){t=t.split("");}var o;var s;var v;var z;var n;var r=0;var y=0;var a=false;var p=0;var u=0;var q=0;var x=0;var w=0;var c=0;if(h<=0){this.bad("BigDecimal(): ",t);}this.ind=this.ispos;if(t[0]==("-")){h--;if(h==0){this.bad("BigDecimal(): ",t);}this.ind=this.isneg;m++;}else{if(t[0]==("+")){h--;if(h==0){this.bad("BigDecimal(): ",t);}m++;}}o=false;s=false;v=0;z=-1;n=-1;var l=h;r=m;r:for(;l>0;l--,r++){y=t[r];if(y>="0"){if(y<="9"){n=r;v++;continue r;}}if(y=="."){if(z>=0){this.bad("BigDecimal(): ",t);}z=r-m;continue r;}if(y!="e"){if(y!="E"){if(y<"0"||y>"9"){this.bad("BigDecimal(): ",t);}o=true;n=r;v++;continue r;}}if((r-m)>(h-2)){this.bad("BigDecimal(): ",t);}a=false;if((t[r+1])==("-")){a=true;p=r+2;}else{if((t[r+1])==("+")){p=r+2;}else{p=r+1;}}u=h-((p-m));if((u==0)||(u>9)){this.bad("BigDecimal(): ",t);}var g=u;q=p;q:for(;g>0;g--,q++){x=t[q];if(x<"0"){this.bad("BigDecimal(): ",t);}if(x>"9"){this.bad("BigDecimal(): ",t);}else{w=x-"0";}this.exp=(this.exp*10)+w;}if(a){this.exp=-this.exp;}s=true;break r;}if(v==0){this.bad("BigDecimal(): ",t);}if(z>=0){this.exp=(this.exp+z)-v;}var f=n-1;r=m;r:for(;r<=f;r++){y=t[r];if(y=="0"){m++;z--;v--;}else{if(y=="."){m++;z--;}else{if(y<="9"){break r;}else{break r;}}}}this.mant=new Array(v);q=m;if(o){exotica:do{var e=v;r=0;r:for(;e>0;e--,r++){if(r==z){q++;}x=t[q];if(x<="9"){this.mant[r]=x-"0";}else{this.bad("BigDecimal(): ",t);}q++;}}while(false);}else{simple:do{var b=v;r=0;r:for(;b>0;b--,r++){if(r==z){q++;}this.mant[r]=t[q]-"0";q++;}}while(false);}if(this.mant[0]==0){this.ind=this.iszero;if(this.exp>0){this.exp=0;}if(s){this.mant=this.ZERO.mant;this.exp=0;}}else{if(s){this.form=MathContext.prototype.SCIENTIFIC;c=(this.exp+this.mant.length)-1;if((c<this.MinExp)||(c>this.MaxExp)){this.bad("BigDecimal(): ",t);}}}return;}function abs(){var a;if(abs.arguments.length==1){a=abs.arguments[0];}else{if(abs.arguments.length==0){a=this.plainMC;}else{throw"abs(): "+abs.arguments.length+" arguments given; expected 0 or 1";}}if(this.ind==this.isneg){return this.negate(a);}return this.plus(a);}function add(){var j;if(add.arguments.length==2){j=add.arguments[1];}else{if(add.arguments.length==1){j=this.plainMC;}else{throw"add(): "+add.arguments.length+" arguments given; expected 1 or 2";}}var a=add.arguments[0];var p;var b;var r;var d;var q;var s;var n;var h=0;var c=0;var e=0;var i=null;var o=0;var m=0;var g=0;var f=0;var l=0;var k=0;if(j.lostDigits){this.checkdigits(a,j.digits);}p=this;if(p.ind==0){if(j.form!=MathContext.prototype.PLAIN){return a.plus(j);}}if(a.ind==0){if(j.form!=MathContext.prototype.PLAIN){return p.plus(j);}}b=j.digits;if(b>0){if(p.mant.length>b){p=this.clone(p).round(j);}if(a.mant.length>b){a=this.clone(a).round(j);}}r=new BigDecimal();d=p.mant;q=p.mant.length;s=a.mant;n=a.mant.length;padder:do{if(p.exp==a.exp){r.exp=p.exp;}else{if(p.exp>a.exp){h=(q+p.exp)-a.exp;if(h>=((n+b)+1)){if(b>0){r.mant=d;r.exp=p.exp;r.ind=p.ind;if(q<b){r.mant=this.extend(p.mant,b);r.exp=r.exp-((b-q));}return r.finish(j,false);}}r.exp=a.exp;if(h>(b+1)){if(b>0){c=(h-b)-1;n=n-c;r.exp=r.exp+c;h=b+1;}}if(h>q){q=h;}}else{h=(n+a.exp)-p.exp;if(h>=((q+b)+1)){if(b>0){r.mant=s;r.exp=a.exp;r.ind=a.ind;if(n<b){r.mant=this.extend(a.mant,b);r.exp=r.exp-((b-n));}return r.finish(j,false);}}r.exp=p.exp;if(h>(b+1)){if(b>0){c=(h-b)-1;q=q-c;r.exp=r.exp+c;h=b+1;}}if(h>n){n=h;}}}}while(false);if(p.ind==this.iszero){r.ind=this.ispos;}else{r.ind=p.ind;}if(((p.ind==this.isneg)?1:0)==((a.ind==this.isneg)?1:0)){e=1;}else{signdiff:do{e=-1;swaptest:do{if(a.ind==this.iszero){}else{if((q<n)||(p.ind==this.iszero)){i=d;d=s;s=i;c=q;q=n;n=c;r.ind=-r.ind;}else{if(q>n){}else{o=0;m=0;g=d.length-1;f=s.length-1;compare:for(;;){if(o<=g){l=d[o];}else{if(m>f){if(j.form!=MathContext.prototype.PLAIN){return this.ZERO;}break compare;}l=0;}if(m<=f){k=s[m];}else{k=0;}if(l!=k){if(l<k){i=d;d=s;s=i;c=q;q=n;n=c;r.ind=-r.ind;}break compare;}o++;m++;}}}}}while(false);}while(false);}r.mant=this.byteaddsub(d,q,s,n,e,false);return r.finish(j,false);}function compareTo(){var f;if(compareTo.arguments.length==2){f=compareTo.arguments[1];}else{if(compareTo.arguments.length==1){f=this.plainMC;}else{throw"compareTo(): "+compareTo.arguments.length+" arguments given; expected 1 or 2";}}var e=compareTo.arguments[0];var d=0;var a=0;var c;if(f.lostDigits){this.checkdigits(e,f.digits);}if((this.ind==e.ind)&&(this.exp==e.exp)){d=this.mant.length;if(d<e.mant.length){return -this.ind;}if(d>e.mant.length){return this.ind;}if((d<=f.digits)||(f.digits==0)){var b=d;a=0;a:for(;b>0;b--,a++){if(this.mant[a]<e.mant[a]){return -this.ind;}if(this.mant[a]>e.mant[a]){return this.ind;}}return 0;}}else{if(this.ind<e.ind){return -1;}if(this.ind>e.ind){return 1;}}c=this.clone(e);c.ind=-c.ind;return this.add(c,f).ind;}function divide(){var c;var a=-1;if(divide.arguments.length==2){if(typeof divide.arguments[1]=="number"){c=new MathContext(0,MathContext.prototype.PLAIN,false,divide.arguments[1]);}else{c=divide.arguments[1];}}else{if(divide.arguments.length==3){a=divide.arguments[1];if(a<0){throw"divide(): Negative scale: "+a;}c=new MathContext(0,MathContext.prototype.PLAIN,false,divide.arguments[2]);}else{if(divide.arguments.length==1){c=this.plainMC;}else{throw"divide(): "+divide.arguments.length+" arguments given; expected between 1 and 3";}}}var b=divide.arguments[0];return this.dodivide("D",b,c,a);}function divideInteger(){var b;if(divideInteger.arguments.length==2){b=divideInteger.arguments[1];}else{if(divideInteger.arguments.length==1){b=this.plainMC;}else{throw"divideInteger(): "+divideInteger.arguments.length+" arguments given; expected 1 or 2";}}var a=divideInteger.arguments[0];return this.dodivide("I",a,b,0);}function max(){var b;if(max.arguments.length==2){b=max.arguments[1];}else{if(max.arguments.length==1){b=this.plainMC;}else{throw"max(): "+max.arguments.length+" arguments given; expected 1 or 2";}}var a=max.arguments[0];if((this.compareTo(a,b))>=0){return this.plus(b);}else{return a.plus(b);}}function min(){var b;if(min.arguments.length==2){b=min.arguments[1];}else{if(min.arguments.length==1){b=this.plainMC;}else{throw"min(): "+min.arguments.length+" arguments given; expected 1 or 2";}}var a=min.arguments[0];if((this.compareTo(a,b))<=0){return this.plus(b);}else{return a.plus(b);}}function multiply(){var l;if(multiply.arguments.length==2){l=multiply.arguments[1];}else{if(multiply.arguments.length==1){l=this.plainMC;}else{throw"multiply(): "+multiply.arguments.length+" arguments given; expected 1 or 2";}}var h=multiply.arguments[0];var d;var k;var g;var c=null;var m=null;var i;var o=0;var j;var e;var b=0;var f=0;if(l.lostDigits){this.checkdigits(h,l.digits);}d=this;k=0;g=l.digits;if(g>0){if(d.mant.length>g){d=this.clone(d).round(l);}if(h.mant.length>g){h=this.clone(h).round(l);}}else{if(d.exp>0){k=k+d.exp;}if(h.exp>0){k=k+h.exp;}}if(d.mant.length<h.mant.length){c=d.mant;m=h.mant;}else{c=h.mant;m=d.mant;}i=(c.length+m.length)-1;if((c[0]*m[0])>9){o=i+1;}else{o=i;}j=new BigDecimal();e=this.createArrayWithZeros(o);var a=c.length;b=0;b:for(;a>0;a--,b++){f=c[b];if(f!=0){e=this.byteaddsub(e,e.length,m,i,f,true);}i--;}j.ind=d.ind*h.ind;j.exp=(d.exp+h.exp)-k;if(k==0){j.mant=e;}else{j.mant=this.extend(e,e.length+k);}return j.finish(l,false);}function negate(){var b;if(negate.arguments.length==1){b=negate.arguments[0];}else{if(negate.arguments.length==0){b=this.plainMC;}else{throw"negate(): "+negate.arguments.length+" arguments given; expected 0 or 1";}}var a;if(b.lostDigits){this.checkdigits(null,b.digits);}a=this.clone(this);a.ind=-a.ind;return a.finish(b,false);}function plus(){var a;if(plus.arguments.length==1){a=plus.arguments[0];}else{if(plus.arguments.length==0){a=this.plainMC;}else{throw"plus(): "+plus.arguments.length+" arguments given; expected 0 or 1";}}if(a.lostDigits){this.checkdigits(null,a.digits);}if(a.form==MathContext.prototype.PLAIN){if(this.form==MathContext.prototype.PLAIN){if(this.mant.length<=a.digits){return this;}if(a.digits==0){return this;}}}return this.clone(this).finish(a,false);}function pow(){var l;if(pow.arguments.length==2){l=pow.arguments[1];}else{if(pow.arguments.length==1){l=this.plainMC;}else{throw"pow(): "+pow.arguments.length+" arguments given; expected 1 or 2";}}var h=pow.arguments[0];var a;var b;var d;var g=0;var k=0;var f;var j;var e;var c=0;if(l.lostDigits){this.checkdigits(h,l.digits);}a=h.intcheck(this.MinArg,this.MaxArg);b=this;d=l.digits;if(d==0){if(h.ind==this.isneg){throw"pow(): Negative power: "+h.toString();}g=0;}else{if((h.mant.length+h.exp)>d){throw"pow(): Too many digits: "+h.toString();}if(b.mant.length>d){b=this.clone(b).round(l);}k=h.mant.length+h.exp;g=(d+k)+1;}f=new MathContext(g,l.form,false,l.roundingMode);j=this.ONE;if(a==0){return j;}if(a<0){a=-a;}e=false;c=1;c:for(;;c++){a=a+a;if(a<0){e=true;j=j.multiply(b,f);}if(c==31){break c;}if((!e)){continue c;}j=j.multiply(j,f);}if(h.ind<0){j=this.ONE.divide(j,f);}return j.finish(l,true);}function remainder(){var b;if(remainder.arguments.length==2){b=remainder.arguments[1];}else{if(remainder.arguments.length==1){b=this.plainMC;}else{throw"remainder(): "+remainder.arguments.length+" arguments given; expected 1 or 2";}}var a=remainder.arguments[0];return this.dodivide("R",a,b,-1);}function subtract(){var c;if(subtract.arguments.length==2){c=subtract.arguments[1];}else{if(subtract.arguments.length==1){c=this.plainMC;}else{throw"subtract(): "+subtract.arguments.length+" arguments given; expected 1 or 2";}}var b=subtract.arguments[0];var a;if(c.lostDigits){this.checkdigits(b,c.digits);}a=this.clone(b);a.ind=-a.ind;return this.add(a,c);}function equals(e){var g;var c=0;var f=null;var d=null;if(e==null){return false;}if((!(((e instanceof BigDecimal))))){return false;}g=e;if(this.ind!=g.ind){return false;}if(((this.mant.length==g.mant.length)&&(this.exp==g.exp))&&(this.form==g.form)){var b=this.mant.length;c=0;c:for(;b>0;b--,c++){if(this.mant[c]!=g.mant[c]){return false;}}}else{f=this.layout();d=g.layout();if(f.length!=d.length){return false;}var a=f.length;c=0;c:for(;a>0;a--,c++){if(f[c]!=d[c]){return false;}}}return true;}function format(){var y;var g;var d;var e;if(format.arguments.length==6){y=format.arguments[2];g=format.arguments[3];d=format.arguments[4];e=format.arguments[5];}else{if(format.arguments.length==2){y=-1;g=-1;d=MathContext.prototype.SCIENTIFIC;e=this.ROUND_HALF_UP;}else{throw"format(): "+format.arguments.length+" arguments given; expected 2 or 6";}}var s=format.arguments[0];var f=format.arguments[1];var j;var c=0;var h=0;var A=0;var b=null;var w=0;var o=0;var m=0;var B;var v=0;var x=null;var z=0;var r=0;if((s<(-1))||(s==0)){this.badarg("format",1,s);}if(f<(-1)){this.badarg("format",2,f);}if((y<(-1))||(y==0)){this.badarg("format",3,y);}if(g<(-1)){this.badarg("format",4,g);}if(d==MathContext.prototype.SCIENTIFIC){}else{if(d==MathContext.prototype.ENGINEERING){}else{if(d==(-1)){d=MathContext.prototype.SCIENTIFIC;}else{this.badarg("format",5,d);}}}if(e!=this.ROUND_HALF_UP){try{if(e==(-1)){e=this.ROUND_HALF_UP;}else{new MathContext(9,MathContext.prototype.SCIENTIFIC,false,e);}}catch(u){this.badarg("format",6,e);}}j=this.clone(this);setform:do{if(g==(-1)){j.form=MathContext.prototype.PLAIN;}else{if(j.ind==this.iszero){j.form=MathContext.prototype.PLAIN;}else{c=j.exp+j.mant.length;if(c>g){j.form=d;}else{if(c<(-5)){j.form=d;}else{j.form=MathContext.prototype.PLAIN;}}}}}while(false);if(f>=0){setafter:for(;;){if(j.form==MathContext.prototype.PLAIN){h=-j.exp;}else{if(j.form==MathContext.prototype.SCIENTIFIC){h=j.mant.length-1;}else{A=(((j.exp+j.mant.length)-1))%3;if(A<0){A=3+A;}A++;if(A>=j.mant.length){h=0;}else{h=j.mant.length-A;}}}if(h==f){break setafter;}if(h<f){b=this.extend(j.mant,(j.mant.length+f)-h);j.mant=b;j.exp=j.exp-((f-h));if(j.exp<this.MinExp){throw"format(): Exponent Overflow: "+j.exp;}break setafter;}w=h-f;if(w>j.mant.length){j.mant=this.ZERO.mant;j.ind=this.iszero;j.exp=0;continue setafter;}o=j.mant.length-w;m=j.exp;j.round(o,e);if((j.exp-m)==w){break setafter;}}}B=j.layout();if(s>0){var t=B.length;v=0;v:for(;t>0;t--,v++){if(B[v]=="."){break v;}if(B[v]=="E"){break v;}}if(v>s){this.badarg("format",1,s);}if(v<s){x=new Array((B.length+s)-v);var q=s-v;z=0;z:for(;q>0;q--,z++){x[z]=" ";}this.arraycopy(B,0,x,z,B.length);B=x;}}if(y>0){var n=B.length-1;v=B.length-1;v:for(;n>0;n--,v--){if(B[v]=="E"){break v;}}if(v==0){x=new Array((B.length+y)+2);this.arraycopy(B,0,x,0,B.length);var l=y+2;z=B.length;z:for(;l>0;l--,z++){x[z]=" ";}B=x;}else{r=(B.length-v)-2;if(r>y){this.badarg("format",3,y);}if(r<y){x=new Array((B.length+y)-r);this.arraycopy(B,0,x,0,v+2);var k=y-r;z=v+2;z:for(;k>0;k--,z++){x[z]="0";}this.arraycopy(B,v+2,x,z,r);B=x;}}}return B.join("");}function intValueExact(){var e;var c=0;var a;var b=0;var f=0;if(this.ind==this.iszero){return 0;}e=this.mant.length-1;if(this.exp<0){e=e+this.exp;if((!(this.allzero(this.mant,e+1)))){throw"intValueExact(): Decimal part non-zero: "+this.toString();}if(e<0){return 0;}c=0;}else{if((this.exp+e)>9){throw"intValueExact(): Conversion overflow: "+this.toString();}c=this.exp;}a=0;var d=e+c;b=0;b:for(;b<=d;b++){a=a*10;if(b<=e){a=a+this.mant[b];}}if((e+c)==9){f=div(a,1000000000);if(f!=this.mant[0]){if(a==-2147483648){if(this.ind==this.isneg){if(this.mant[0]==2){return a;}}}throw"intValueExact(): Conversion overflow: "+this.toString();}}if(this.ind==this.ispos){return a;}return -a;}function movePointLeft(b){var a;a=this.clone(this);a.exp=a.exp-b;return a.finish(this.plainMC,false);}function movePointRight(b){var a;a=this.clone(this);a.exp=a.exp+b;return a.finish(this.plainMC,false);}function scale(){if(this.exp>=0){return 0;}return -this.exp;}function setScale(){var b;if(setScale.arguments.length==2){b=setScale.arguments[1];}else{if(setScale.arguments.length==1){b=this.ROUND_UNNECESSARY;}else{throw"setScale(): "+setScale.arguments.length+" given; expected 1 or 2";}}var f=setScale.arguments[0];var a;var c;var d=0;var e=0;a=this.scale();if(a==f){if(this.form==MathContext.prototype.PLAIN){return this;}}c=this.clone(this);if(a<=f){if(a==0){d=c.exp+f;}else{d=f-a;}c.mant=this.extend(c.mant,c.mant.length+d);c.exp=-f;}else{if(f<0){throw"setScale(): Negative scale: "+f;}e=c.mant.length-((a-f));c=c.round(e,b);if(c.exp!=(-f)){c.mant=this.extend(c.mant,c.mant.length+1);c.exp=c.exp-1;}}c.form=MathContext.prototype.PLAIN;return c;}function signum(){return this.ind;}function toString(){return this.layout().join("");}function layout(){var n;var f=0;var m=null;var l=0;var o=0;var k=0;var e=null;var j;var g;var h=0;n=new Array(this.mant.length);var d=this.mant.length;f=0;f:for(;d>0;d--,f++){n[f]=this.mant[f]+"";}if(this.form!=MathContext.prototype.PLAIN){m="";if(this.ind==this.isneg){m+="-";}l=(this.exp+n.length)-1;if(this.form==MathContext.prototype.SCIENTIFIC){m+=n[0];if(n.length>1){m+=".";}m+=n.slice(1).join("");}else{engineering:do{o=l%3;if(o<0){o=3+o;}l=l-o;o++;if(o>=n.length){m+=n.join("");var b=o-n.length;for(;b>0;b--){m+="0";}}else{m+=n.slice(0,o).join("");m+=".";m+=n.slice(o).join("");}}while(false);}if(l!=0){if(l<0){k="-";l=-l;}else{k="+";}m+="E";m+=k;m+=l;}return m.split("");}if(this.exp==0){if(this.ind>=0){return n;}e=new Array(n.length+1);e[0]="-";this.arraycopy(n,0,e,1,n.length);return e;}j=((this.ind==this.isneg)?1:0);g=this.exp+n.length;if(g<1){h=(j+2)-this.exp;e=new Array(h);if(j!=0){e[0]="-";}e[j]="0";e[j+1]=".";var c=-g;f=j+2;f:for(;c>0;c--,f++){e[f]="0";}this.arraycopy(n,0,e,(j+2)-g,n.length);return e;}if(g>n.length){h=j+g;e=new Array(h);if(j!=0){e[0]="-";}this.arraycopy(n,0,e,j,n.length);var a=g-n.length;f=j+n.length;f:for(;a>0;a--,f++){e[f]="0";}return e;}h=(j+1)+n.length;e=new Array(h);if(j!=0){e[0]="-";}this.arraycopy(n,0,e,j,g);e[j+g]=".";this.arraycopy(n,g,e,(j+g)+1,n.length-g);return e;}function intcheck(c,a){var b;b=this.intValueExact();if((b<c)||(b>a)){throw"intcheck(): Conversion overflow: "+b;}return b;}function dodivide(c,a,s,C){var v;var b;var A;var D;var q;var E;var h;var B;var o;var j;var k;var u=0;var w=0;var g=0;var p=0;var n=0;var m=0;var t=0;var z=0;var l=null;var r=0;var f=0;var e=null;if(s.lostDigits){this.checkdigits(a,s.digits);}v=this;if(a.ind==0){throw"dodivide(): Divide by 0";}if(v.ind==0){if(s.form!=MathContext.prototype.PLAIN){return this.ZERO;}if(C==(-1)){return v;}return v.setScale(C);}b=s.digits;if(b>0){if(v.mant.length>b){v=this.clone(v).round(s);}if(a.mant.length>b){a=this.clone(a).round(s);}}else{if(C==(-1)){C=v.scale();}b=v.mant.length;if(C!=(-v.exp)){b=(b+C)+v.exp;}b=(b-((a.mant.length-1)))-a.exp;if(b<v.mant.length){b=v.mant.length;}if(b<a.mant.length){b=a.mant.length;}}A=((v.exp-a.exp)+v.mant.length)-a.mant.length;if(A<0){if(c!="D"){if(c=="I"){return this.ZERO;}return this.clone(v).finish(s,false);}}D=new BigDecimal();D.ind=(v.ind*a.ind);D.exp=A;D.mant=this.createArrayWithZeros(b+1);q=(b+b)+1;E=this.extend(v.mant,q);h=q;B=a.mant;o=q;j=(B[0]*10)+1;if(B.length>1){j=j+B[1];}k=0;outer:for(;;){u=0;inner:for(;;){if(h<o){break inner;}if(h==o){compare:do{var y=h;w=0;w:for(;y>0;y--,w++){if(w<B.length){g=B[w];}else{g=0;}if(E[w]<g){break inner;}if(E[w]>g){break compare;}}u++;D.mant[k]=u;k++;E[0]=0;break outer;}while(false);p=E[0];}else{p=E[0]*10;if(h>1){p=p+E[1];}}n=div((p*10),j);if(n==0){n=1;}u=u+n;E=this.byteaddsub(E,h,B,o,-n,true);if(E[0]!=0){continue inner;}var x=h-2;m=0;m:for(;m<=x;m++){if(E[m]!=0){break m;}h--;}if(m==0){continue inner;}this.arraycopy(E,m,E,0,h);}if((k!=0)||(u!=0)){D.mant[k]=u;k++;if(k==(b+1)){break outer;}if(E[0]==0){break outer;}}if(C>=0){if((-D.exp)>C){break outer;}}if(c!="D"){if(D.exp<=0){break outer;}}D.exp=D.exp-1;o--;}if(k==0){k=1;}if((c=="I")||(c=="R")){if((k+D.exp)>b){throw"dodivide(): Integer overflow";}if(c=="R"){remainder:do{if(D.mant[0]==0){return this.clone(v).finish(s,false);}if(E[0]==0){return this.ZERO;}D.ind=v.ind;t=((b+b)+1)-v.mant.length;D.exp=(D.exp-t)+v.exp;z=h;w=z-1;w:for(;w>=1;w--){if(!((D.exp<v.exp)&&(D.exp<a.exp))){break;}if(E[w]!=0){break w;}z--;D.exp=D.exp+1;}if(z<E.length){l=new Array(z);this.arraycopy(E,0,l,0,z);E=l;}D.mant=E;return D.finish(s,false);}while(false);}}else{if(E[0]!=0){r=D.mant[k-1];if(((r%5))==0){D.mant[k-1]=(r+1);}}}if(C>=0){scaled:do{if(k!=D.mant.length){D.exp=D.exp-((D.mant.length-k));}f=D.mant.length-(((-D.exp)-C));D.round(f,s.roundingMode);if(D.exp!=(-C)){D.mant=this.extend(D.mant,D.mant.length+1);D.exp=D.exp-1;}return D.finish(s,true);}while(false);}if(k==D.mant.length){D.round(s);k=b;}else{if(D.mant[0]==0){return this.ZERO;}e=new Array(k);this.arraycopy(D.mant,0,e,0,k);D.mant=e;}return D.finish(s,true);}function bad(b,a){throw b+"Not a number: "+a;}function badarg(a,c,b){throw"Bad argument "+c+" to "+a+": "+b;}function extend(a,c){var b;if(a.length==c){return a;}b=createArrayWithZeros(c);this.arraycopy(a,0,b,0,a.length);return b;}function byteaddsub(u,e,t,r,o,c){var v;var s;var n;var w;var d;var g;var j;var l;var h=0;var f=0;var k;var p=0;v=u.length;s=t.length;n=e-1;w=r-1;d=w;if(d<n){d=n;}g=null;if(c){if((d+1)==v){g=u;}}if(g==null){g=this.createArrayWithZeros(d+1);}j=false;if(o==1){j=true;}else{if(o==(-1)){j=true;}}l=0;h=d;h:for(;h>=0;h--){if(n>=0){if(n<v){l=l+u[n];}n--;}if(w>=0){if(w<s){if(j){if(o>0){l=l+t[w];}else{l=l-t[w];}}else{l=l+(t[w]*o);}}w--;}if(l<10){if(l>=0){quick:do{g[h]=l;l=0;continue h;}while(false);}}f=l+90;g[h]=this.bytedig[f];l=this.bytecar[f];}if(l==0){return g;}k=null;if(c){if((d+2)==u.length){k=u;}}if(k==null){k=new Array(d+2);}k[0]=l;var q=d+1;p=0;p:for(;q>0;q--,p++){k[p+1]=g[p];}return k;}function diginit(){var a;var c=0;var b=0;a=new Array((90+99)+1);c=0;c:for(;c<=(90+99);c++){b=c-90;if(b>=0){a[c]=(b%10);BigDecimal.prototype.bytecar[c]=(div(b,10));continue c;}b=b+100;a[c]=(b%10);BigDecimal.prototype.bytecar[c]=((div(b,10))-10);}return a;}function clone(b){var a;a=new BigDecimal();a.ind=b.ind;a.exp=b.exp;a.form=b.form;a.mant=b.mant;return a;}function checkdigits(b,a){if(a==0){return;}if(this.mant.length>a){if((!(this.allzero(this.mant,a)))){throw"Too many digits: "+this.toString();}}if(b==null){return;}if(b.mant.length>a){if((!(this.allzero(b.mant,a)))){throw"Too many digits: "+b.toString();}}return;}function round(){var f;var d;if(round.arguments.length==2){f=round.arguments[0];d=round.arguments[1];}else{if(round.arguments.length==1){var i=round.arguments[0];f=i.digits;d=i.roundingMode;}else{throw"round(): "+round.arguments.length+" arguments given; expected 1 or 2";}}var j;var b;var a;var g=false;var c=0;var h;var e=null;j=this.mant.length-f;if(j<=0){return this;}this.exp=this.exp+j;b=this.ind;a=this.mant;if(f>0){this.mant=new Array(f);this.arraycopy(a,0,this.mant,0,f);g=true;c=a[f];}else{this.mant=this.ZERO.mant;this.ind=this.iszero;g=false;if(f==0){c=a[0];}else{c=0;}}h=0;modes:do{if(d==this.ROUND_HALF_UP){if(c>=5){h=b;}}else{if(d==this.ROUND_UNNECESSARY){if((!(this.allzero(a,f)))){throw"round(): Rounding necessary";}}else{if(d==this.ROUND_HALF_DOWN){if(c>5){h=b;}else{if(c==5){if((!(this.allzero(a,f+1)))){h=b;}}}}else{if(d==this.ROUND_HALF_EVEN){if(c>5){h=b;}else{if(c==5){if((!(this.allzero(a,f+1)))){h=b;}else{if((((this.mant[this.mant.length-1])%2))==1){h=b;}}}}}else{if(d==this.ROUND_DOWN){}else{if(d==this.ROUND_UP){if((!(this.allzero(a,f)))){h=b;}}else{if(d==this.ROUND_CEILING){if(b>0){if((!(this.allzero(a,f)))){h=b;}}}else{if(d==this.ROUND_FLOOR){if(b<0){if((!(this.allzero(a,f)))){h=b;}}}else{throw"round(): Bad round value: "+d;}}}}}}}}}while(false);if(h!=0){bump:do{if(this.ind==this.iszero){this.mant=this.ONE.mant;this.ind=h;}else{if(this.ind==this.isneg){h=-h;}e=this.byteaddsub(this.mant,this.mant.length,this.ONE.mant,1,h,g);if(e.length>this.mant.length){this.exp++;this.arraycopy(e,0,this.mant,0,this.mant.length);}else{this.mant=e;}}}while(false);}if(this.exp>this.MaxExp){throw"round(): Exponent Overflow: "+this.exp;}return this;}function allzero(d,c){var b=0;if(c<0){c=0;}var a=d.length-1;b=c;b:for(;b<=a;b++){if(d[b]!=0){return false;}}return true;}function finish(j,e){var h=0;var b=0;var c=null;var f=0;var g=0;if(j.digits!=0){if(this.mant.length>j.digits){this.round(j);}}if(e){if(j.form!=MathContext.prototype.PLAIN){h=this.mant.length;b=h-1;b:for(;b>=1;b--){if(this.mant[b]!=0){break b;}h--;this.exp++;}if(h<this.mant.length){c=new Array(h);this.arraycopy(this.mant,0,c,0,h);this.mant=c;}}}this.form=MathContext.prototype.PLAIN;var a=this.mant.length;b=0;b:for(;a>0;a--,b++){if(this.mant[b]!=0){if(b>0){delead:do{c=new Array(this.mant.length-b);this.arraycopy(this.mant,b,c,0,this.mant.length-b);this.mant=c;}while(false);}f=this.exp+this.mant.length;if(f>0){if(f>j.digits){if(j.digits!=0){this.form=j.form;}}if((f-1)<=this.MaxExp){return this;}}else{if(f<(-5)){this.form=j.form;}}f--;if((f<this.MinExp)||(f>this.MaxExp)){overflow:do{if(this.form==MathContext.prototype.ENGINEERING){g=f%3;if(g<0){g=3+g;}f=f-g;if(f>=this.MinExp){if(f<=this.MaxExp){break overflow;}}}throw"finish(): Exponent Overflow: "+f;}while(false);}return this;}}this.ind=this.iszero;if(j.form!=MathContext.prototype.PLAIN){this.exp=0;}else{if(this.exp>0){this.exp=0;}else{if(this.exp<this.MinExp){throw"finish(): Exponent Overflow: "+this.exp;}}}this.mant=this.ZERO.mant;return this;}
