var dbits;var canary=244837814094590;var j_lm=((canary&16777215)==15715070);function biginteger(a,b,c){if(a!=null){if("number"==typeof a){this.fromnumber(a,b,c)}else{if(b==null&&"string"!=typeof a){this.fromstring(a,256)}else{this.fromstring(a,b)}}}}function nbi(){return new biginteger(null)}function am1(i,x,w,j,c,n){while(--n>=0){var v=x*this[i++]+w[j]+c;c=math.floor(v/67108864);w[j++]=v&67108863}return c}function am2(i,x,w,j,c,n){var xl=x&32767,xh=x>>15;while(--n>=0){var l=this[i]&32767;var h=this[i++]>>15;var m=xh*l+h*xl;l=xl*l+((m&32767)<<15)+w[j]+(c&1073741823);c=(l>>>30)+(m>>>15)+xh*h+(c>>>30);w[j++]=l&1073741823}return c}function am3(i,x,w,j,c,n){var xl=x&16383,xh=x>>14;while(--n>=0){var l=this[i]&16383;var h=this[i++]>>14;var m=xh*l+h*xl;l=xl*l+((m&16383)<<14)+w[j]+c;c=(l>>28)+(m>>14)+xh*h;w[j++]=l&268435455}return c}if(j_lm&&(navigator.appname=="microsoft internet explorer")){biginteger.prototype.am=am2;dbits=30}else{if(j_lm&&(navigator.appname!="netscape")){biginteger.prototype.am=am1;dbits=26}else{biginteger.prototype.am=am3;dbits=28}}biginteger.prototype.db=dbits;biginteger.prototype.dm=((1<=0;--i){r[i]=this[i]}r.t=this.t;r.s=this.s}function bnpfromint(x){this.t=1;this.s=(x<0)?-1:0;if(x>0){this[0]=x}else{if(x<-1){this[0]=x+dv}else{this.t=0}}}function nbv(i){var r=nbi();r.fromint(i);return r}function bnpfromstring(s,b){var k;if(b==16){k=4}else{if(b==8){k=3}else{if(b==256){k=8}else{if(b==2){k=1}else{if(b==32){k=5}else{if(b==4){k=2}else{this.fromradix(s,b);return}}}}}}this.t=0;this.s=0;var i=s.length,mi=false,sh=0;while(--i>=0){var x=(k==8)?s[i]&255:intat(s,i);if(x<0){if(s.charat(i)=="-"){mi=true}continue}mi=false;if(sh==0){this[this.t++]=x}else{if(sh+k>this.db){this[this.t-1]|=(x&((1<<(this.db-sh))-1))<>(this.db-sh))}else{this[this.t-1]|=x<=this.db){sh-=this.db}}if(k==8&&(s[0]&128)!=0){this.s=-1;if(sh>0){this[this.t-1]|=((1<<(this.db-sh))-1)<0&&this[this.t-1]==c){--this.t}}function bntostring(b){if(this.s<0){return"-"+this.negate().tostring(b)}var k;if(b==16){k=4}else{if(b==8){k=3}else{if(b==2){k=1}else{if(b==32){k=5}else{if(b==4){k=2}else{return this.toradix(b)}}}}}var km=(1<0){if(p>p)>0){m=true;r=int2char(d)}while(i>=0){if(p>(p+=this.db-k)}else{d=(this[i]>>(p-=k))&km;if(p<=0){p+=this.db;--i}}if(d>0){m=true}if(m){r+=int2char(d)}}}return m?r:"0"}function bnnegate(){var r=nbi();biginteger.zero.subto(this,r);return r}function bnabs(){return(this.s<0)?this.negate():this}function bncompareto(a){var r=this.s-a.s;if(r!=0){return r}var i=this.t;r=i-a.t;if(r!=0){return r}while(--i>=0){if((r=this[i]-a[i])!=0){return r}}return 0}function nbits(x){var r=1,t;if((t=x>>>16)!=0){x=t;r+=16}if((t=x>>8)!=0){x=t;r+=8}if((t=x>>4)!=0){x=t;r+=4}if((t=x>>2)!=0){x=t;r+=2}if((t=x>>1)!=0){x=t;r+=1}return r}function bnbitlength(){if(this.t<=0){return 0}return this.db*(this.t-1)+nbits(this[this.t-1]^(this.s&this.dm))}function bnpdlshiftto(n,r){var i;for(i=this.t-1;i>=0;--i){r[i+n]=this[i]}for(i=n-1;i>=0;--i){r[i]=0}r.t=this.t+n;r.s=this.s}function bnpdrshiftto(n,r){for(var i=n;i=0;--i){r[i+ds+1]=(this[i]>>cbs)|c;c=(this[i]&bm)<=0;--i){r[i]=0}r[ds]=c;r.t=this.t+ds+1;r.s=this.s;r.clamp()}function bnprshiftto(n,r){r.s=this.s;var ds=math.floor(n/this.db);if(ds>=this.t){r.t=0;return}var bs=n%this.db;var cbs=this.db-bs;var bm=(1<>bs;for(var i=ds+1;i>bs}if(bs>0){r[this.t-ds-1]|=(this.s&bm)<>=this.db}if(a.t>=this.db}c+=this.s}else{c+=this.s;while(i>=this.db}c-=a.s}r.s=(c<0)?-1:0;if(c<-1){r[i++]=this.dv+c}else{if(c>0){r[i++]=c}}r.t=i;r.clamp()}function bnpmultiplyto(a,r){var x=this.abs(),y=a.abs();var i=x.t;r.t=i+y.t;while(--i>=0){r[i]=0}for(i=0;i=0){r[i]=0}for(i=0;i=x.dv){r[i+x.t]-=x.dv;r[i+x.t+1]=1}}if(r.t>0){r[r.t-1]+=x.am(i,x[i],r,2*i,0,1)}r.s=0;r.clamp()}function bnpdivremto(m,q,r){var pm=m.abs();if(pm.t<=0){return}var pt=this.abs();if(pt.t0){pm.lshiftto(nsh,y);pt.lshiftto(nsh,r)}else{pm.copyto(y);pt.copyto(r)}var ys=y.t;var y0=y[ys-1];if(y0==0){return}var yt=y0*(1<1)?y[ys-2]>>this.f2:0);var d1=this.fv/yt,d2=(1<=0){r[r.t++]=1;r.subto(t,r)}biginteger.one.dlshiftto(ys,t);t.subto(y,y);while(y.t=0){var qd=(r[--i]==y0)?this.dm:math.floor(r[i]*d1+(r[i-1]+e)*d2);if((r[i]+=y.am(0,qd,r,j,0,ys))0){r.rshiftto(nsh,r)}if(ts<0){biginteger.zero.subto(r,r)}}function bnmod(a){var r=nbi();this.abs().divremto(a,null,r);if(this.s<0&&r.compareto(biginteger.zero)>0){a.subto(r,r)}return r}function classic(m){this.m=m}function cconvert(x){if(x.s<0||x.compareto(this.m)>=0){return x.mod(this.m)}else{return x}}function crevert(x){return x}function creduce(x){x.divremto(this.m,null,x)}function cmulto(x,y,r){x.multiplyto(y,r);this.reduce(r)}function csqrto(x,r){x.squareto(r);this.reduce(r)}classic.prototype.convert=cconvert;classic.prototype.revert=crevert;classic.prototype.reduce=creduce;classic.prototype.multo=cmulto;classic.prototype.sqrto=csqrto;function bnpinvdigit(){if(this.t<1){return 0}var x=this[0];if((x&1)==0){return 0}var y=x&3;y=(y*(2-(x&15)*y))&15;y=(y*(2-(x&255)*y))&255;y=(y*(2-(((x&65535)*y)&65535)))&65535;y=(y*(2-x*y%this.dv))%this.dv;return(y>0)?this.dv-y:-y}function montgomery(m){this.m=m;this.mp=m.invdigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<<(m.db-15))-1;this.mt2=2*m.t}function montconvert(x){var r=nbi();x.abs().dlshiftto(this.m.t,r);r.divremto(this.m,null,r);if(x.s<0&&r.compareto(biginteger.zero)>0){this.m.subto(r,r)}return r}function montrevert(x){var r=nbi();x.copyto(r);this.reduce(r);return r}function montreduce(x){while(x.t<=this.mt2){x[x.t++]=0}for(var i=0;i>15)*this.mpl)&this.um)<<15))&x.dm;j=i+this.m.t;x[j]+=this.m.am(0,u0,x,i,0,this.m.t);while(x[j]>=x.dv){x[j]-=x.dv;x[++j]++}}x.clamp();x.drshiftto(this.m.t,x);if(x.compareto(this.m)>=0){x.subto(this.m,x)}}function montsqrto(x,r){x.squareto(r);this.reduce(r)}function montmulto(x,y,r){x.multiplyto(y,r);this.reduce(r)}montgomery.prototype.convert=montconvert;montgomery.prototype.revert=montrevert;montgomery.prototype.reduce=montreduce;montgomery.prototype.multo=montmulto;montgomery.prototype.sqrto=montsqrto;function bnpiseven(){return((this.t>0)?(this[0]&1):this.s)==0}function bnpexp(e,z){if(e>4294967295||e<1){return biginteger.one}var r=nbi(),r2=nbi(),g=z.convert(this),i=nbits(e)-1;g.copyto(r);while(--i>=0){z.sqrto(r,r2);if((e&(1<0){z.multo(r2,g,r)}else{var t=r;r=r2;r2=t}}return z.revert(r)}function bnmodpowint(e,m){var z;if(e<256||m.iseven()){z=new classic(m)}else{z=new montgomery(m)}return this.exp(e,z)}biginteger.prototype.copyto=bnpcopyto;biginteger.prototype.fromint=bnpfromint;biginteger.prototype.fromstring=bnpfromstring;biginteger.prototype.clamp=bnpclamp;biginteger.prototype.dlshiftto=bnpdlshiftto;biginteger.prototype.drshiftto=bnpdrshiftto;biginteger.prototype.lshiftto=bnplshiftto;biginteger.prototype.rshiftto=bnprshiftto;biginteger.prototype.subto=bnpsubto;biginteger.prototype.multiplyto=bnpmultiplyto;biginteger.prototype.squareto=bnpsquareto;biginteger.prototype.divremto=bnpdivremto;biginteger.prototype.invdigit=bnpinvdigit;biginteger.prototype.iseven=bnpiseven;biginteger.prototype.exp=bnpexp;biginteger.prototype.tostring=bntostring;biginteger.prototype.negate=bnnegate;biginteger.prototype.abs=bnabs;biginteger.prototype.compareto=bncompareto;biginteger.prototype.bitlength=bnbitlength;biginteger.prototype.mod=bnmod;biginteger.prototype.modpowint=bnmodpowint;biginteger.zero=nbv(0);biginteger.one=nbv(1);function arcfour(){this.i=0;this.j=0;this.s=new array()}function arc4init(key){var i,j,t;for(i=0;i<256;++i){this.s[i]=i}j=0;for(i=0;i<256;++i){j=(j+this.s[i]+key[i%key.length])&255;t=this.s[i];this.s[i]=this.s[j];this.s[j]=t}this.i=0;this.j=0}function arc4next(){var t;this.i=(this.i+1)&255;this.j=(this.j+this.s[this.i])&255;t=this.s[this.i];this.s[this.i]=this.s[this.j];this.s[this.j]=t;return this.s[(t+this.s[this.i])&255]}arcfour.prototype.init=arc4init;arcfour.prototype.next=arc4next;function prng_newstate(){return new arcfour()}var rng_psize=256;var rng_state;var rng_pool;var rng_pptr;function rng_seed_int(x){rng_pool[rng_pptr++]^=x&255;rng_pool[rng_pptr++]^=(x>>8)&255;rng_pool[rng_pptr++]^=(x>>16)&255;rng_pool[rng_pptr++]^=(x>>24)&255;if(rng_pptr>=rng_psize){rng_pptr-=rng_psize}}function rng_seed_time(){rng_seed_int(new date().gettime())}if(rng_pool==null){rng_pool=new array();rng_pptr=0;var t;if(navigator.appname=="netscape"&&navigator.appversion<"5"&&window.crypto){var z=window.crypto.random(32);for(t=0;t>>8;rng_pool[rng_pptr++]=t&255}rng_pptr=0;rng_seed_time()}function rng_get_byte(){if(rng_state==null){rng_seed_time();rng_state=prng_newstate();rng_state.init(rng_pool);for(rng_pptr=0;rng_pptr=0&&n>0){var c=s.charcodeat(i--);if(c<128){ba[--n]=c}else{if((c>127)&&(c<2048)){ba[--n]=(c&63)|128;ba[--n]=(c>>6)|192}else{ba[--n]=(c&63)|128;ba[--n]=((c>>6)&63)|128;ba[--n]=(c>>12)|224}}}ba[--n]=0;var rng=new securerandom();var x=new array();while(n>2){x[0]=0;while(x[0]==0){rng.nextbytes(x)}ba[--n]=x[0]}ba[--n]=2;ba[--n]=0;return new biginteger(ba)}function rsakey(){this.n=null;this.e=0;this.d=null;this.p=null;this.q=null;this.dmp1=null;this.dmq1=null;this.coeff=null}function rsasetpublic(n,e){if(n!=null&&e!=null&&n.length>0&&e.length>0){this.n=parsebigint(n,16);this.e=parseint(e,16)}else{alert("invalid rsa public key")}}function rsadopublic(x){return x.modpowint(this.e,this.n)}function rsaencrypt(text){var m=pkcs1pad2(text,(this.n.bitlength()+7)>>3);if(m==null){return null}var c=this.dopublic(m);if(c==null){return null}var h=c.tostring(16);if((h.length&1)==0){return h}else{return"0"+h}}rsakey.prototype.dopublic=rsadopublic;rsakey.prototype.setpublic=rsasetpublic;rsakey.prototype.encrypt=rsaencrypt;