(function(global,undefined){"use strict";var SM2CipherMode={C1C2C3:"0",C1C3C2:"1"};function SM2Cipher(t){this.ct=1;this.sm3c3=this.sm3keybase=this.p2=null;this.key=Array(32);this.keyOff=0;this.cipherMode="undefined"!=typeof t?t:SM2CipherMode.C1C3C2}(function(){function a(t,e){var i=(this._lBlock>>>t^this._rBlock)&e;this._rBlock^=i;this._lBlock^=i<<t}function p(t,e){var i=(this._rBlock>>>t^this._lBlock)&e;this._lBlock^=i;this._rBlock^=i<<t}var t=CryptoJS,e=t.lib,i=e.WordArray,e=e.BlockCipher,r=t.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],h=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],F=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],u=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],g=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],n=r.DES=e.extend({_doReset:function(){for(var t=this._key.words,e=[],i=0;56>i;i++){var r=o[i]-1;e[i]=t[r>>>5]>>>31-r%32&1}t=this._subKeys=[];for(r=0;16>r;r++){for(var n=t[r]=[],s=F[r],i=0;24>i;i++)n[i/6|0]|=e[(h[i]-1+s)%28]<<31-i%6,n[4+(i/6|0)]|=e[28+(h[i+24]-1+s)%28]<<31-i%6;n[0]=n[0]<<1|n[0]>>>31;for(i=1;7>i;i++)n[i]>>>=4*(i-1)+3;n[7]=n[7]<<5|n[7]>>>27}e=this._invSubKeys=[];for(i=0;16>i;i++)e[i]=t[15-i]},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._subKeys)},decryptBlock:function(t,e){this._doCryptBlock(t,e,this._invSubKeys)},_doCryptBlock:function(t,e,i){this._lBlock=t[e];this._rBlock=t[e+1];a.call(this,4,252645135);a.call(this,16,65535);p.call(this,2,858993459);p.call(this,8,16711935);a.call(this,1,1431655765);for(var r=0;16>r;r++){for(var n=i[r],s=this._lBlock,o=this._rBlock,h=0,F=0;8>F;F++)h|=u[F][((o^n[F])&g[F])>>>0];this._lBlock=o;this._rBlock=s^h}i=this._lBlock;this._lBlock=this._rBlock;this._rBlock=i;a.call(this,1,1431655765);p.call(this,8,16711935);p.call(this,2,858993459);a.call(this,16,65535);a.call(this,4,252645135);t[e]=this._lBlock;t[e+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});t.DES=e._createHelper(n);r=r.TripleDES=e.extend({_doReset:function(){var t=this._key.words;this._des1=n.createEncryptor(i.create(t.slice(0,2)));this._des2=n.createEncryptor(i.create(t.slice(2,4)));this._des3=n.createEncryptor(i.create(t.slice(4,6)))},encryptBlock:function(t,e){this._des1.encryptBlock(t,e);this._des2.decryptBlock(t,e);this._des3.encryptBlock(t,e)},decryptBlock:function(t,e){this._des3.decryptBlock(t,e);this._des2.encryptBlock(t,e);this._des1.decryptBlock(t,e)},keySize:6,ivSize:2,blockSize:2});t.TripleDES=e._createHelper(r)})();(function(){var t=CryptoJS,F=t.lib.WordArray;t.enc.Base64={stringify:function(t){var e=t.words,i=t.sigBytes,r=this._map;t.clamp();t=[];for(var n=0;n<i;n+=3)for(var s=(e[n>>>2]>>>24-n%4*8&255)<<16|(e[n+1>>>2]>>>24-(n+1)%4*8&255)<<8|e[n+2>>>2]>>>24-(n+2)%4*8&255,o=0;4>o&&n+.75*o<i;o++)t.push(r.charAt(s>>>6*(3-o)&63));if(e=r.charAt(64))for(;t.length%4;)t.push(e);return t.join("")},parse:function(t){var e=t.length,i=this._map,r=i.charAt(64);r&&(r=t.indexOf(r),-1!=r&&(e=r));for(var r=[],n=0,s=0;s<e;s++)if(s%4){var o=i.indexOf(t.charAt(s-1))<<s%4*2,h=i.indexOf(t.charAt(s))>>>6-s%4*2;r[n>>>2]|=(o|h)<<24-n%4*8;n++}return F.create(r,n)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})();var dbits,canary=0xdeadbeefcafe,j_lm=15715070==(canary&16777215);function BigInteger(t,e,i){null!=t&&("number"==typeof t?this.fromNumber(t,e,i):null==e&&"string"!=typeof t?this.fromString(t,256):this.fromString(t,e))}function nbi(){return new BigInteger(null)}function am1(t,e,i,r,n,s){for(;0<=--s;){var o=e*this[t++]+i[r]+n;n=Math.floor(o/67108864);i[r++]=o&67108863}return n}function am2(t,e,i,r,n,s){var o=e&32767;for(e>>=15;0<=--s;){var h=this[t]&32767,F=this[t++]>>15,a=e*h+F*o,h=o*h+((a&32767)<<15)+i[r]+(n&1073741823);n=(h>>>30)+(a>>>15)+e*F+(n>>>30);i[r++]=h&1073741823}return n}function am3(t,e,i,r,n,s){var o=e&16383;for(e>>=14;0<=--s;){var h=this[t]&16383,F=this[t++]>>14,a=e*h+F*o,h=o*h+((a&16383)<<14)+i[r]+n;n=(h>>28)+(a>>14)+e*F;i[r++]=h&268435455}return n}j_lm&&"Microsoft Internet Explorer"==navigator.appName?(BigInteger.prototype.am=am2,dbits=30):j_lm&&"Netscape"!=navigator.appName?(BigInteger.prototype.am=am1,dbits=26):(BigInteger.prototype.am=am3,dbits=28);BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=(1<<dbits)-1;BigInteger.prototype.DV=1<<dbits;var BI_FP=52;BigInteger.prototype.FV=Math.pow(2,BI_FP);BigInteger.prototype.F1=BI_FP-dbits;BigInteger.prototype.F2=2*dbits-BI_FP;var BI_RM="0123456789abcdefghijklmnopqrstuvwxyz",BI_RC=[],rr,vv;rr=48;for(vv=0;9>=vv;++vv)BI_RC[rr++]=vv;rr=97;for(vv=10;36>vv;++vv)BI_RC[rr++]=vv;rr=65;for(vv=10;36>vv;++vv)BI_RC[rr++]=vv;function int2char(t){return BI_RM.charAt(t)}function intAt(t,e){var i=BI_RC[t.charCodeAt(e)];return null==i?-1:i}function bnpCopyTo(t){for(var e=this.t-1;0<=e;--e)t[e]=this[e];t.t=this.t;t.s=this.s}function bnpFromInt(t){this.t=1;this.s=0>t?-1:0;0<t?this[0]=t:-1>t?this[0]=t+this.DV:this.t=0}function nbv(t){var e=nbi();e.fromInt(t);return e}function bnpFromString(t,e){var i;if(16==e)i=4;else if(8==e)i=3;else if(256==e)i=8;else if(2==e)i=1;else if(32==e)i=5;else if(4==e)i=2;else{this.fromRadix(t,e);return}this.s=this.t=0;for(var r=t.length,n=!1,s=0;0<=--r;){var o=8==i?t[r]&255:intAt(t,r);0>o?"-"==t.charAt(r)&&(n=!0):(n=!1,0==s?this[this.t++]=o:s+i>this.DB?(this[this.t-1]|=(o&(1<<this.DB-s)-1)<<s,this[this.t++]=o>>this.DB-s):this[this.t-1]|=o<<s,s+=i,s>=this.DB&&(s-=this.DB))}8==i&&0!=(t[0]&128)&&(this.s=-1,0<s&&(this[this.t-1]|=(1<<this.DB-s)-1<<s));this.clamp();n&&BigInteger.ZERO.subTo(this,this)}function bnpClamp(){for(var t=this.s&this.DM;0<this.t&&this[this.t-1]==t;)--this.t}function bnToString(t){if(0>this.s)return"-"+this.negate().toString(t);if(16==t)t=4;else if(8==t)t=3;else if(2==t)t=1;else if(32==t)t=5;else if(4==t)t=2;else return this.toRadix(t);var e=(1<<t)-1,i,r=!1,n="",s=this.t,o=this.DB-s*this.DB%t;if(0<s--)for(o<this.DB&&0<(i=this[s]>>o)&&(r=!0,n=int2char(i));0<=s;)o<t?(i=(this[s]&(1<<o)-1)<<t-o,i|=this[--s]>>(o+=this.DB-t)):(i=this[s]>>(o-=t)&e,0>=o&&(o+=this.DB,--s)),0<i&&(r=!0),r&&(n+=int2char(i));return r?n:"0"}function bnNegate(){var t=nbi();BigInteger.ZERO.subTo(this,t);return t}function bnAbs(){return 0>this.s?this.negate():this}function bnCompareTo(t){var e=this.s-t.s;if(0!=e)return e;var i=this.t,e=i-t.t;if(0!=e)return 0>this.s?-e:e;for(;0<=--i;)if(0!=(e=this[i]-t[i]))return e;return 0}function nbits(t){var e=1,i;0!=(i=t>>>16)&&(t=i,e+=16);0!=(i=t>>8)&&(t=i,e+=8);0!=(i=t>>4)&&(t=i,e+=4);0!=(i=t>>2)&&(t=i,e+=2);0!=t>>1&&(e+=1);return e}function bnBitLength(){return 0>=this.t?0:this.DB*(this.t-1)+nbits(this[this.t-1]^this.s&this.DM)}function bnpDLShiftTo(t,e){var i;for(i=this.t-1;0<=i;--i)e[i+t]=this[i];for(i=t-1;0<=i;--i)e[i]=0;e.t=this.t+t;e.s=this.s}function bnpDRShiftTo(t,e){for(var i=t;i<this.t;++i)e[i-t]=this[i];e.t=Math.max(this.t-t,0);e.s=this.s}function bnpLShiftTo(t,e){var i=t%this.DB,r=this.DB-i,n=(1<<r)-1,s=Math.floor(t/this.DB),o=this.s<<i&this.DM,h;for(h=this.t-1;0<=h;--h)e[h+s+1]=this[h]>>r|o,o=(this[h]&n)<<i;for(h=s-1;0<=h;--h)e[h]=0;e[s]=o;e.t=this.t+s+1;e.s=this.s;e.clamp()}function bnpRShiftTo(t,e){e.s=this.s;var i=Math.floor(t/this.DB);if(i>=this.t)e.t=0;else{var r=t%this.DB,n=this.DB-r,s=(1<<r)-1;e[0]=this[i]>>r;for(var o=i+1;o<this.t;++o)e[o-i-1]|=(this[o]&s)<<n,e[o-i]=this[o]>>r;0<r&&(e[this.t-i-1]|=(this.s&s)<<n);e.t=this.t-i;e.clamp()}}function bnpSubTo(t,e){for(var i=0,r=0,n=Math.min(t.t,this.t);i<n;)r+=this[i]-t[i],e[i++]=r&this.DM,r>>=this.DB;if(t.t<this.t){for(r-=t.s;i<this.t;)r+=this[i],e[i++]=r&this.DM,r>>=this.DB;r+=this.s}else{for(r+=this.s;i<t.t;)r-=t[i],e[i++]=r&this.DM,r>>=this.DB;r-=t.s}e.s=0>r?-1:0;-1>r?e[i++]=this.DV+r:0<r&&(e[i++]=r);e.t=i;e.clamp()}function bnpMultiplyTo(t,e){var i=this.abs(),r=t.abs(),n=i.t;for(e.t=n+r.t;0<=--n;)e[n]=0;for(n=0;n<r.t;++n)e[n+i.t]=i.am(0,r[n],e,n,0,i.t);e.s=0;e.clamp();this.s!=t.s&&BigInteger.ZERO.subTo(e,e)}function bnpSquareTo(t){for(var e=this.abs(),i=t.t=2*e.t;0<=--i;)t[i]=0;for(i=0;i<e.t-1;++i){var r=e.am(i,e[i],t,2*i,0,1);(t[i+e.t]+=e.am(i+1,2*e[i],t,2*i+1,r,e.t-i-1))>=e.DV&&(t[i+e.t]-=e.DV,t[i+e.t+1]=1)}0<t.t&&(t[t.t-1]+=e.am(i,e[i],t,2*i,0,1));t.s=0;t.clamp()}function bnpDivRemTo(t,e,i){var r=t.abs();if(!(0>=r.t)){var n=this.abs();if(n.t<r.t)null!=e&&e.fromInt(0),null!=i&&this.copyTo(i);else{null==i&&(i=nbi());var s=nbi(),o=this.s;t=t.s;var h=this.DB-nbits(r[r.t-1]);0<h?(r.lShiftTo(h,s),n.lShiftTo(h,i)):(r.copyTo(s),n.copyTo(i));r=s.t;n=s[r-1];if(0!=n){var F=n*(1<<this.F1)+(1<r?s[r-2]>>this.F2:0),a=this.FV/F,F=(1<<this.F1)/F,p=1<<this.F2,u=i.t,g=u-r,c=null==e?nbi():e;s.dlShiftTo(g,c);0<=i.compareTo(c)&&(i[i.t++]=1,i.subTo(c,i));BigInteger.ONE.dlShiftTo(r,c);for(c.subTo(s,s);s.t<r;)s[s.t++]=0;for(;0<=--g;){var l=i[--u]==n?this.DM:Math.floor(i[u]*a+(i[u-1]+p)*F);if((i[u]+=s.am(0,l,i,g,0,r))<l)for(s.dlShiftTo(g,c),i.subTo(c,i);i[u]<--l;)i.subTo(c,i)}null!=e&&(i.drShiftTo(r,e),o!=t&&BigInteger.ZERO.subTo(e,e));i.t=r;i.clamp();0<h&&i.rShiftTo(h,i);0>o&&BigInteger.ZERO.subTo(i,i)}}}}function bnMod(t){var e=nbi();this.abs().divRemTo(t,null,e);0>this.s&&0<e.compareTo(BigInteger.ZERO)&&t.subTo(e,e);return e}function Classic(t){this.m=t}function cConvert(t){return 0>t.s||0<=t.compareTo(this.m)?t.mod(this.m):t}function cRevert(t){return t}function cReduce(t){t.divRemTo(this.m,null,t)}function cMulTo(t,e,i){t.multiplyTo(e,i);this.reduce(i)}function cSqrTo(t,e){t.squareTo(e);this.reduce(e)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(1>this.t)return 0;var t=this[0];if(0==(t&1))return 0;var e=t&3,e=e*(2-(t&15)*e)&15,e=e*(2-(t&255)*e)&255,e=e*(2-((t&65535)*e&65535))&65535,e=e*(2-t*e%this.DV)%this.DV;return 0<e?this.DV-e:-e}function Montgomery(t){this.m=t;this.mp=t.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<<t.DB-15)-1;this.mt2=2*t.t}function montConvert(t){var e=nbi();t.abs().dlShiftTo(this.m.t,e);e.divRemTo(this.m,null,e);0>t.s&&0<e.compareTo(BigInteger.ZERO)&&this.m.subTo(e,e);return e}function montRevert(t){var e=nbi();t.copyTo(e);this.reduce(e);return e}function montReduce(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e<this.m.t;++e){var i=t[e]&32767,r=i*this.mpl+((i*this.mph+(t[e]>>15)*this.mpl&this.um)<<15)&t.DM,i=e+this.m.t;for(t[i]+=this.m.am(0,r,t,e,0,this.m.t);t[i]>=t.DV;)t[i]-=t.DV,t[++i]++}t.clamp();t.drShiftTo(this.m.t,t);0<=t.compareTo(this.m)&&t.subTo(this.m,t)}function montSqrTo(t,e){t.squareTo(e);this.reduce(e)}function montMulTo(t,e,i){t.multiplyTo(e,i);this.reduce(i)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return 0==(0<this.t?this[0]&1:this.s)}function bnpExp(t,e){if(4294967295<t||1>t)return BigInteger.ONE;var i=nbi(),r=nbi(),n=e.convert(this),s=nbits(t)-1;for(n.copyTo(i);0<=--s;)if(e.sqrTo(i,r),0<(t&1<<s))e.mulTo(r,n,i);else var o=i,i=r,r=o;return e.revert(i)}function bnModPowInt(t,e){var i;i=256>t||e.isEven()?new Classic(e):new Montgomery(e);return this.exp(t,i)}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 bnClone(){var t=nbi();this.copyTo(t);return t}function bnIntValue(){if(0>this.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)<<this.DB|this[0]}function bnByteValue(){return 0==this.t?this.s:this[0]<<24>>24}function bnShortValue(){return 0==this.t?this.s:this[0]<<16>>16}function bnpChunkSize(t){return Math.floor(Math.LN2*this.DB/Math.log(t))}function bnSigNum(){return 0>this.s?-1:0>=this.t||1==this.t&&0>=this[0]?0:1}function bnpToRadix(t){null==t&&(t=10);if(0==this.signum()||2>t||36<t)return"0";var e=this.chunkSize(t),e=Math.pow(t,e),i=nbv(e),r=nbi(),n=nbi(),s="";for(this.divRemTo(i,r,n);0<r.signum();)s=(e+n.intValue()).toString(t).substr(1)+s,r.divRemTo(i,r,n);return n.intValue().toString(t)+s}function bnpFromRadix(t,e){this.fromInt(0);null==e&&(e=10);for(var i=this.chunkSize(e),r=Math.pow(e,i),n=!1,s=0,o=0,h=0;h<t.length;++h){var F=intAt(t,h);0>F?"-"==t.charAt(h)&&0==this.signum()&&(n=!0):(o=e*o+F,++s>=i&&(this.dMultiply(r),this.dAddOffset(o,0),o=s=0))}0<s&&(this.dMultiply(Math.pow(e,s)),this.dAddOffset(o,0));n&&BigInteger.ZERO.subTo(this,this)}function bnpFromNumber(t,e,i){if("number"==typeof e)if(2>t)this.fromInt(1);else for(this.fromNumber(t,i),this.testBit(t-1)||this.bitwiseTo(BigInteger.ONE.shiftLeft(t-1),op_or,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(BigInteger.ONE.shiftLeft(t-1),this);else{i=[];var r=t&7;i.length=(t>>3)+1;e.nextBytes(i);i[0]=0<r?i[0]&(1<<r)-1:0;this.fromString(i,256)}}function bnToByteArray(){var t=this.t,e=[];e[0]=this.s;var i=this.DB-t*this.DB%8,r,n=0;if(0<t--)for(i<this.DB&&(r=this[t]>>i)!=(this.s&this.DM)>>i&&(e[n++]=r|this.s<<this.DB-i);0<=t;)if(8>i?(r=(this[t]&(1<<i)-1)<<8-i,r|=this[--t]>>(i+=this.DB-8)):(r=this[t]>>(i-=8)&255,0>=i&&(i+=this.DB,--t)),0!=(r&128)&&(r|=-256),0==n&&(this.s&128)!=(r&128)&&++n,0<n||r!=this.s)e[n++]=r;return e}function bnEquals(t){return 0==this.compareTo(t)}function bnMin(t){return 0>this.compareTo(t)?this:t}function bnMax(t){return 0<this.compareTo(t)?this:t}function bnpBitwiseTo(t,e,i){var r,n,s=Math.min(t.t,this.t);for(r=0;r<s;++r)i[r]=e(this[r],t[r]);if(t.t<this.t){n=t.s&this.DM;for(r=s;r<this.t;++r)i[r]=e(this[r],n);i.t=this.t}else{n=this.s&this.DM;for(r=s;r<t.t;++r)i[r]=e(n,t[r]);i.t=t.t}i.s=e(this.s,t.s);i.clamp()}function op_and(t,e){return t&e}function bnAnd(t){var e=nbi();this.bitwiseTo(t,op_and,e);return e}function op_or(t,e){return t|e}function bnOr(t){var e=nbi();this.bitwiseTo(t,op_or,e);return e}function op_xor(t,e){return t^e}function bnXor(t){var e=nbi();this.bitwiseTo(t,op_xor,e);return e}function op_andnot(t,e){return t&~e}function bnAndNot(t){var e=nbi();this.bitwiseTo(t,op_andnot,e);return e}function bnNot(){for(var t=nbi(),e=0;e<this.t;++e)t[e]=this.DM&~this[e];t.t=this.t;t.s=~this.s;return t}function bnShiftLeft(t){var e=nbi();0>t?this.rShiftTo(-t,e):this.lShiftTo(t,e);return e}function bnShiftRight(t){var e=nbi();0>t?this.lShiftTo(-t,e):this.rShiftTo(t,e);return e}function lbit(t){if(0==t)return-1;var e=0;0==(t&65535)&&(t>>=16,e+=16);0==(t&255)&&(t>>=8,e+=8);0==(t&15)&&(t>>=4,e+=4);0==(t&3)&&(t>>=2,e+=2);0==(t&1)&&++e;return e}function bnGetLowestSetBit(){for(var t=0;t<this.t;++t)if(0!=this[t])return t*this.DB+lbit(this[t]);return 0>this.s?this.t*this.DB:-1}function cbit(t){for(var e=0;0!=t;)t&=t-1,++e;return e}function bnBitCount(){for(var t=0,e=this.s&this.DM,i=0;i<this.t;++i)t+=cbit(this[i]^e);return t}function bnTestBit(t){var e=Math.floor(t/this.DB);return e>=this.t?0!=this.s:0!=(this[e]&1<<t%this.DB)}function bnpChangeBit(t,e){var i=BigInteger.ONE.shiftLeft(t);this.bitwiseTo(i,e,i);return i}function bnSetBit(t){return this.changeBit(t,op_or)}function bnClearBit(t){return this.changeBit(t,op_andnot)}function bnFlipBit(t){return this.changeBit(t,op_xor)}function bnpAddTo(t,e){for(var i=0,r=0,n=Math.min(t.t,this.t);i<n;)r+=this[i]+t[i],e[i++]=r&this.DM,r>>=this.DB;if(t.t<this.t){for(r+=t.s;i<this.t;)r+=this[i],e[i++]=r&this.DM,r>>=this.DB;r+=this.s}else{for(r+=this.s;i<t.t;)r+=t[i],e[i++]=r&this.DM,r>>=this.DB;r+=t.s}e.s=0>r?-1:0;0<r?e[i++]=r:-1>r&&(e[i++]=this.DV+r);e.t=i;e.clamp()}function bnAdd(t){var e=nbi();this.addTo(t,e);return e}function bnSubtract(t){var e=nbi();this.subTo(t,e);return e}function bnMultiply(t){var e=nbi();this.multiplyTo(t,e);return e}function bnSquare(){var t=nbi();this.squareTo(t);return t}function bnDivide(t){var e=nbi();this.divRemTo(t,e,null);return e}function bnRemainder(t){var e=nbi();this.divRemTo(t,null,e);return e}function bnDivideAndRemainder(t){var e=nbi(),i=nbi();this.divRemTo(t,e,i);return[e,i]}function bnpDMultiply(t){this[this.t]=this.am(0,t-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}}function NullExp(){}function nNop(t){return t}function nMulTo(t,e,i){t.multiplyTo(e,i)}function nSqrTo(t,e){t.squareTo(e)}NullExp.prototype.convert=nNop;NullExp.prototype.revert=nNop;NullExp.prototype.mulTo=nMulTo;NullExp.prototype.sqrTo=nSqrTo;function bnPow(t){return this.exp(t,new NullExp)}function bnpMultiplyLowerTo(t,e,i){var r=Math.min(this.t+t.t,e);i.s=0;for(i.t=r;0<r;)i[--r]=0;var n;for(n=i.t-this.t;r<n;++r)i[r+this.t]=this.am(0,t[r],i,r,0,this.t);for(n=Math.min(t.t,e);r<n;++r)this.am(0,t[r],i,r,0,e-r);i.clamp()}function bnpMultiplyUpperTo(t,e,i){--e;var r=i.t=this.t+t.t-e;for(i.s=0;0<=--r;)i[r]=0;for(r=Math.max(e-this.t,0);r<t.t;++r)i[this.t+r-e]=this.am(e-r,t[r],i,0,0,this.t+r-e);i.clamp();i.drShiftTo(1,i)}function Barrett(t){this.r2=nbi();this.q3=nbi();BigInteger.ONE.dlShiftTo(2*t.t,this.r2);this.mu=this.r2.divide(t);this.m=t}function barrettConvert(t){if(0>t.s||t.t>2*this.m.t)return t.mod(this.m);if(0>t.compareTo(this.m))return t;var e=nbi();t.copyTo(e);this.reduce(e);return e}function barrettRevert(t){return t}function barrettReduce(t){t.drShiftTo(this.m.t-1,this.r2);t.t>this.m.t+1&&(t.t=this.m.t+1,t.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>t.compareTo(this.r2);)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);0<=t.compareTo(this.m);)t.subTo(this.m,t)}function barrettSqrTo(t,e){t.squareTo(e);this.reduce(e)}function barrettMulTo(t,e,i){t.multiplyTo(e,i);this.reduce(i)}Barrett.prototype.convert=barrettConvert;Barrett.prototype.revert=barrettRevert;Barrett.prototype.reduce=barrettReduce;Barrett.prototype.mulTo=barrettMulTo;Barrett.prototype.sqrTo=barrettSqrTo;function bnModPow(t,e){var i=t.bitLength(),r,n=nbv(1),s;if(0>=i)return n;r=18>i?1:48>i?3:144>i?4:768>i?5:6;s=8>i?new Classic(e):e.isEven()?new Barrett(e):new Montgomery(e);var o=[],h=3,F=r-1,a=(1<<r)-1;o[1]=s.convert(this);if(1<r)for(i=nbi(),s.sqrTo(o[1],i);h<=a;)o[h]=nbi(),s.mulTo(i,o[h-2],o[h]),h+=2;for(var p=t.t-1,u,g=!0,c=nbi(),i=nbits(t[p])-1;0<=p;){i>=F?u=t[p]>>i-F&a:(u=(t[p]&(1<<i+1)-1)<<F-i,0<p&&(u|=t[p-1]>>this.DB+i-F));for(h=r;0==(u&1);)u>>=1,--h;0>(i-=h)&&(i+=this.DB,--p);if(g)o[u].copyTo(n),g=!1;else{for(;1<h;)s.sqrTo(n,c),s.sqrTo(c,n),h-=2;0<h?s.sqrTo(n,c):(h=n,n=c,c=h);s.mulTo(c,o[u],n)}for(;0<=p&&0==(t[p]&1<<i);)s.sqrTo(n,c),h=n,n=c,c=h,0>--i&&(i=this.DB-1,--p)}return s.revert(n)}function bnGCD(t){var e=0>this.s?this.negate():this.clone();t=0>t.s?t.negate():t.clone();if(0>e.compareTo(t)){var i=e,e=t;t=i}var i=e.getLowestSetBit(),r=t.getLowestSetBit();if(0>r)return e;i<r&&(r=i);0<r&&(e.rShiftTo(r,e),t.rShiftTo(r,t));for(;0<e.signum();)0<(i=e.getLowestSetBit())&&e.rShiftTo(i,e),0<(i=t.getLowestSetBit())&&t.rShiftTo(i,t),0<=e.compareTo(t)?(e.subTo(t,e),e.rShiftTo(1,e)):(t.subTo(e,t),t.rShiftTo(1,t));0<r&&t.lShiftTo(r,t);return t}function bnpModInt(t){if(0>=t)return 0;var e=this.DV%t,i=0>this.s?t-1:0;if(0<this.t)if(0==e)i=this[0]%t;else for(var r=this.t-1;0<=r;--r)i=(e*i+this[r])%t;return i}function bnModInverse(t){var e=t.isEven();if(this.isEven()&&e||0==t.signum())return BigInteger.ZERO;for(var i=t.clone(),r=this.clone(),n=nbv(1),s=nbv(0),o=nbv(0),h=nbv(1);0!=i.signum();){for(;i.isEven();)i.rShiftTo(1,i),e?(n.isEven()&&s.isEven()||(n.addTo(this,n),s.subTo(t,s)),n.rShiftTo(1,n)):s.isEven()||s.subTo(t,s),s.rShiftTo(1,s);for(;r.isEven();)r.rShiftTo(1,r),e?(o.isEven()&&h.isEven()||(o.addTo(this,o),h.subTo(t,h)),o.rShiftTo(1,o)):h.isEven()||h.subTo(t,h),h.rShiftTo(1,h);0<=i.compareTo(r)?(i.subTo(r,i),e&&n.subTo(o,n),s.subTo(h,s)):(r.subTo(i,r),e&&o.subTo(n,o),h.subTo(s,h))}if(0!=r.compareTo(BigInteger.ONE))return BigInteger.ZERO;if(0<=h.compareTo(t))return h.subtract(t);if(0>h.signum())h.addTo(t,h);else return h;return 0>h.signum()?h.add(t):h}var lowprimes=[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,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],lplim=67108864/lowprimes[lowprimes.length-1];function bnIsProbablePrime(t){var e,i=this.abs();if(1==i.t&&i[0]<=lowprimes[lowprimes.length-1]){for(e=0;e<lowprimes.length;++e)if(i[0]==lowprimes[e])return!0;return!1}if(i.isEven())return!1;for(e=1;e<lowprimes.length;){for(var r=lowprimes[e],n=e+1;n<lowprimes.length&&r<lplim;)r*=lowprimes[n++];for(r=i.modInt(r);e<n;)if(0==r%lowprimes[e++])return!1}return i.millerRabin(t)}function bnpMillerRabin(t){var e=this.subtract(BigInteger.ONE),i=e.getLowestSetBit();if(0>=i)return!1;var r=e.shiftRight(i);t=t+1>>1;t>lowprimes.length&&(t=lowprimes.length);for(var n=nbi(),s=0;s<t;++s){n.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);var o=n.modPow(r,this);if(0!=o.compareTo(BigInteger.ONE)&&0!=o.compareTo(e)){for(var h=1;h++<i&&0!=o.compareTo(e);)if(o=o.modPowInt(2,this),0==o.compareTo(BigInteger.ONE))return!1;if(0!=o.compareTo(e))return!1}}return!0}BigInteger.prototype.chunkSize=bnpChunkSize;BigInteger.prototype.toRadix=bnpToRadix;BigInteger.prototype.fromRadix=bnpFromRadix;BigInteger.prototype.fromNumber=bnpFromNumber;BigInteger.prototype.bitwiseTo=bnpBitwiseTo;BigInteger.prototype.changeBit=bnpChangeBit;BigInteger.prototype.addTo=bnpAddTo;BigInteger.prototype.dMultiply=bnpDMultiply;BigInteger.prototype.dAddOffset=bnpDAddOffset;BigInteger.prototype.multiplyLowerTo=bnpMultiplyLowerTo;BigInteger.prototype.multiplyUpperTo=bnpMultiplyUpperTo;BigInteger.prototype.modInt=bnpModInt;BigInteger.prototype.millerRabin=bnpMillerRabin;BigInteger.prototype.clone=bnClone;BigInteger.prototype.intValue=bnIntValue;BigInteger.prototype.byteValue=bnByteValue;BigInteger.prototype.shortValue=bnShortValue;BigInteger.prototype.signum=bnSigNum;BigInteger.prototype.toByteArray=bnToByteArray;BigInteger.prototype.equals=bnEquals;BigInteger.prototype.min=bnMin;BigInteger.prototype.max=bnMax;BigInteger.prototype.and=bnAnd;BigInteger.prototype.or=bnOr;BigInteger.prototype.xor=bnXor;BigInteger.prototype.andNot=bnAndNot;BigInteger.prototype.not=bnNot;BigInteger.prototype.shiftLeft=bnShiftLeft;BigInteger.prototype.shiftRight=bnShiftRight;BigInteger.prototype.getLowestSetBit=bnGetLowestSetBit;BigInteger.prototype.bitCount=bnBitCount;BigInteger.prototype.testBit=bnTestBit;BigInteger.prototype.setBit=bnSetBit;BigInteger.prototype.clearBit=bnClearBit;BigInteger.prototype.flipBit=bnFlipBit;BigInteger.prototype.add=bnAdd;BigInteger.prototype.subtract=bnSubtract;BigInteger.prototype.multiply=bnMultiply;BigInteger.prototype.divide=bnDivide;BigInteger.prototype.remainder=bnRemainder;BigInteger.prototype.divideAndRemainder=bnDivideAndRemainder;BigInteger.prototype.modPow=bnModPow;BigInteger.prototype.modInverse=bnModInverse;BigInteger.prototype.pow=bnPow;BigInteger.prototype.gcd=bnGCD;BigInteger.prototype.isProbablePrime=bnIsProbablePrime;BigInteger.prototype.square=bnSquare;function Arcfour(){this.j=this.i=0;this.S=[]}function ARC4init(t){var e,i,r;for(e=0;256>e;++e)this.S[e]=e;for(e=i=0;256>e;++e)i=i+this.S[e]+t[e%t.length]&255,r=this.S[e],this.S[e]=this.S[i],this.S[i]=r;this.j=this.i=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,rng_state,rng_pool,rng_pptr;function rng_seed_int(t){rng_pool[rng_pptr++]^=t&255;rng_pool[rng_pptr++]^=t>>8&255;rng_pool[rng_pptr++]^=t>>16&255;rng_pool[rng_pptr++]^=t>>24&255;rng_pptr>=rng_psize&&(rng_pptr-=rng_psize)}function rng_seed_time(){rng_seed_int((new Date).getTime())}if(null==rng_pool){rng_pool=[];rng_pptr=0;var t;if("Netscape"==navigator.appName&&"5">navigator.appVersion&&window.crypto){var z=window.crypto.random(32);for(t=0;t<z.length;++t)rng_pool[rng_pptr++]=z.charCodeAt(t)&255}for(;rng_pptr<rng_psize;)t=Math.floor(65536*Math.random()),rng_pool[rng_pptr++]=t>>>8,rng_pool[rng_pptr++]=t&255;rng_pptr=0;rng_seed_time()}function rng_get_byte(){if(null==rng_state){rng_seed_time();rng_state=prng_newstate();rng_state.init(rng_pool);for(rng_pptr=0;rng_pptr<rng_pool.length;++rng_pptr)rng_pool[rng_pptr]=0;rng_pptr=0}return rng_state.next()}function rng_get_bytes(t){var e;for(e=0;e<t.length;++e)t[e]=rng_get_byte()}function SecureRandom(){}SecureRandom.prototype.nextBytes=rng_get_bytes;var KJUR={};"undefined"!=typeof KJUR.crypto&&KJUR.crypto||(KJUR.crypto={});KJUR.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:"3021300906052b0e03021a05000414",sha224:"302d300d06096086480165030402040500041c",sha256:"3031300d060960864801650304020105000420",sha384:"3041300d060960864801650304020205000430",sha512:"3051300d060960864801650304020305000440",md2:"3020300c06082a864886f70d020205000410",md5:"3020300c06082a864886f70d020505000410",ripemd160:"3021300906052b2403020105000414"};this.DEFAULTPROVIDER={md5:"cryptojs",sha1:"cryptojs",sha224:"cryptojs",sha256:"cryptojs",sha384:"cryptojs",sha512:"cryptojs",ripemd160:"cryptojs",hmacmd5:"cryptojs",hmacsha1:"cryptojs",hmacsha224:"cryptojs",hmacsha256:"cryptojs",hmacsha384:"cryptojs",hmacsha512:"cryptojs",hmacripemd160:"cryptojs",sm3:"cryptojs",MD5withRSA:"cryptojs/jsrsa",SHA1withRSA:"cryptojs/jsrsa",SHA224withRSA:"cryptojs/jsrsa",SHA256withRSA:"cryptojs/jsrsa",SHA384withRSA:"cryptojs/jsrsa",SHA512withRSA:"cryptojs/jsrsa",RIPEMD160withRSA:"cryptojs/jsrsa",MD5withECDSA:"cryptojs/jsrsa",SHA1withECDSA:"cryptojs/jsrsa",SHA224withECDSA:"cryptojs/jsrsa",SHA256withECDSA:"cryptojs/jsrsa",SHA384withECDSA:"cryptojs/jsrsa",SHA512withECDSA:"cryptojs/jsrsa",RIPEMD160withECDSA:"cryptojs/jsrsa",SHA1withDSA:"cryptojs/jsrsa",SHA224withDSA:"cryptojs/jsrsa",SHA256withDSA:"cryptojs/jsrsa",MD5withRSAandMGF1:"cryptojs/jsrsa",SHA1withRSAandMGF1:"cryptojs/jsrsa",SHA224withRSAandMGF1:"cryptojs/jsrsa",SHA256withRSAandMGF1:"cryptojs/jsrsa",SHA384withRSAandMGF1:"cryptojs/jsrsa",SHA512withRSAandMGF1:"cryptojs/jsrsa",RIPEMD160withRSAandMGF1:"cryptojs/jsrsa"};this.CRYPTOJSMESSAGEDIGESTNAME={md5:"CryptoJS.algo.MD5",sha1:"CryptoJS.algo.SHA1",sha224:"CryptoJS.algo.SHA224",sha256:"CryptoJS.algo.SHA256",sha384:"CryptoJS.algo.SHA384",sha512:"CryptoJS.algo.SHA512",ripemd160:"CryptoJS.algo.RIPEMD160",sm3:"CryptoJS.algo.SM3"};this.getDigestInfoHex=function(t,e){if("undefined"==typeof this.DIGESTINFOHEAD[e])throw"alg not supported in Util.DIGESTINFOHEAD: "+e;return this.DIGESTINFOHEAD[e]+t};this.getPaddedDigestInfoHex=function(t,e,i){var r=this.getDigestInfoHex(t,e);t=i/4;if(r.length+22>t)throw"key is too short for SigAlg: keylen="+i+","+e;e="00"+r;i="";t=t-4-e.length;for(r=0;r<t;r+=2)i+="ff";return"0001"+i+e};this.hashString=function(t,e){return new KJUR.crypto.MessageDigest({alg:e}).digestString(t)};this.hashHex=function(t,e){return new KJUR.crypto.MessageDigest({alg:e}).digestHex(t)};this.sha1=function(t){return new KJUR.crypto.MessageDigest({alg:"sha1",prov:"cryptojs"}).digestString(t)};this.sha256=function(t){return new KJUR.crypto.MessageDigest({alg:"sha256",prov:"cryptojs"}).digestString(t)};this.sha256Hex=function(t){return new KJUR.crypto.MessageDigest({alg:"sha256",prov:"cryptojs"}).digestHex(t)};this.sha512=function(t){return new KJUR.crypto.MessageDigest({alg:"sha512",prov:"cryptojs"}).digestString(t)};this.sha512Hex=function(t){return new KJUR.crypto.MessageDigest({alg:"sha512",prov:"cryptojs"}).digestHex(t)};this.md5=function(t){return new KJUR.crypto.MessageDigest({alg:"md5",prov:"cryptojs"}).digestString(t)};this.ripemd160=function(t){return new KJUR.crypto.MessageDigest({alg:"ripemd160",prov:"cryptojs"}).digestString(t)};this.getCryptoJSMDByName=function(t){}};KJUR.crypto.MessageDigest=function(a){this.setAlgAndProvider=function(a,c){null!=a&&void 0===c&&(c=KJUR.crypto.Util.DEFAULTPROVIDER[a]);if(-1!=":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:sm3:".indexOf(a)&&"cryptojs"==c){try{this.md=eval(KJUR.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[a]).create()}catch(d){throw"setAlgAndProvider hash alg set fail alg="+a+"/"+d}this.updateString=function(t){this.md.update(t)};this.updateHex=function(t){t=CryptoJS.enc.Hex.parse(t);this.md.update(t)};this.digest=function(){return this.md.finalize().toString(CryptoJS.enc.Hex)};this.digestString=function(t){this.updateString(t);return this.digest()};this.digestHex=function(t){this.updateHex(t);return this.digest()}}if(-1!=":sha256:".indexOf(a)&&"sjcl"==c){try{this.md=new sjcl.hash.sha256}catch(d){throw"setAlgAndProvider hash alg set fail alg="+a+"/"+d}this.updateString=function(t){this.md.update(t)};this.updateHex=function(t){t=sjcl.codec.hex.toBits(t);this.md.update(t)};this.digest=function(){var t=this.md.finalize();return sjcl.codec.hex.fromBits(t)};this.digestString=function(t){this.updateString(t);return this.digest()};this.digestHex=function(t){this.updateHex(t);return this.digest()}}};this.updateString=function(t){throw"updateString(str) not supported for this alg/prov: "+this.algName+"/"+this.provName};this.updateHex=function(t){throw"updateHex(hex) not supported for this alg/prov: "+this.algName+"/"+this.provName};this.digest=function(){throw"digest() not supported for this alg/prov: "+this.algName+"/"+this.provName};this.digestString=function(t){throw"digestString(str) not supported for this alg/prov: "+this.algName+"/"+this.provName};this.digestHex=function(t){throw"digestHex(hex) not supported for this alg/prov: "+this.algName+"/"+this.provName};void 0!==a&&void 0!==a.alg&&(this.algName=a.alg,void 0===a.prov&&(this.provName=KJUR.crypto.Util.DEFAULTPROVIDER[this.algName]),this.setAlgAndProvider(this.algName,this.provName))};KJUR.crypto.Mac=function(a){this.setAlgAndProvider=function(a,c){null==a&&(a="hmacsha1");a=a.toLowerCase();if("hmac"!=a.substr(0,4))throw"setAlgAndProvider unsupported HMAC alg: "+a;void 0===c&&(c=KJUR.crypto.Util.DEFAULTPROVIDER[a]);this.algProv=a+"/"+c;var d=a.substr(4);if(-1!=":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:".indexOf(d)&&"cryptojs"==c){try{var e=eval(KJUR.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[d]);this.mac=CryptoJS.algo.HMAC.create(e,this.pass)}catch(f){throw"setAlgAndProvider hash alg set fail hashAlg="+d+"/"+f}this.updateString=function(t){this.mac.update(t)};this.updateHex=function(t){t=CryptoJS.enc.Hex.parse(t);this.mac.update(t)};this.doFinal=function(){return this.mac.finalize().toString(CryptoJS.enc.Hex)};this.doFinalString=function(t){this.updateString(t);return this.doFinal()};this.doFinalHex=function(t){this.updateHex(t);return this.doFinal()}}};this.updateString=function(t){throw"updateString(str) not supported for this alg/prov: "+this.algProv};this.updateHex=function(t){throw"updateHex(hex) not supported for this alg/prov: "+this.algProv};this.doFinal=function(){throw"digest() not supported for this alg/prov: "+this.algProv};this.doFinalString=function(t){throw"digestString(str) not supported for this alg/prov: "+this.algProv};this.doFinalHex=function(t){throw"digestHex(hex) not supported for this alg/prov: "+this.algProv};void 0!==a&&(void 0!==a.pass&&(this.pass=a.pass),void 0!==a.alg&&(this.algName=a.alg,void 0===a.prov&&(this.provName=KJUR.crypto.Util.DEFAULTPROVIDER[this.algName]),this.setAlgAndProvider(this.algName,this.provName)))};KJUR.crypto.Signature=function(t){var e=null;this._setAlgNames=function(){this.algName.match(/^(.+)with(.+)$/)&&(this.mdAlgName=RegExp.$1.toLowerCase(),this.pubkeyAlgName=RegExp.$2.toLowerCase())};this._zeroPaddingOfSignature=function(t,e){for(var i="",r=e/4-t.length,n=0;n<r;n++)i+="0";return i+t};this.setAlgAndProvider=function(t,e){this._setAlgNames();if("cryptojs/jsrsa"!=e)throw"provider not supported: "+e;if(-1!=":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:sm3:".indexOf(this.mdAlgName)){try{this.md=new KJUR.crypto.MessageDigest({alg:this.mdAlgName})}catch(t){throw"setAlgAndProvider hash alg set fail alg="+this.mdAlgName+"/"+t}this.init=function(t,e){var i=null;try{i=void 0===e?KEYUTIL.getKey(t):KEYUTIL.getKey(t,e)}catch(t){throw"init failed:"+t}if(!0===i.isPrivate)this.prvKey=i,this.state="SIGN";else if(!0===i.isPublic)this.pubKey=i,this.state="VERIFY";else throw"init failed.:"+i};this.initSign=function(t){"string"==typeof t.ecprvhex&&"string"==typeof t.eccurvename?(this.ecprvhex=t.ecprvhex,this.eccurvename=t.eccurvename):this.prvKey=t;this.state="SIGN"};this.initVerifyByPublicKey=function(t){"string"==typeof t.ecpubhex&&"string"==typeof t.eccurvename?(this.ecpubhex=t.ecpubhex,this.eccurvename=t.eccurvename):t instanceof KJUR.crypto.ECDSA?this.pubKey=t:t instanceof RSAKey&&(this.pubKey=t);this.state="VERIFY"};this.initVerifyByCertificatePEM=function(t){var e=new X509;e.readCertPEM(t);this.pubKey=e.subjectPublicKeyRSA;this.state="VERIFY"};this.updateString=function(t){this.md.updateString(t)};this.updateHex=function(t){this.md.updateHex(t)};this.sign=function(){"sm2"!=this.eccurvename&&(this.sHashHex=this.md.digest());if("undefined"!=typeof this.ecprvhex&&"undefined"!=typeof this.eccurvename){if("sm2"==this.eccurvename){var t=new KJUR.crypto.SM3withSM2({curve:this.eccurvename}),e=t.ecparams.G,i=e.multiply(new BigInteger(this.ecprvhex,16)),r=i.getX().toBigInteger().toRadix(16)+i.getY().toBigInteger().toRadix(16),i=new SM3Digest,e=(new SM3Digest).GetZ(e,r),e=i.GetWords(i.GetHex(e).toString()),r=CryptoJS.enc.Utf8.stringify(this.md.md._data),r=CryptoJS.enc.Utf8.parse(r).toString(),r=i.GetWords(r),n=Array(i.GetDigestSize());i.BlockUpdate(e,0,e.length);i.BlockUpdate(r,0,r.length);i.DoFinal(n,0);this.sHashHex=i.GetHex(n).toString()}else t=new KJUR.crypto.ECDSA({curve:this.eccurvename});this.hSign=t.signHex(this.sHashHex,this.ecprvhex)}else if("rsaandmgf1"==this.pubkeyAlgName)this.hSign=this.prvKey.signWithMessageHashPSS(this.sHashHex,this.mdAlgName,this.pssSaltLen);else if("rsa"==this.pubkeyAlgName)this.hSign=this.prvKey.signWithMessageHash(this.sHashHex,this.mdAlgName);else if(this.prvKey instanceof KJUR.crypto.ECDSA)this.hSign=this.prvKey.signWithMessageHash(this.sHashHex);else if(this.prvKey instanceof KJUR.crypto.DSA)this.hSign=this.prvKey.signWithMessageHash(this.sHashHex);else throw"Signature: unsupported public key alg: "+this.pubkeyAlgName;return this.hSign};this.signString=function(t){this.updateString(t);this.sign()};this.signHex=function(t){this.updateHex(t);this.sign()};this.verify=function(t){"sm2"!=this.eccurvename&&(this.sHashHex=this.md.digest());if("undefined"!=typeof this.ecpubhex&&"undefined"!=typeof this.eccurvename){if("sm2"==this.eccurvename){var e=new KJUR.crypto.SM3withSM2({curve:this.eccurvename}),i=e.ecparams.G,r=this.ecpubhex.substr(2,128),n=new SM3Digest,i=(new SM3Digest).GetZ(i,r),i=n.GetWords(n.GetHex(i).toString()),r=CryptoJS.enc.Utf8.stringify(this.md.md._data),r=CryptoJS.enc.Utf8.parse(r).toString(),r=n.GetWords(r),s=Array(n.GetDigestSize());n.BlockUpdate(i,0,i.length);n.BlockUpdate(r,0,r.length);n.DoFinal(s,0);this.sHashHex=n.GetHex(s).toString()}else e=new KJUR.crypto.ECDSA({curve:this.eccurvename});return e.verifyHex(this.sHashHex,t,this.ecpubhex)}if("rsaandmgf1"==this.pubkeyAlgName)return this.pubKey.verifyWithMessageHashPSS(this.sHashHex,t,this.mdAlgName,this.pssSaltLen);if("rsa"==this.pubkeyAlgName||this.pubKey instanceof KJUR.crypto.ECDSA||this.pubKey instanceof KJUR.crypto.DSA)return this.pubKey.verifyWithMessageHash(this.sHashHex,t);throw"Signature: unsupported public key alg: "+this.pubkeyAlgName}}};this.init=function(t,e){throw"init(key, pass) not supported for this alg:prov="+this.algProvName};this.initVerifyByPublicKey=function(t){throw"initVerifyByPublicKey(rsaPubKeyy) not supported for this alg:prov="+this.algProvName};this.initVerifyByCertificatePEM=function(t){throw"initVerifyByCertificatePEM(certPEM) not supported for this alg:prov="+this.algProvName};this.initSign=function(t){throw"initSign(prvKey) not supported for this alg:prov="+this.algProvName};this.updateString=function(t){throw"updateString(str) not supported for this alg:prov="+this.algProvName};this.updateHex=function(t){throw"updateHex(hex) not supported for this alg:prov="+this.algProvName};this.sign=function(){throw"sign() not supported for this alg:prov="+this.algProvName};this.signString=function(t){throw"digestString(str) not supported for this alg:prov="+this.algProvName};this.signHex=function(t){throw"digestHex(hex) not supported for this alg:prov="+this.algProvName};this.verify=function(t){throw"verify(hSigVal) not supported for this alg:prov="+this.algProvName};this.initParams=t;if(void 0!==t&&(void 0!==t.alg&&(this.algName=t.alg,this.provName=void 0===t.prov?KJUR.crypto.Util.DEFAULTPROVIDER[this.algName]:t.prov,this.algProvName=this.algName+":"+this.provName,this.setAlgAndProvider(this.algName,this.provName),this._setAlgNames()),void 0!==t.psssaltlen&&(this.pssSaltLen=t.psssaltlen),void 0!==t.prvkeypem)){if(void 0!==t.prvkeypas)throw"both prvkeypem and prvkeypas parameters not supported";try{e=new RSAKey,e.readPrivateKeyFromPEMString(t.prvkeypem),this.initSign(e)}catch(t){throw"fatal error to load pem private key: "+t}}};KJUR.crypto.OID=new function(){this.oidhex2name={"2a864886f70d010101":"rsaEncryption","2a8648ce3d0201":"ecPublicKey","2a8648ce380401":"dsa","2a8648ce3d030107":"secp256r1","2b8104001f":"secp192k1","2b81040021":"secp224r1","2b8104000a":"secp256k1","2b81040023":"secp521r1","2b81040022":"secp384r1","2a8648ce380403":"SHA1withDSA","608648016503040301":"SHA224withDSA","608648016503040302":"SHA256withDSA"}};function ECFieldElementFp(t,e){this.x=e;this.q=t}function feFpEquals(t){return t==this?!0:this.q.equals(t.q)&&this.x.equals(t.x)}function feFpToBigInteger(){return this.x}function feFpNegate(){return new ECFieldElementFp(this.q,this.x.negate().mod(this.q))}function feFpAdd(t){return new ECFieldElementFp(this.q,this.x.add(t.toBigInteger()).mod(this.q))}function feFpSubtract(t){return new ECFieldElementFp(this.q,this.x.subtract(t.toBigInteger()).mod(this.q))}function feFpMultiply(t){return new ECFieldElementFp(this.q,this.x.multiply(t.toBigInteger()).mod(this.q))}function feFpSquare(){return new ECFieldElementFp(this.q,this.x.square().mod(this.q))}function feFpDivide(t){return new ECFieldElementFp(this.q,this.x.multiply(t.toBigInteger().modInverse(this.q)).mod(this.q))}ECFieldElementFp.prototype.equals=feFpEquals;ECFieldElementFp.prototype.toBigInteger=feFpToBigInteger;ECFieldElementFp.prototype.negate=feFpNegate;ECFieldElementFp.prototype.add=feFpAdd;ECFieldElementFp.prototype.subtract=feFpSubtract;ECFieldElementFp.prototype.multiply=feFpMultiply;ECFieldElementFp.prototype.square=feFpSquare;ECFieldElementFp.prototype.divide=feFpDivide;function ECPointFp(t,e,i,r){this.curve=t;this.x=e;this.y=i;this.z=null==r?BigInteger.ONE:r;this.zinv=null}function pointFpGetX(){null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q));return this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))}function pointFpGetY(){null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q));return this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))}function pointFpEquals(t){return t==this?!0:this.isInfinity()?t.isInfinity():t.isInfinity()?this.isInfinity():t.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(BigInteger.ZERO)?t.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(BigInteger.ZERO):!1}function pointFpIsInfinity(){return null==this.x&&null==this.y?!0:this.z.equals(BigInteger.ZERO)&&!this.y.toBigInteger().equals(BigInteger.ZERO)}function pointFpNegate(){return new ECPointFp(this.curve,this.x,this.y.negate(),this.z)}function pointFpAdd(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(t.z)).mod(this.curve.q),i=t.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(t.z)).mod(this.curve.q);if(BigInteger.ZERO.equals(i))return BigInteger.ZERO.equals(e)?this.twice():this.curve.getInfinity();var r=new BigInteger("3"),n=this.x.toBigInteger(),s=this.y.toBigInteger();t.x.toBigInteger();t.y.toBigInteger();var o=i.square(),h=o.multiply(i),n=n.multiply(o),o=e.square().multiply(this.z),i=o.subtract(n.shiftLeft(1)).multiply(t.z).subtract(h).multiply(i).mod(this.curve.q),e=n.multiply(r).multiply(e).subtract(s.multiply(h)).subtract(o.multiply(e)).multiply(t.z).add(e.multiply(h)).mod(this.curve.q);t=h.multiply(this.z).multiply(t.z).mod(this.curve.q);return new ECPointFp(this.curve,this.curve.fromBigInteger(i),this.curve.fromBigInteger(e),t)}function pointFpTwice(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var t=new BigInteger("3"),e=this.x.toBigInteger(),i=this.y.toBigInteger(),r=i.multiply(this.z),n=r.multiply(i).mod(this.curve.q),i=this.curve.a.toBigInteger(),s=e.square().multiply(t);BigInteger.ZERO.equals(i)||(s=s.add(this.z.square().multiply(i)));s=s.mod(this.curve.q);i=s.square().subtract(e.shiftLeft(3).multiply(n)).shiftLeft(1).multiply(r).mod(this.curve.q);t=s.multiply(t).multiply(e).subtract(n.shiftLeft(1)).shiftLeft(2).multiply(n).subtract(s.square().multiply(s)).mod(this.curve.q);r=r.square().multiply(r).shiftLeft(3).mod(this.curve.q);return new ECPointFp(this.curve,this.curve.fromBigInteger(i),this.curve.fromBigInteger(t),r)}function pointFpMultiply(t){if(this.isInfinity())return this;if(0==t.signum())return this.curve.getInfinity();var e=t.multiply(new BigInteger("3")),i=this.negate(),r=this,n;for(n=e.bitLength()-2;0<n;--n){var r=r.twice(),s=e.testBit(n),o=t.testBit(n);s!=o&&(r=r.add(s?this:i))}return r}function pointFpMultiplyTwo(t,e,i){var r;r=t.bitLength()>i.bitLength()?t.bitLength()-1:i.bitLength()-1;for(var n=this.curve.getInfinity(),s=this.add(e);0<=r;)n=n.twice(),t.testBit(r)?n=i.testBit(r)?n.add(s):n.add(this):i.testBit(r)&&(n=n.add(e)),--r;return n}ECPointFp.prototype.getX=pointFpGetX;ECPointFp.prototype.getY=pointFpGetY;ECPointFp.prototype.equals=pointFpEquals;ECPointFp.prototype.isInfinity=pointFpIsInfinity;ECPointFp.prototype.negate=pointFpNegate;ECPointFp.prototype.add=pointFpAdd;ECPointFp.prototype.twice=pointFpTwice;ECPointFp.prototype.multiply=pointFpMultiply;ECPointFp.prototype.multiplyTwo=pointFpMultiplyTwo;function ECCurveFp(t,e,i){this.q=t;this.a=this.fromBigInteger(e);this.b=this.fromBigInteger(i);this.infinity=new ECPointFp(this,null,null)}function curveFpGetQ(){return this.q}function curveFpGetA(){return this.a}function curveFpGetB(){return this.b}function curveFpEquals(t){return t==this?!0:this.q.equals(t.q)&&this.a.equals(t.a)&&this.b.equals(t.b)}function curveFpGetInfinity(){return this.infinity}function curveFpFromBigInteger(t){return new ECFieldElementFp(this.q,t)}function curveFpDecodePointHex(t){switch(parseInt(t.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:return null;case 4:case 6:case 7:var e=(t.length-2)/2,i=t.substr(2,e);t=t.substr(e+2,e);return new ECPointFp(this,this.fromBigInteger(new BigInteger(i,16)),this.fromBigInteger(new BigInteger(t,16)));default:return null}}ECCurveFp.prototype.getQ=curveFpGetQ;ECCurveFp.prototype.getA=curveFpGetA;ECCurveFp.prototype.getB=curveFpGetB;ECCurveFp.prototype.equals=curveFpEquals;ECCurveFp.prototype.getInfinity=curveFpGetInfinity;ECCurveFp.prototype.fromBigInteger=curveFpFromBigInteger;ECCurveFp.prototype.decodePointHex=curveFpDecodePointHex;ECFieldElementFp.prototype.getByteLength=function(){return Math.floor((this.toBigInteger().bitLength()+7)/8)};ECPointFp.prototype.getEncoded=function(t){var e=function(t,e){var i=t.toByteArrayUnsigned();if(e<i.length)i=i.slice(i.length-e);else for(;e>i.length;)i.unshift(0);return i},i=this.getX().toBigInteger(),r=this.getY().toBigInteger(),i=e(i,32);t?r.isEven()?i.unshift(2):i.unshift(3):(i.unshift(4),i=i.concat(e(r,32)));return i};ECPointFp.decodeFrom=function(t,e){var i=e.length-1,r=e.slice(1,1+i/2),i=e.slice(1+i/2,1+i);r.unshift(0);i.unshift(0);r=new BigInteger(r);i=new BigInteger(i);return new ECPointFp(t,t.fromBigInteger(r),t.fromBigInteger(i))};ECPointFp.decodeFromHex=function(t,e){e.substr(0,2);var i=e.length-2,r=e.substr(2,i/2),i=e.substr(2+i/2,i/2),r=new BigInteger(r,16),i=new BigInteger(i,16);return new ECPointFp(t,t.fromBigInteger(r),t.fromBigInteger(i))};ECPointFp.prototype.add2D=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;if(this.x.equals(t.x))return this.y.equals(t.y)?this.twice():this.curve.getInfinity();var e=t.x.subtract(this.x),e=t.y.subtract(this.y).divide(e);t=e.square().subtract(this.x).subtract(t.x);e=e.multiply(this.x.subtract(t)).subtract(this.y);return new ECPointFp(this.curve,t,e)};ECPointFp.prototype.twice2D=function(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var t=this.curve.fromBigInteger(BigInteger.valueOf(2)),e=this.curve.fromBigInteger(BigInteger.valueOf(3)),e=this.x.square().multiply(e).add(this.curve.a).divide(this.y.multiply(t)),t=e.square().subtract(this.x.multiply(t)),e=e.multiply(this.x.subtract(t)).subtract(this.y);return new ECPointFp(this.curve,t,e)};ECPointFp.prototype.multiply2D=function(t){if(this.isInfinity())return this;if(0==t.signum())return this.curve.getInfinity();var e=t.multiply(new BigInteger("3")),i=this.negate(),r=this,n;for(n=e.bitLength()-2;0<n;--n){var r=r.twice(),s=e.testBit(n),o=t.testBit(n);s!=o&&(r=r.add2D(s?this:i))}return r};ECPointFp.prototype.isOnCurve=function(){var t=this.getX().toBigInteger(),e=this.getY().toBigInteger(),i=this.curve.getA().toBigInteger(),r=this.curve.getB().toBigInteger(),n=this.curve.getQ(),e=e.multiply(e).mod(n),t=t.multiply(t).multiply(t).add(i.multiply(t)).add(r).mod(n);return e.equals(t)};ECPointFp.prototype.toString=function(){return"("+this.getX().toBigInteger().toString()+","+this.getY().toBigInteger().toString()+")"};ECPointFp.prototype.validate=function(){var t=this.curve.getQ();if(this.isInfinity())throw Error("Point is at infinity.");var e=this.getX().toBigInteger(),i=this.getY().toBigInteger();if(0>e.compareTo(BigInteger.ONE)||0<e.compareTo(t.subtract(BigInteger.ONE)))throw Error("x coordinate out of bounds");if(0>i.compareTo(BigInteger.ONE)||0<i.compareTo(t.subtract(BigInteger.ONE)))throw Error("y coordinate out of bounds");if(!this.isOnCurve())throw Error("Point is not on the curve.");if(this.multiply(t).isInfinity())throw Error("Point is not a scalar multiple of G.");return!0};"undefined"!=typeof KJUR&&KJUR||(KJUR={});"undefined"!=typeof KJUR.crypto&&KJUR.crypto||(KJUR.crypto={});KJUR.crypto.ECDSA=function(t){var e=new SecureRandom;this.type="EC";this.getBigRandom=function(t){return new BigInteger(t.bitLength(),e).mod(t.subtract(BigInteger.ONE)).add(BigInteger.ONE)};this.setNamedCurve=function(t){this.ecparams=KJUR.crypto.ECParameterDB.getByName(t);this.pubKeyHex=this.prvKeyHex=null;this.curveName=t};this.setPrivateKeyHex=function(t){this.isPrivate=!0;this.prvKeyHex=t};this.setPublicKeyHex=function(t){this.isPublic=!0;this.pubKeyHex=t};this.generateKeyPairHex=function(){var t=this.getBigRandom(this.ecparams.n),e=this.ecparams.G.multiply(t),i=e.getX().toBigInteger(),e=e.getY().toBigInteger(),r=this.ecparams.keylen/4,t=("0000000000"+t.toString(16)).slice(-r),i=("0000000000"+i.toString(16)).slice(-r),e=("0000000000"+e.toString(16)).slice(-r),i="04"+i+e;this.setPrivateKeyHex(t);this.setPublicKeyHex(i);return{ecprvhex:t,ecpubhex:i}};this.signWithMessageHash=function(t){return this.signHex(t,this.prvKeyHex)};this.signHex=function(t,e){var i=new BigInteger(e,16),r=this.ecparams.n,n=new BigInteger(t,16);do{var s=this.getBigRandom(r),o=this.ecparams.G.multiply(s).getX().toBigInteger().mod(r)}while(0>=o.compareTo(BigInteger.ZERO));i=s.modInverse(r).multiply(n.add(i.multiply(o))).mod(r);return KJUR.crypto.ECDSA.biRSSigToASN1Sig(o,i)};this.sign=function(t,e){var i=this.ecparams.n,r=BigInteger.fromByteArrayUnsigned(t);do{var n=this.getBigRandom(i),s=this.ecparams.G.multiply(n).getX().toBigInteger().mod(i)}while(0>=s.compareTo(BigInteger.ZERO));i=n.modInverse(i).multiply(r.add(e.multiply(s))).mod(i);return this.serializeSig(s,i)};this.verifyWithMessageHash=function(t,e){return this.verifyHex(t,e,this.pubKeyHex)};this.verifyHex=function(t,e,i){var r;r=KJUR.crypto.ECDSA.parseSigHex(e);e=r.r;r=r.s;i=ECPointFp.decodeFromHex(this.ecparams.curve,i);t=new BigInteger(t,16);return this.verifyRaw(t,e,r,i)};this.verify=function(t,e,i){var r;if(Bitcoin.Util.isArray(e))e=this.parseSig(e),r=e.r,e=e.s;else if("object"===typeof e&&e.r&&e.s)r=e.r,e=e.s;else throw"Invalid value for signature";if(!(i instanceof ECPointFp))if(Bitcoin.Util.isArray(i))i=ECPointFp.decodeFrom(this.ecparams.curve,i);else throw"Invalid format for pubkey value, must be byte array or ECPointFp";t=BigInteger.fromByteArrayUnsigned(t);return this.verifyRaw(t,r,e,i)};this.verifyRaw=function(t,e,i,r){var n=this.ecparams.n,s=this.ecparams.G;if(0>e.compareTo(BigInteger.ONE)||0<=e.compareTo(n)||0>i.compareTo(BigInteger.ONE)||0<=i.compareTo(n))return!1;i=i.modInverse(n);t=t.multiply(i).mod(n);i=e.multiply(i).mod(n);return s.multiply(t).add(r.multiply(i)).getX().toBigInteger().mod(n).equals(e)};this.serializeSig=function(t,e){var i=t.toByteArraySigned(),r=e.toByteArraySigned(),n=[];n.push(2);n.push(i.length);n=n.concat(i);n.push(2);n.push(r.length);n=n.concat(r);n.unshift(n.length);n.unshift(48);return n};this.parseSig=function(t){var e;if(48!=t[0])throw Error("Signature not a valid DERSequence");e=2;if(2!=t[e])throw Error("First element in signature must be a DERInteger");var i=t.slice(e+2,e+2+t[e+1]);e+=2+t[e+1];if(2!=t[e])throw Error("Second element in signature must be a DERInteger");t=t.slice(e+2,e+2+t[e+1]);i=BigInteger.fromByteArrayUnsigned(i);t=BigInteger.fromByteArrayUnsigned(t);return{r:i,s:t}};this.parseSigCompact=function(t){if(65!==t.length)throw"Signature has the wrong length";var e=t[0]-27;if(0>e||7<e)throw"Invalid signature type";var i=this.ecparams.n,r=BigInteger.fromByteArrayUnsigned(t.slice(1,33)).mod(i);t=BigInteger.fromByteArrayUnsigned(t.slice(33,65)).mod(i);return{r:r,s:t,i:e}};void 0!==t&&void 0!==t.curve&&(this.curveName=t.curve);void 0===this.curveName&&(this.curveName="secp256r1");this.setNamedCurve(this.curveName);void 0!==t&&(void 0!==t.prv&&this.setPrivateKeyHex(t.prv),void 0!==t.pub&&this.setPublicKeyHex(t.pub))};KJUR.crypto.ECDSA.parseSigHex=function(t){var e=KJUR.crypto.ECDSA.parseSigHexInHexRS(t);t=new BigInteger(e.r,16);e=new BigInteger(e.s,16);return{r:t,s:e}};KJUR.crypto.ECDSA.parseSigHexInHexRS=function(t){if("30"!=t.substr(0,2))throw"signature is not a ASN.1 sequence";var e=ASN1HEX.getPosArrayOfChildren_AtObj(t,0);if(2!=e.length)throw"number of signature ASN.1 sequence elements seem wrong";var i=e[0],e=e[1];if("02"!=t.substr(i,2))throw"1st item of sequene of signature is not ASN.1 integer";if("02"!=t.substr(e,2))throw"2nd item of sequene of signature is not ASN.1 integer";i=ASN1HEX.getHexOfV_AtObj(t,i);t=ASN1HEX.getHexOfV_AtObj(t,e);return{r:i,s:t}};KJUR.crypto.ECDSA.asn1SigToConcatSig=function(t){var e=KJUR.crypto.ECDSA.parseSigHexInHexRS(t);t=e.r;e=e.s;"00"==t.substr(0,2)&&8==t.length/2*8%128&&(t=t.substr(2));"00"==e.substr(0,2)&&8==e.length/2*8%128&&(e=e.substr(2));if(0!=t.length/2*8%128)throw"unknown ECDSA sig r length error";if(0!=e.length/2*8%128)throw"unknown ECDSA sig s length error";return t+e};KJUR.crypto.ECDSA.concatSigToASN1Sig=function(t){if(0!=t.length/2*8%128)throw"unknown ECDSA concatinated r-s sig  length error";var e=t.substr(0,t.length/2);t=t.substr(t.length/2);return KJUR.crypto.ECDSA.hexRSSigToASN1Sig(e,t)};KJUR.crypto.ECDSA.hexRSSigToASN1Sig=function(t,e){var i=new BigInteger(t,16),r=new BigInteger(e,16);return KJUR.crypto.ECDSA.biRSSigToASN1Sig(i,r)};KJUR.crypto.ECDSA.biRSSigToASN1Sig=function(t,e){var i=new KJUR.asn1.DERInteger({bigint:t}),r=new KJUR.asn1.DERInteger({bigint:e});return new KJUR.asn1.DERSequence({array:[i,r]}).getEncodedHex()};(function(){var t=CryptoJS,e=t.lib,i=e.WordArray,r=e.Hasher,p=[],e=t.algo.SM3=r.extend({_doReset:function(){this._hash=new i.init([1937774191,1226093241,388252375,3666478592,2842636476,372324522,3817729613,2969243214])},_doProcessBlock:function(t,e){for(var i=this._hash.words,r=i[0],n=i[1],s=i[2],o=i[3],h=i[4],F=0;80>F;F++){if(16>F)p[F]=t[e+F]|0;else{var a=p[F-3]^p[F-8]^p[F-14]^p[F-16];p[F]=a<<1|a>>>31}a=(r<<5|r>>>27)+h+p[F];a=20>F?a+((n&s|~n&o)+1518500249):40>F?a+((n^s^o)+1859775393):60>F?a+((n&s|n&o|s&o)-1894007588):a+((n^s^o)-899497514);h=o;o=s;s=n<<30|n>>>2;n=r;r=a}i[0]=i[0]+r|0;i[1]=i[1]+n|0;i[2]=i[2]+s|0;i[3]=i[3]+o|0;i[4]=i[4]+h|0},_doFinalize:function(){var t=this._data,e=t.words,i=8*this._nDataBytes,r=8*t.sigBytes;e[r>>>5]|=128<<24-r%32;e[(r+64>>>9<<4)+14]=Math.floor(i/4294967296);e[(r+64>>>9<<4)+15]=i;t.sigBytes=4*e.length;this._process();return this._hash},clone:function(){var t=r.clone.call(this);t._hash=this._hash.clone();return t}});t.SM3=r._createHelper(e);t.HmacSM3=r._createHmacHelper(e)})();function SM3Digest(){this.BYTE_LENGTH=64;this.xBuf=[];this.byteCount=this.xBufOff=0;this.DIGEST_LENGTH=32;this.v0=[1937774191,1226093241,388252375,3666478592,2842636476,372324522,3817729613,2969243214];this.v0=[1937774191,1226093241,388252375,-628488704,-1452330820,372324522,-477237683,-1325724082];this.v=Array(8);this.v_=Array(8);this.X0=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.X=Array(68);this.xOff=0;this.T_00_15=2043430169;this.T_16_63=2055708042;0<arguments.length?this.InitDigest(arguments[0]):this.Init()}SM3Digest.prototype={Init:function(){this.xBuf=Array(4);this.Reset()},InitDigest:function(t){this.xBuf=Array(t.xBuf.length);Array.Copy(t.xBuf,0,this.xBuf,0,t.xBuf.length);this.xBufOff=t.xBufOff;this.byteCount=t.byteCount;Array.Copy(t.X,0,this.X,0,t.X.length);this.xOff=t.xOff;Array.Copy(t.v,0,this.v,0,t.v.length)},GetDigestSize:function(){return this.DIGEST_LENGTH},Reset:function(){this.xBufOff=this.byteCount=0;Array.Clear(this.xBuf,0,this.xBuf.length);Array.Copy(this.v0,0,this.v,0,this.v0.length);this.xOff=0;Array.Copy(this.X0,0,this.X,0,this.X0.length)},GetByteLength:function(){return this.BYTE_LENGTH},ProcessBlock:function(){var t,e=this.X,i=Array(64);for(t=16;68>t;t++)e[t]=this.P1(e[t-16]^e[t-9]^this.ROTATE(e[t-3],15))^this.ROTATE(e[t-13],7)^e[t-6];for(t=0;64>t;t++)i[t]=e[t]^e[t+4];var r=this.v,n=this.v_;Array.Copy(r,0,n,0,this.v0.length);var s,o;for(t=0;16>t;t++)o=this.ROTATE(n[0],12),s=Int32.parse(Int32.parse(o+n[4])+this.ROTATE(this.T_00_15,t)),s=this.ROTATE(s,7),o^=s,o=Int32.parse(Int32.parse(this.FF_00_15(n[0],n[1],n[2])+n[3])+o)+i[t],s=Int32.parse(Int32.parse(this.GG_00_15(n[4],n[5],n[6])+n[7])+s)+e[t],n[3]=n[2],n[2]=this.ROTATE(n[1],9),n[1]=n[0],n[0]=o,n[7]=n[6],n[6]=this.ROTATE(n[5],19),n[5]=n[4],n[4]=this.P0(s);for(t=16;64>t;t++)o=this.ROTATE(n[0],12),s=Int32.parse(Int32.parse(o+n[4])+this.ROTATE(this.T_16_63,t)),s=this.ROTATE(s,7),o^=s,o=Int32.parse(Int32.parse(this.FF_16_63(n[0],n[1],n[2])+n[3])+o)+i[t],s=Int32.parse(Int32.parse(this.GG_16_63(n[4],n[5],n[6])+n[7])+s)+e[t],n[3]=n[2],n[2]=this.ROTATE(n[1],9),n[1]=n[0],n[0]=o,n[7]=n[6],n[6]=this.ROTATE(n[5],19),n[5]=n[4],n[4]=this.P0(s);for(t=0;8>t;t++)r[t]^=Int32.parse(n[t]);this.xOff=0;Array.Copy(this.X0,0,this.X,0,this.X0.length)},ProcessWord:function(t,e){var i=t[e]<<24,i=i|(t[++e]&255)<<16,i=i|(t[++e]&255)<<8,i=i|t[++e]&255;this.X[this.xOff]=i;16==++this.xOff&&this.ProcessBlock()},ProcessLength:function(t){14<this.xOff&&this.ProcessBlock();this.X[14]=this.URShiftLong(t,32);this.X[15]=t&4294967295},IntToBigEndian:function(t,e,i){e[i]=Int32.parseByte(this.URShift(t,24));e[++i]=Int32.parseByte(this.URShift(t,16));e[++i]=Int32.parseByte(this.URShift(t,8));e[++i]=Int32.parseByte(t)},DoFinal:function(t,e){this.Finish();for(var i=0;8>i;i++)this.IntToBigEndian(this.v[i],t,e+4*i);this.Reset();for(var r=t.length,i=0;i<r;i++)t[i]&=255;return this.DIGEST_LENGTH},Update:function(t){this.xBuf[this.xBufOff++]=t;this.xBufOff==this.xBuf.length&&(this.ProcessWord(this.xBuf,0),this.xBufOff=0);this.byteCount++},BlockUpdate:function(t,e,i){for(;0!=this.xBufOff&&0<i;)this.Update(t[e]),e++,i--;for(;i>this.xBuf.length;)this.ProcessWord(t,e),e+=this.xBuf.length,i-=this.xBuf.length,this.byteCount+=this.xBuf.length;for(;0<i;)this.Update(t[e]),e++,i--},Finish:function(){var t=this.byteCount<<3;for(this.Update(128);0!=this.xBufOff;)this.Update(0);this.ProcessLength(t);this.ProcessBlock()},ROTATE:function(t,e){return t<<e|this.URShift(t,32-e)},P0:function(t){return t^this.ROTATE(t,9)^this.ROTATE(t,17)},P1:function(t){return t^this.ROTATE(t,15)^this.ROTATE(t,23)},FF_00_15:function(t,e,i){return t^e^i},FF_16_63:function(t,e,i){return t&e|t&i|e&i},GG_00_15:function(t,e,i){return t^e^i},GG_16_63:function(t,e,i){return t&e|~t&i},URShift:function(t,e){if(t>Int32.maxValue||t<Int32.minValue)t=Int32.parse(t);return 0<=t?t>>e:(t>>e)+(2<<~e)},URShiftLong:function(t,e){var i;i=new BigInteger;i.fromInt(t);if(0<=i.signum())i=i.shiftRight(e).intValue();else{var r=new BigInteger;r.fromInt(2);var n=~e;i="";if(0>n){r=64+n;for(n=0;n<r;n++)i+="0";r=new BigInteger;r.fromInt(t>>e);i=new BigInteger("10"+i,2);i.toRadix(10);i=i.add(r).toRadix(10)}else i=r.shiftLeft(~e).intValue(),i=(t>>e)+i}return i},GetZ:function(t,e){var i=CryptoJS.enc.Utf8.parse("1234567812345678"),r=32*i.words.length;this.Update(r>>8&255);this.Update(r&255);i=this.GetWords(i.toString());this.BlockUpdate(i,0,i.length);var i=this.GetWords(t.curve.a.toBigInteger().toRadix(16)),r=this.GetWords(t.curve.b.toBigInteger().toRadix(16)),n=this.GetWords(t.getX().toBigInteger().toRadix(16)),s=this.GetWords(t.getY().toBigInteger().toRadix(16)),o=this.GetWords(e.substr(0,64)),h=this.GetWords(e.substr(64,64));this.BlockUpdate(i,0,i.length);this.BlockUpdate(r,0,r.length);this.BlockUpdate(n,0,n.length);this.BlockUpdate(s,0,s.length);this.BlockUpdate(o,0,o.length);this.BlockUpdate(h,0,h.length);i=Array(this.GetDigestSize());this.DoFinal(i,0);return i},GetWords:function(t){for(var e=[],i=t.length,r=0;r<i;r+=2)e[e.length]=parseInt(t.substr(r,2),16);return e},GetHex:function(t){for(var e=[],i=0,r=0;r<2*t.length;r+=2)e[r>>>3]|=parseInt(t[i])<<24-r%8*4,i++;return new CryptoJS.lib.WordArray.init(e,t.length)}};Array.Clear=function(t,e,i){for(var r in t)t[r]=null};Array.Copy=function(t,e,i,r,n){t=t.slice(e,e+n);for(e=0;e<t.length;e++)i[r]=t[e],r++};var Int32={minValue:-parseInt("10000000000000000000000000000000",2),maxValue:2147483647,parse:function(t){if(t<this.minValue){t=new Number(-t);t=t.toString(2);t=t.substr(t.length-31,31);for(var e="",i=0;i<t.length;i++)var r=t.substr(i,1),e=e+("0"==r?"1":"0");t=parseInt(e,2);return t+1}if(t>this.maxValue){t=Number(t);t=t.toString(2);t=t.substr(t.length-31,31);e="";for(i=0;i<t.length;i++)r=t.substr(i,1),e+="0"==r?"1":"0";t=parseInt(e,2);return-(t+1)}return t},parseByte:function(t){if(0>t){t=new Number(-t);t=t.toString(2);t=t.substr(t.length-8,8);for(var e="",i=0;i<t.length;i++)var r=t.substr(i,1),e=e+("0"==r?"1":"0");return parseInt(e,2)+1}return 255<t?(t=Number(t),t=t.toString(2),parseInt(t.substr(t.length-8,8),2)):t}};"undefined"!=typeof KJUR&&KJUR||(KJUR={});"undefined"!=typeof KJUR.crypto&&KJUR.crypto||(KJUR.crypto={});KJUR.crypto.SM3withSM2=function(t){var e=new SecureRandom;this.type="SM2";this.getBigRandom=function(t){return new BigInteger(t.bitLength(),e).mod(t.subtract(BigInteger.ONE)).add(BigInteger.ONE)};this.setNamedCurve=function(t){this.ecparams=KJUR.crypto.ECParameterDB.getByName(t);this.pubKeyHex=this.prvKeyHex=null;this.curveName=t};this.setPrivateKeyHex=function(t){this.isPrivate=!0;this.prvKeyHex=t};this.setPublicKeyHex=function(t){this.isPublic=!0;this.pubKeyHex=t};this.generateKeyPairHex=function(){var t=this.getBigRandom(this.ecparams.n),e=this.ecparams.G.multiply(t),i=e.getX().toBigInteger(),e=e.getY().toBigInteger(),r=this.ecparams.keylen/4,t=("0000000000"+t.toString(16)).slice(-r),i=("0000000000"+i.toString(16)).slice(-r),e=("0000000000"+e.toString(16)).slice(-r),i="04"+i+e;this.setPrivateKeyHex(t);this.setPublicKeyHex(i);return{ecprvhex:t,ecpubhex:i}};this.signWithMessageHash=function(t){return this.signHex(t,this.prvKeyHex)};this.signHex=function(t,e){var i=new BigInteger(e,16),r=this.ecparams.n,n=new BigInteger(t,16),s=null,o=null,h=o=null;do{do{o=this.generateKeyPairHex(),s=new BigInteger(o.ecprvhex,16),o=ECPointFp.decodeFromHex(this.ecparams.curve,o.ecpubhex),o=n.add(o.getX().toBigInteger()),o=o.mod(r)}while(o.equals(BigInteger.ZERO)||o.add(s).equals(r));var F=i.add(BigInteger.ONE),F=F.modInverse(r),h=o.multiply(i),h=s.subtract(h).mod(r),h=F.multiply(h).mod(r)}while(h.equals(BigInteger.ZERO));return KJUR.crypto.ECDSA.biRSSigToASN1Sig(o,h)};this.sign=function(t,e){var i=this.ecparams.n,r=BigInteger.fromByteArrayUnsigned(t);do{var n=this.getBigRandom(i),s=this.ecparams.G.multiply(n).getX().toBigInteger().mod(i)}while(0>=s.compareTo(BigInteger.ZERO));i=n.modInverse(i).multiply(r.add(e.multiply(s))).mod(i);return this.serializeSig(s,i)};this.verifyWithMessageHash=function(t,e){return this.verifyHex(t,e,this.pubKeyHex)};this.verifyHex=function(t,e,i){var r;r=KJUR.crypto.ECDSA.parseSigHex(e);e=r.r;r=r.s;i=ECPointFp.decodeFromHex(this.ecparams.curve,i);t=new BigInteger(t,16);return this.verifyRaw(t,e,r,i)};this.verify=function(t,e,i){var r;if(Bitcoin.Util.isArray(e))e=this.parseSig(e),r=e.r,e=e.s;else if("object"===typeof e&&e.r&&e.s)r=e.r,e=e.s;else throw"Invalid value for signature";if(!(i instanceof ECPointFp))if(Bitcoin.Util.isArray(i))i=ECPointFp.decodeFrom(this.ecparams.curve,i);else throw"Invalid format for pubkey value, must be byte array or ECPointFp";t=BigInteger.fromByteArrayUnsigned(t);return this.verifyRaw(t,r,e,i)};this.verifyRaw=function(t,e,i,r){var n=this.ecparams.n,s=this.ecparams.G,o=e.add(i).mod(n);if(o.equals(BigInteger.ZERO))return!1;i=s.multiply(i);i=i.add(r.multiply(o));t=t.add(i.getX().toBigInteger()).mod(n);return e.equals(t)};this.serializeSig=function(t,e){var i=t.toByteArraySigned(),r=e.toByteArraySigned(),n=[];n.push(2);n.push(i.length);n=n.concat(i);n.push(2);n.push(r.length);n=n.concat(r);n.unshift(n.length);n.unshift(48);return n};this.parseSig=function(t){var e;if(48!=t[0])throw Error("Signature not a valid DERSequence");e=2;if(2!=t[e])throw Error("First element in signature must be a DERInteger");var i=t.slice(e+2,e+2+t[e+1]);e+=2+t[e+1];if(2!=t[e])throw Error("Second element in signature must be a DERInteger");t=t.slice(e+2,e+2+t[e+1]);i=BigInteger.fromByteArrayUnsigned(i);t=BigInteger.fromByteArrayUnsigned(t);return{r:i,s:t}};this.parseSigCompact=function(t){if(65!==t.length)throw"Signature has the wrong length";var e=t[0]-27;if(0>e||7<e)throw"Invalid signature type";var i=this.ecparams.n,r=BigInteger.fromByteArrayUnsigned(t.slice(1,33)).mod(i);t=BigInteger.fromByteArrayUnsigned(t.slice(33,65)).mod(i);return{r:r,s:t,i:e}};void 0!==t&&void 0!==t.curve&&(this.curveName=t.curve);void 0===this.curveName&&(this.curveName="sm2");this.setNamedCurve(this.curveName);void 0!==t&&(void 0!==t.prv&&this.setPrivateKeyHex(t.prv),void 0!==t.pub&&this.setPublicKeyHex(t.pub))};"undefined"!=typeof KJUR&&KJUR||(KJUR={});"undefined"!=typeof KJUR.crypto&&KJUR.crypto||(KJUR.crypto={});KJUR.crypto.ECParameterDB=new function(){var g={},c={};this.getByName=function(t){var e=t;"undefined"!=typeof c[e]&&(e=c[t]);if("undefined"!=typeof g[e])return g[e];throw"unregistered EC curve name: "+e};this.regist=function(t,e,i,r,n,s,o,h,F,a,p,u){g[t]={};i=new BigInteger(i,16);r=new BigInteger(r,16);n=new BigInteger(n,16);s=new BigInteger(s,16);o=new BigInteger(o,16);i=new ECCurveFp(i,r,n);h=i.decodePointHex("04"+h+F);g[t].name=t;g[t].keylen=e;g[t].curve=i;g[t].G=h;g[t].n=s;g[t].h=o;g[t].oid=p;g[t].info=u;for(e=0;e<a.length;e++)c[a[e]]=t}};KJUR.crypto.ECParameterDB.regist("secp128r1",128,"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF","FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC","E87579C11079F43DD824993C2CEE5ED3","FFFFFFFE0000000075A30D1B9038A115","1","161FF7528B899B2D0C28607CA52C5B86","CF5AC8395BAFEB13C02DA292DDED7A83",[],"","secp128r1 : SECG curve over a 128 bit prime field");KJUR.crypto.ECParameterDB.regist("secp160k1",160,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73","0","7","0100000000000000000001B8FA16DFAB9ACA16B6B3","1","3B4C382CE37AA192A4019E763036F4F5DD4D7EBB","938CF935318FDCED6BC28286531733C3F03C4FEE",[],"","secp160k1 : SECG curve over a 160 bit prime field");KJUR.crypto.ECParameterDB.regist("secp160r1",160,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF","FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC","1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45","0100000000000000000001F4C8F927AED3CA752257","1","4A96B5688EF573284664698968C38BB913CBFC82","23A628553168947D59DCC912042351377AC5FB32",[],"","secp160r1 : SECG curve over a 160 bit prime field");KJUR.crypto.ECParameterDB.regist("secp192k1",192,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37","0","3","FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D","1","DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D","9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D",[]);KJUR.crypto.ECParameterDB.regist("secp192r1",192,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF","FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC","64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1","FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831","1","188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012","07192B95FFC8DA78631011ED6B24CDD573F977A11E794811",[]);KJUR.crypto.ECParameterDB.regist("secp224r1",224,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001","FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE","B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4","FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D","1","B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21","BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34",[]);KJUR.crypto.ECParameterDB.regist("secp256k1",256,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F","0","7","FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141","1","79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798","483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8",[]);KJUR.crypto.ECParameterDB.regist("secp256r1",256,"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF","FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC","5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B","FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551","1","6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296","4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5",["NIST P-256","P-256","prime256v1"]);KJUR.crypto.ECParameterDB.regist("secp384r1",384,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF","FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC","B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF","FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973","1","AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7","3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f",["NIST P-384","P-384"]);KJUR.crypto.ECParameterDB.regist("secp521r1",521,"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF","1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC","051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00","1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409","1","C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66","011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650",["NIST P-521","P-521"]);KJUR.crypto.ECParameterDB.regist("sm2",256,"FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF","FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC","28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93","FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123","1","32C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7","BC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0",["sm2","SM2"]);SM2Cipher.prototype={Reset:function(){this.sm3keybase=new SM3Digest;this.sm3c3=new SM3Digest;for(var t=this.p2.getX().toBigInteger().toRadix(16);64>t.length;)t="0"+t;for(var t=this.GetWords(t),e=this.p2.getY().toBigInteger().toRadix(16);64>e.length;)e="0"+e;e=this.GetWords(e);this.sm3keybase.BlockUpdate(t,0,t.length);this.sm3c3.BlockUpdate(t,0,t.length);this.sm3keybase.BlockUpdate(e,0,e.length);this.ct=1;this.NextKey()},NextKey:function(){var t=new SM3Digest(this.sm3keybase);t.Update(this.ct>>24&255);t.Update(this.ct>>16&255);t.Update(this.ct>>8&255);t.Update(this.ct&255);t.DoFinal(this.key,0);this.keyOff=0;this.ct++},KDF:function(t){var e=Array(t),i=new SM3Digest,r=Array(32),n=1,s=t/32;t%=32;for(var o=this.p2.getX().toBigInteger().toRadix(16);64>o.length;)o="0"+o;for(var o=this.GetWords(o),h=this.p2.getY().toBigInteger().toRadix(16);64>h.length;)h="0"+h;for(var h=this.GetWords(h),F=0,a=0;a<s;a++)i.BlockUpdate(o,0,o.length),i.BlockUpdate(h,0,h.length),i.Update(n>>24&255),i.Update(n>>16&255),i.Update(n>>8&255),i.Update(n&255),i.DoFinal(e,F),F+=32,n++;0!=t&&(i.BlockUpdate(o,0,o.length),i.BlockUpdate(h,0,h.length),i.Update(n>>24&255),i.Update(n>>16&255),i.Update(n>>8&255),i.Update(n&255),i.DoFinal(r,0));Array.Copy(r,0,e,F,t);for(a=0;a<e.length;a++)e[a]&=255;return e},InitEncipher:function(t){var e=null,i=null,i=new KJUR.crypto.ECDSA({curve:"sm2"}),r=i.generateKeyPairHex(),e=new BigInteger(r.ecprvhex,16),i=ECPointFp.decodeFromHex(i.ecparams.curve,r.ecpubhex);this.p2=t.multiply(e);this.Reset();return i},EncryptBlock:function(t){this.sm3c3.BlockUpdate(t,0,t.length);for(var e=this.KDF(t.length),i=0;i<t.length;i++)t[i]^=e[i]},InitDecipher:function(t,e){this.p2=e.multiply(t);this.p2.getX().toBigInteger().toRadix(16);this.p2.getY().toBigInteger().toRadix(16);this.Reset()},DecryptBlock:function(t){for(var e=this.KDF(t.length),i=0,r="",i=0;i<e.length;i++)r+=e[i].toString(16);for(i=0;i<t.length;i++)t[i]^=e[i];this.sm3c3.BlockUpdate(t,0,t.length)},Dofinal:function(t){for(var e=this.p2.getY().toBigInteger().toRadix(16);64>e.length;)e="0"+e;e=this.GetWords(e);this.sm3c3.BlockUpdate(e,0,e.length);this.sm3c3.DoFinal(t,0);this.Reset()},Encrypt:function(t,e){var i=Array(e.length);Array.Copy(e,0,i,0,e.length);var r=this.InitEncipher(t);this.EncryptBlock(i);var n=Array(32);this.Dofinal(n);for(var s=r.getX().toBigInteger().toRadix(16),r=r.getY().toBigInteger().toRadix(16);64>s.length;)s="0"+s;for(;64>r.length;)r="0"+r;s+=r;i=this.GetHex(i).toString();0!=i.length%2&&(i="0"+i);n=this.GetHex(n).toString();r=s+i+n;this.cipherMode==SM2CipherMode.C1C3C2&&(r=s+n+i);return r},GetWords:function(t){for(var e=[],i=t.length,r=0;r<i;r+=2)e[e.length]=parseInt(t.substr(r,2),16);return e},GetHex:function(t){for(var e=[],i=0,r=0;r<2*t.length;r+=2)e[r>>>3]|=parseInt(t[i])<<24-r%8*4,i++;return new CryptoJS.lib.WordArray.init(e,t.length)},Decrypt:function(t,e){var i=e.substr(0,64),r=e.substr(0+i.length,64),n=e.substr(i.length+r.length,e.length-i.length-r.length-64),s=e.substr(e.length-64);this.cipherMode==SM2CipherMode.C1C3C2&&(s=e.substr(i.length+r.length,64),n=e.substr(i.length+r.length+64));n=this.GetWords(n);i=this.CreatePoint(i,r);this.InitDecipher(t,i);this.DecryptBlock(n);i=Array(32);this.Dofinal(i);return this.GetHex(i).toString()==s?(s=this.GetHex(n),CryptoJS.enc.Utf8.stringify(s)):""},CreatePoint:function(t,e){var i=new KJUR.crypto.ECDSA({curve:"sm2"});return ECPointFp.decodeFromHex(i.ecparams.curve,"04"+t+e)}};var SM2Key=function(t){this.setKey(t)};function SM2SetKey(t){if(t&&typeof t==="object"){this.eccX=t.eccX;this.eccY=t.eccY}else{this.eccX="F1342ADB38855E1F8C37D1181378DE446E52788389F7DB3DEA022A1FC4D4D856";this.eccY="66FC6DE253C822F1E52914D9E0B80C5D825759CE696CF039A8449F98017510B7"}}function SM2Encrypt(t){var e=SM2CipherMode.C1C3C2,i=new SM2Cipher(e),r=CryptoJS.enc.Utf8.parse(t);var i=new SM2Cipher(e);var n=i.CreatePoint(this.eccX,this.eccY);var s=i.GetWords(r.toString());return i.Encrypt(n,s)}SM2Key.prototype.setKey=SM2SetKey;SM2Key.prototype.encrypt=SM2Encrypt;global.SM2={SM2CipherMode:SM2CipherMode,SM2Cipher:SM2Cipher,CryptoJS:CryptoJS}})(window);window.SM2Utils={};function sm2Encrypt(t,e,i){i=i=="0"?i:"1";var r=CryptoJS.enc.Utf8.parse(t);r=CryptoJS.enc.Base64.stringify(r);r=CryptoJS.enc.Utf8.parse(r);var n=e;if(n.length>64*2){n=n.substr(n.length-64*2)}var s=n.substr(0,64);var o=n.substr(64);var h=new SM2.SM2Cipher(i);var F=h.CreatePoint(s,o);r=h.GetWords(r.toString());var a=h.Encrypt(F,r);return"04"+a}SM2Utils.encs=function(t,e,i){if(e==null||e.length==0){return""}return sm2Encrypt(e,t,i)};