/*^BFPAI/SHA1.imp*/ function SHA1(){var HD=new String("0123456789abcdef");function AND(a,b){var hb=((a>=0x80000000)&&(b>=0x80000000));var r=0;if(a>=0x80000000){a-=0x80000000;}if(b>=0x80000000){b-=0x80000000;}r=a&b;if(hb){r+=0x80000000;}return r;}function OR(a,b){var hb=((a>=0x80000000)||(b>=0x80000000));var r=0;if(a>=0x80000000){a-=0x80000000;}if(b>=0x80000000){b-=0x80000000;}r=a|b;if(hb){r+=0x80000000;}return r;}function XOR(a,b){var hb=((a>=0x80000000)&&(b<0x80000000))||((a<0x80000000)&&(b>=0x80000000));var r=0;if(a>=0x80000000){a-=0x80000000;}if(b>=0x80000000){b-=0x80000000;}r=a^b;if(hb){r+=0x80000000;}return r;}function NOT(a){var b=0x80000000;var n=0;while(b>=1){if(a>=b){a-=b;}else{n+=b;}b=b/2;}return n;}function ADD(a,b){var n=0;if(a>=0x80000000){++n;a-=0x80000000;}if(b>=0x80000000){++n;b-=0x80000000;}a+=b;if(n==1){if(a>=0x80000000){a-=0x80000000;}else{a+=0x80000000;}}return a;}function LS(a,s){for(var i=0;i=0x80000000){a-=0x80000000;}a=a*2;}return a;}function RS(a,s){for(var i=0;i>4)&0x0F,1);}function HEX2(c){return HD.substr(c&0x0F,1);}var PD=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var H=[],B=[];var KV=[0x5A827999,0x6ED9EBA1,0x8F1BBCDC,0xCA62C1D6];var TL=0,BL=0;function K(n){return KV[Math.floor(n / 20)];}function S(v,n){return OR(LS(v,n),RS(v,32-n));}function f(n,B,C,D){switch(Math.floor(n/20)){case 0:return OR(AND(B,C),AND(NOT(B),D));case 2:return OR(OR(AND(B,C),AND(B,D)),AND(C,D));default:return XOR(XOR(B,C),D);}}function EC(I,L,O){var i,j;for(i=0,j=0;jL){i=L;}else{i=64-BL;}CA(B,BL,I,0,i);BL+=i;if(BL<64){return;}TF(B);BL=0;}while(L-i>=64){CA(B,0,I,i,64);i+=64;TF(B); }CA(B,0,I,i,L-i);BL=L-i;},Final:function(){var D=[];var R="";B[BL++]=0x80;if(BL<56){CA(B,BL,PD,0,59-BL);}else{if(BL<64){CA(B,BL,PD,0,64-BL);}TF(B);CA(B,0,PD,0,58);}B[59]=AND(RS(AND(TL,0xE0000000),29),0xFF);TL=LS(TL,3);B[60]=AND(RS(TL,24),0xFF);B[61]=AND(RS(TL,16),0xFF);B[62]=AND(RS(TL,8),0xFF);B[63]=AND(TL,0xFF);TF(B);EC(H,20,D);for(i=0;i<20;i++){R+=String(HEX1(D[i]));R+=String(HEX2(D[i]));}return R;},doSHA1:function(C,P){var c=[],p=[];var u;var s,d;for(s=0,d=0;s