//>>built define(["dojo","dojox","dojox/math/BigInteger"],function(v,w){function A(a,b){return a&b}function u(a,b){return a|b}function x(a,b){return a^b}function y(a,b){return a&~b}function p(){}function z(a){return a}function r(a){this.r2=k();this.q3=k();m.ONE._dlShiftTo(2*a.t,this.r2);this.mu=this.r2.divide(a);this.m=a}v.experimental("dojox.math.BigInteger-ext");var m=w.math.BigInteger,k=m._nbi,t=m._nbv,B=m._nbits,C=m._Montgomery;p.prototype.convert=z;p.prototype.revert=z;p.prototype.mulTo=function(a,b,c){a._multiplyTo(b, c)};p.prototype.sqrTo=function(a,b){a._squareTo(b)};r.prototype.convert=function(a){if(0>a.s||a.t>2*this.m.t)return a.mod(this.m);if(0>a.compareTo(this.m))return a;var b=k();a._copyTo(b);this.reduce(b);return b};r.prototype.revert=function(a){return a};r.prototype.reduce=function(a){a._drShiftTo(this.m.t-1,this.r2);a.t>this.m.t+1&&(a.t=this.m.t+1,a._clamp());this.mu._multiplyUpperTo(this.r2,this.m.t+1,this.q3);for(this.m._multiplyLowerTo(this.q3,this.m.t+1,this.r2);0>a.compareTo(this.r2);)a._dAddOffset(1, this.m.t+1);for(a._subTo(this.r2,a);0<=a.compareTo(this.m);)a._subTo(this.m,a)};r.prototype.mulTo=function(a,b,c){a._multiplyTo(b,c);this.reduce(c)};r.prototype.sqrTo=function(a,b){a._squareTo(b);this.reduce(b)};var l=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397, 401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509],D=67108864/l[l.length-1];v.extend(m,{_chunkSize:function(a){return Math.floor(Math.LN2*this._DB/Math.log(a))},_toRadix:function(a){null==a&&(a=10);if(0==this.signum()||2>a||36k?"-"==a.charAt(h)&&0==this.signum()&&(e=!0):(f=b*f+k,++g>=c&&(this._dMultiply(d),this._dAddOffset(f,0),f=g=0))}0a)this._fromInt(1);else for(this._fromNumber(a,c),this.testBit(a-1)||this._bitwiseTo(m.ONE.shiftLeft(a-1),u,this),this._isEven()&&this._dAddOffset(1, 0);!this.isProbablePrime(b);)this._dAddOffset(2,0),this.bitLength()>a&&this._subTo(m.ONE.shiftLeft(a-1),this);else{c=[];var d=a&7;c.length=(a>>3)+1;b.nextBytes(c);c[0]=0>=this._DB;if(a.t>=this._DB;d+=this.s}else{for(d+=this.s;c>=this._DB;d+=a.s}b.s=0>d?-1:0;0d&&(b[c++]=this._DV+d);b.t=c;b._clamp()},_dMultiply:function(a){this[this.t]=this.am(0,a-1,this,0,0,this.t);++this.t;this._clamp()},_dAddOffset:function(a, b){for(;this.t<=b;)this[this.t++]=0;for(this[b]+=a;this[b]>=this._DV;)this[b]-=this._DV,++b>=this.t&&(this[this.t++]=0),++this[b]},_multiplyLowerTo:function(a,b,c){var d=Math.min(this.t+a.t,b);c.s=0;for(c.t=d;0=a)return 0;var b=this._DV%a,c=0>this.s?a-1:0;if(0=c)return!1;var d=b.shiftRight(c);a=a+1>>1;a>l.length&&(a=l.length);for(var e=k(),g=0;gthis.s){if(1==this.t)return this[0]-this._DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this._DB)-1)<>24},shortValue:function(){return 0==this.t?this.s:this[0]<<16>>16},signum:function(){return 0>this.s? -1:0>=this.t||1==this.t&&0>=this[0]?0:1},toByteArray:function(){var a=this.t,b=[];b[0]=this.s;var c=this._DB-a*this._DB%8,d,e=0;if(0>c)!=(this.s&this._DM)>>c&&(b[e++]=d|this.s<c?(d=(this[a]&(1<>(c+=this._DB-8)):(d=this[a]>>(c-=8)&255,0>=c&&(c+=this._DB,--a)),0!=(d&128)&&(d|=-256),0==e&&(this.s&128)!=(d&128)&&++e,0 this.compareTo(a)?this:a},max:function(a){return 0a?this._rShiftTo(-a,b):this._lShiftTo(a,b);return b}, shiftRight:function(a){var b=k();0>a?this._lShiftTo(-a,b):this._rShiftTo(a,b);return b},getLowestSetBit:function(){for(var a=0;a>=16,c+=16);0==(a&255)&&(a>>=8,c+=8);0==(a&15)&&(a>>=4,c+=4);0==(a&3)&&(a>>=2,c+=2);0==(a&1)&&++c;a=c}return b+a}return 0>this.s?this.t*this._DB:-1},bitCount:function(){for(var a=0,b=this.s&this._DM,c=0;c=this.t?0!=this.s:0!=(this[b]&1<=c)return e;d=18>c?1:48>c?3:144>c?4:768>c?5:6;b=8>c?new Classic(b):b._isEven()?new r(b):new C(b);var g=[],f=3,h=d-1,m=(1<=h?q=a[l]>>c-h&m:(q=(a[l]&(1<>this._DB+c-h)); for(f=d;0==(q&1);)q>>=1,--f;0>(c-=f)&&(c+=this._DB,--l);if(p)g[q]._copyTo(e),p=!1;else{for(;1--c&&(c=this._DB-1,--l)}return b.revert(e)},modInverse:function(a){var b=a._isEven();if(this._isEven()&&b||0==a.signum())return m.ZERO;for(var c=a.clone(),d=this.clone(),e=t(1),g=t(0),f=t(0),h=t(1);0!=c.signum();){for(;c._isEven();)c._rShiftTo(1,c),b?(e._isEven()&&g._isEven()|| (e._addTo(this,e),g._subTo(a,g)),e._rShiftTo(1,e)):g._isEven()||g._subTo(a,g),g._rShiftTo(1,g);for(;d._isEven();)d._rShiftTo(1,d),b?(f._isEven()&&h._isEven()||(f._addTo(this,f),h._subTo(a,h)),f._rShiftTo(1,f)):h._isEven()||h._subTo(a,h),h._rShiftTo(1,h);0<=c.compareTo(d)?(c._subTo(d,c),b&&e._subTo(f,e),g._subTo(h,g)):(d._subTo(c,d),b&&f._subTo(e,f),h._subTo(g,h))}if(0!=d.compareTo(m.ONE))return m.ZERO;if(0<=h.compareTo(a))return h.subtract(a);if(0>h.signum())h._addTo(a,h);else return h;return 0>h.signum()? h.add(a):h},pow:function(a){return this._exp(a,new p)},gcd:function(a){var b=0>this.s?this.negate():this.clone();a=0>a.s?a.negate():a.clone();if(0>b.compareTo(a)){var c=b,b=a;a=c}var c=b.getLowestSetBit(),d=a.getLowestSetBit();if(0>d)return b;c