mcl-wasm
Version:
mcl ; A portable and fast pairing-based cryptography library for Node.js by WebAssembly
1 lines • 629 kB
JavaScript
!function(A,I){"object"==typeof exports&&"object"==typeof module?module.exports=I():"function"==typeof define&&define.amd?define([],I):"object"==typeof exports?exports.mcl=I():A.mcl=I()}(self,(()=>{return A={921:(A,I)=>{"use strict";var g;Object.defineProperty(I,"__esModule",{value:!0}),I.MCLBN_GT_SIZE=I.MCLBN_G2_SIZE=I.MCLBN_G1_SIZE=I.MCLBN_FR_SIZE=I.MCLBN_FP_SIZE=I.MCLBN_COMPILED_TIME_VAR=I.MCLBN_FR_UNIT_SIZE=I.MCLBN_FP_UNIT_SIZE=I.EC_PROJ=I.IRTF=I.NIST_P256=I.NIST_P224=I.NIST_P192=I.SECP384R1=I.SECP256K1=I.SECP224K1=I.BLS12_381=I.BN_SNARK1=I.BN462=I.BN381_2=I.BN381_1=I.BN254=I.CurveType=void 0,function(A){A[A.BN254=0]="BN254",A[A.BN_SNARK1=4]="BN_SNARK1",A[A.BLS12_381=5]="BLS12_381",A[A.SECP224K1=101]="SECP224K1",A[A.SECP256K1=102]="SECP256K1",A[A.SECP384R1=102]="SECP384R1",A[A.NIST_P192=105]="NIST_P192",A[A.NIST_P224=106]="NIST_P224",A[A.NIST_P256=107]="NIST_P256"}(g=I.CurveType||(I.CurveType={})),I.BN254=g.BN254,I.BN381_1=1,I.BN381_2=2,I.BN462=3,I.BN_SNARK1=g.BN_SNARK1,I.BLS12_381=g.BLS12_381,I.SECP224K1=g.SECP224K1,I.SECP256K1=g.SECP256K1,I.SECP384R1=103,I.NIST_P192=g.NIST_P192,I.NIST_P224=g.NIST_P224,I.NIST_P256=g.NIST_P256,I.IRTF=5,I.EC_PROJ=1024,I.MCLBN_FP_UNIT_SIZE=6,I.MCLBN_FR_UNIT_SIZE=4,I.MCLBN_COMPILED_TIME_VAR=10*I.MCLBN_FR_UNIT_SIZE+I.MCLBN_FP_UNIT_SIZE,I.MCLBN_FP_SIZE=8*I.MCLBN_FP_UNIT_SIZE,I.MCLBN_FR_SIZE=8*I.MCLBN_FR_UNIT_SIZE,I.MCLBN_G1_SIZE=3*I.MCLBN_FP_SIZE,I.MCLBN_G2_SIZE=6*I.MCLBN_FP_SIZE,I.MCLBN_GT_SIZE=12*I.MCLBN_FP_SIZE},869:(A,I)=>{"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=A=>crypto.getRandomValues(A)},156:function(A,I,g){"use strict";var B=this&&this.__createBinding||(Object.create?function(A,I,g,B){void 0===B&&(B=g);var C=Object.getOwnPropertyDescriptor(I,g);C&&!("get"in C?!I.__esModule:C.writable||C.configurable)||(C={enumerable:!0,get:function(){return I[g]}}),Object.defineProperty(A,B,C)}:function(A,I,g,B){void 0===B&&(B=g),A[B]=I[g]}),C=this&&this.__exportStar||function(A,I){for(var g in A)"default"===g||Object.prototype.hasOwnProperty.call(I,g)||B(I,A,g)},Q=this&&this.__importDefault||function(A){return A&&A.__esModule?A:{default:A}};Object.defineProperty(I,"__esModule",{value:!0}),I.mod=I.curveType=I._showDebug=I.toHexStr=I.toHex=I.free=I.fromHexStr=I.init=I.getRandomValues=I.EC_PROJ=I.IRTF=I.NIST_P256=I.NIST_P224=I.NIST_P192=I.SECP384R1=I.SECP256K1=I.SECP224K1=I.BLS12_381=I.BN_SNARK1=I.BN462=I.BN381_2=I.BN381_1=I.BN254=void 0;var E=g(921);Object.defineProperty(I,"BN254",{enumerable:!0,get:function(){return E.BN254}}),Object.defineProperty(I,"BN381_1",{enumerable:!0,get:function(){return E.BN381_1}}),Object.defineProperty(I,"BN381_2",{enumerable:!0,get:function(){return E.BN381_2}}),Object.defineProperty(I,"BN462",{enumerable:!0,get:function(){return E.BN462}}),Object.defineProperty(I,"BN_SNARK1",{enumerable:!0,get:function(){return E.BN_SNARK1}}),Object.defineProperty(I,"BLS12_381",{enumerable:!0,get:function(){return E.BLS12_381}}),Object.defineProperty(I,"SECP224K1",{enumerable:!0,get:function(){return E.SECP224K1}}),Object.defineProperty(I,"SECP256K1",{enumerable:!0,get:function(){return E.SECP256K1}}),Object.defineProperty(I,"SECP384R1",{enumerable:!0,get:function(){return E.SECP384R1}}),Object.defineProperty(I,"NIST_P192",{enumerable:!0,get:function(){return E.NIST_P192}}),Object.defineProperty(I,"NIST_P224",{enumerable:!0,get:function(){return E.NIST_P224}}),Object.defineProperty(I,"NIST_P256",{enumerable:!0,get:function(){return E.NIST_P256}}),Object.defineProperty(I,"IRTF",{enumerable:!0,get:function(){return E.IRTF}}),Object.defineProperty(I,"EC_PROJ",{enumerable:!0,get:function(){return E.EC_PROJ}});var i=g(869);Object.defineProperty(I,"getRandomValues",{enumerable:!0,get:function(){return Q(i).default}});var D=g(528);Object.defineProperty(I,"init",{enumerable:!0,get:function(){return D.initializeMcl}}),Object.defineProperty(I,"fromHexStr",{enumerable:!0,get:function(){return D.fromHexStr}}),Object.defineProperty(I,"free",{enumerable:!0,get:function(){return D.free}}),Object.defineProperty(I,"toHex",{enumerable:!0,get:function(){return D.toHex}}),Object.defineProperty(I,"toHexStr",{enumerable:!0,get:function(){return D.toHexStr}}),Object.defineProperty(I,"_showDebug",{enumerable:!0,get:function(){return D._showDebug}}),Object.defineProperty(I,"curveType",{enumerable:!0,get:function(){return D.initializedCurveType}}),C(g(449),I);var w=g(528);Object.defineProperty(I,"mod",{enumerable:!0,get:function(){return w.mod}})},528:function(A,I,g){"use strict";var B=this&&this.__importDefault||function(A){return A&&A.__esModule?A:{default:A}};Object.defineProperty(I,"__esModule",{value:!0}),I.initializeMcl=I.initializedCurveType=I._showDebug=I.free=I.fromHexStr=I.toHexStr=I.toHex=I.asciiStrToPtr=I.ptrToAsciiStr=I.mod=void 0;const C=B(g(869)),Q=g(921),E=g(358);I.ptrToAsciiStr=(A,g)=>{let B="";for(let C=0;C<g;C++)B+=String.fromCharCode(I.mod.HEAP8[A+C]);return B},I.asciiStrToPtr=(A,g)=>{for(let B=0;B<g.length;B++)I.mod.HEAP8[A+B]=g.charCodeAt(B)},I.toHex=(A,I,g)=>{let B="";for(let C=0;C<g;C++)B+=("0"+A[I+C].toString(16)).slice(-2);return B},I.toHexStr=A=>(0,I.toHex)(A,0,A.length),I.fromHexStr=A=>{if(1&A.length)throw new Error(`fromHexStr:length must be even (${A.length})`);const I=A.length/2,g=new Uint8Array(I);for(let B=0;B<I;B++)g[B]=parseInt(A.slice(2*B,2*B+2),16);return g},I.free=A=>{I.mod._free(A)},I._showDebug=()=>{I.mod.debug&&(console.log("malloc DEBUG mode"),console.log(` show total=${I.mod.g_total}`),console.log(` g_ptr=${JSON.stringify(I.mod.g_ptr,null,"\t")}`))},I.initializeMcl=async(A=Q.CurveType.BN254)=>{I.mod=await E({cryptoGetRandomValues:(A,g)=>{const B=new Uint8Array(g);(0,C.default)(B);for(let C=0;C<g;C++)I.mod.HEAP8[A+C]=B[C]}}),I.initializedCurveType=A,(()=>{const A=(A,g=!0)=>(B,C=0)=>{const Q=I.mod.stackSave(),E=I.mod.stackAlloc(4096),i=A(E,4096,B,C);if(i>0){let A=null;return A=g?(0,I.ptrToAsciiStr)(E,i):new Uint8Array(I.mod.HEAP8.subarray(E,E+i)),I.mod.stackRestore(Q),A}throw I.mod.stackRestore(Q),new Error(`err gen_str:${B}`)},g=I=>A(I,!1),B=A=>(g,B)=>{const C=I.mod.stackSave(),Q=I.mod.stackAlloc(B.length);I.mod.HEAP8.set(B,Q);const E=A(g,Q,B.length);if(I.mod.stackRestore(C),0===E||E!==B.length)throw new Error(`err _wrapDeserialize: ${E} != ${B.length}`)},C=(A,g)=>function(...B){const C=B[g],Q=Object.prototype.toString.apply(C);if(!["[object String]","[object Uint8Array]","[object Array]"].includes(Q))throw new Error(`err bad type:"${Q}". Use String or Uint8Array.`);const E=B[g+1],i=I.mod.stackSave(),D=I.mod.stackAlloc(C.length);"[object String]"===Q?(0,I.asciiStrToPtr)(D,C):I.mod.HEAP8.set(C,D);const w=A(...B.slice(0,g),D,C.length,E);if(I.mod.stackRestore(i),0!==w)throw new Error("err _wrapInput")};I.mod.mclBnFr_malloc=()=>I.mod._malloc(Q.MCLBN_FR_SIZE),I.mod.mclBnFr_setLittleEndian=C(I.mod._mclBnFr_setLittleEndian,1),I.mod.mclBnFr_setLittleEndianMod=C(I.mod._mclBnFr_setLittleEndianMod,1),I.mod.mclBnFr_setBigEndianMod=C(I.mod._mclBnFr_setBigEndianMod,1),I.mod.mclBnFr_setStr=C(I.mod._mclBnFr_setStr,1),I.mod.mclBnFr_getStr=A(I.mod._mclBnFr_getStr),I.mod.mclBnFr_deserialize=B(I.mod._mclBnFr_deserialize),I.mod.mclBnFr_serialize=g(I.mod._mclBnFr_serialize),I.mod.mclBnFr_setHashOf=C(I.mod._mclBnFr_setHashOf,1),I.mod.mclBnFp_malloc=()=>I.mod._malloc(Q.MCLBN_FP_SIZE),I.mod.mclBnFp_setLittleEndian=C(I.mod._mclBnFp_setLittleEndian,1),I.mod.mclBnFp_setLittleEndianMod=C(I.mod._mclBnFp_setLittleEndianMod,1),I.mod.mclBnFp_setBigEndianMod=C(I.mod._mclBnFp_setBigEndianMod,1),I.mod.mclBnFp_setStr=C(I.mod._mclBnFp_setStr,1),I.mod.mclBnFp_getStr=A(I.mod._mclBnFp_getStr),I.mod.mclBnFp_deserialize=B(I.mod._mclBnFp_deserialize),I.mod.mclBnFp_serialize=g(I.mod._mclBnFp_serialize),I.mod.mclBnFp_setHashOf=C(I.mod._mclBnFp_setHashOf,1),I.mod.mclBnFp2_malloc=()=>I.mod._malloc(2*Q.MCLBN_FP_SIZE),I.mod.mclBnFp2_deserialize=B(I.mod._mclBnFp2_deserialize),I.mod.mclBnFp2_serialize=g(I.mod._mclBnFp2_serialize),I.mod.mclBnG1_malloc=()=>I.mod._malloc(Q.MCLBN_G1_SIZE),I.mod.mclBnG1_setStr=C(I.mod._mclBnG1_setStr,1),I.mod.mclBnG1_getStr=A(I.mod._mclBnG1_getStr),I.mod.mclBnG1_deserialize=B(I.mod._mclBnG1_deserialize),I.mod.mclBnG1_serialize=g(I.mod._mclBnG1_serialize),I.mod.mclBnG1_hashAndMapTo=C(I.mod._mclBnG1_hashAndMapTo,1),I.mod.mclBnG2_malloc=()=>I.mod._malloc(Q.MCLBN_G2_SIZE),I.mod.mclBnG2_setStr=C(I.mod._mclBnG2_setStr,1),I.mod.mclBnG2_getStr=A(I.mod._mclBnG2_getStr),I.mod.mclBnG2_deserialize=B(I.mod._mclBnG2_deserialize),I.mod.mclBnG2_serialize=g(I.mod._mclBnG2_serialize),I.mod.mclBnG2_hashAndMapTo=C(I.mod._mclBnG2_hashAndMapTo,1),I.mod.mclBnGT_malloc=()=>I.mod._malloc(Q.MCLBN_GT_SIZE),I.mod.mclBnGT_deserialize=B(I.mod._mclBnGT_deserialize),I.mod.mclBnGT_serialize=g(I.mod._mclBnGT_serialize),I.mod.mclBnGT_setStr=C(I.mod._mclBnGT_setStr,1),I.mod.mclBnGT_getStr=A(I.mod._mclBnGT_getStr),I.mod.g_his=[],I.mod.g_ptr={},I.mod.g_total=0,I.mod._mallocDebug=A=>{const g=I.mod._mallocOrg(A+4);return I.mod.HEAP8[g+A]=18,I.mod.HEAP8[g+A+1]=52,I.mod.HEAP8[g+A+2]=86,I.mod.HEAP8[g+A+3]=120,I.mod.g_his.push([g,A]),I.mod.g_ptr[g]=A,I.mod.g_total+=A,g},I.mod._freeDebug=A=>{const g=I.mod.g_his.pop(),B=g[0],C=g[1];A!==B&&console.log(`pos=${A} oldPos=${B}`);const Q=I.mod.HEAP8[B+C]+(I.mod.HEAP8[B+C+1]<<8)+(I.mod.HEAP8[B+C+2]<<16)+(I.mod.HEAP8[B+C+3]<<24);2018915346!==Q&&console.log(`ERR=${B} v=${Q.toString(16)}`),I.mod._freeOrg(A);const E=I.mod.g_ptr[A];0===E?console.log(`ERR ${A}`):(delete I.mod.g_ptr[A],I.mod.g_total-=E)},I.mod._mallocOrg=I.mod._malloc,I.mod._freeOrg=I.mod._free,I.mod.debug=!1,I.mod.debug&&(I.mod._malloc=I.mod._mallocDebug,I.mod._free=I.mod._freeDebug)})();const g=I.mod._mclBn_init(A,Q.MCLBN_COMPILED_TIME_VAR);if(0!==g)throw new Error(`_mclBn_init err ${g}`)}},449:function(A,I,g){"use strict";var B=this&&this.__importDefault||function(A){return A&&A.__esModule?A:{default:A}};Object.defineProperty(I,"__esModule",{value:!0}),I.recoverG2=I.recoverG1=I.recoverFr=I.shareG2=I.shareG1=I.shareFr=I.finalExp=I.precomputedMillerLoop2mixed=I.precomputedMillerLoop2=I.precomputedMillerLoop=I.millerLoop=I.pairing=I.pow=I.hashAndMapToG2=I.hashAndMapToG1=I.hashToFr=I.dbl=I.div=I.normalizeVec=I.invVec=I.invVecInPlace=I.mulVec=I.mul=I.sub=I.add=I.normalize=I.squareRoot=I.inv=I.sqr=I.neg=I.PrecomputedG2=I.deserializeHexStrToGT=I.GT=I.deserializeHexStrToG2=I.G2=I.getBasePointG1=I.verifyOrderG2=I.verifyOrderG1=I.setMapToMode=I.setETHserialization=I.deserializeHexStrToG1=I.G1=I.deserializeHexStrToFp2=I.Fp2=I.deserializeHexStrToFp=I.Fp=I.deserializeHexStrToFr=I.Fr=void 0;const C=g(528),Q=g(921),E=B(g(869));class i{constructor(A){this.a_=new Uint32Array(A/4)}deserializeHexStr(A){this.deserialize((0,C.fromHexStr)(A))}serializeToHexStr(){return(0,C.toHexStr)(this.serialize())}dump(A=""){console.log(A+this.serializeToHexStr())}clear(){this.a_.fill(0)}copyToMem(A){C.mod.HEAP32.set(this.a_,A/4)}copyFromMem(A){this.a_.set(C.mod.HEAP32.subarray(A/4,A/4+this.a_.length))}_alloc(){return C.mod._malloc(4*this.a_.length)}_salloc(){return C.mod.stackAlloc(4*this.a_.length)}_allocAndCopy(){const A=this._alloc();return C.mod.HEAP32.set(this.a_,A/4),A}_sallocAndCopy(){const A=this._salloc();return C.mod.HEAP32.set(this.a_,A/4),A}_save(A){this.a_.set(C.mod.HEAP32.subarray(A/4,A/4+this.a_.length))}_saveAndFree(A){this._save(A),C.mod._free(A)}_setter(A,...I){const g=C.mod.stackSave(),B=this._salloc(),Q=A(B,...I);if(this._save(B),C.mod.stackRestore(g),void 0!==Q&&0!==Q)throw new Error("_setter err")}_getter(A,...I){const g=C.mod.stackSave(),B=A(this._sallocAndCopy(),...I);return C.mod.stackRestore(g),B}_isEqual(A,I){const g=C.mod.stackSave(),B=A(this._sallocAndCopy(),I._sallocAndCopy());return C.mod.stackRestore(g),1===B}_op1(A){const I=new this.constructor,g=C.mod.stackSave(),B=this._sallocAndCopy(),Q=I._salloc();return A(Q,B),I._save(Q),C.mod.stackRestore(g),I}_op2(A,I,g=null){const B=g?new g:new this.constructor,Q=C.mod.stackSave(),E=this._sallocAndCopy(),i=I._sallocAndCopy(),D=B._salloc();return A(D,E,i),B._save(D),C.mod.stackRestore(Q),B}_squareRoot(A){const I=new this.constructor,g=C.mod.stackSave(),B=this._sallocAndCopy(),Q=I._salloc(),E=A(Q,B);return I._save(Q),C.mod.stackRestore(g),0===E?[!0,I]:[!1,null]}_getSubArray(A,I){const g=this.a_.length/I;return new Uint32Array(new Uint32Array(this.a_.buffer,g*A*4,g))}_setSubArray(A,I,g){const B=this.a_.length/g;this.a_.set(A.a_,B*I)}}class D extends i{}const w=A=>{const I=new(0,A.constructor);return I.a_.set(A.a_),I};class o extends D{constructor(){super(Q.MCLBN_FR_SIZE)}clone(){return w(this)}setInt(A){this._setter(C.mod._mclBnFr_setInt32,A)}deserialize(A){this._setter(C.mod.mclBnFr_deserialize,A)}serialize(){return this._getter(C.mod.mclBnFr_serialize)}setStr(A,I=0){this._setter(C.mod.mclBnFr_setStr,A,I)}getStr(A=0){return this._getter(C.mod.mclBnFr_getStr,A)}isZero(){return 1===this._getter(C.mod._mclBnFr_isZero)}isOne(){return 1===this._getter(C.mod._mclBnFr_isOne)}isEqual(A){return this._isEqual(C.mod._mclBnFr_isEqual,A)}setLittleEndian(A){this._setter(C.mod.mclBnFr_setLittleEndian,A)}setLittleEndianMod(A){this._setter(C.mod.mclBnFr_setLittleEndianMod,A)}setBigEndianMod(A){this._setter(C.mod.mclBnFr_setBigEndianMod,A)}setByCSPRNG(){const A=new Uint8Array(Q.MCLBN_FR_SIZE);(0,E.default)(A),this.setLittleEndian(A)}setHashOf(A){this._setter(C.mod.mclBnFr_setHashOf,A)}}I.Fr=o,I.deserializeHexStrToFr=A=>{const I=new o;return I.deserializeHexStr(A),I};class M extends D{constructor(){super(Q.MCLBN_FP_SIZE)}clone(){return w(this)}setInt(A){this._setter(C.mod._mclBnFp_setInt32,A)}deserialize(A){this._setter(C.mod.mclBnFp_deserialize,A)}serialize(){return this._getter(C.mod.mclBnFp_serialize)}setStr(A,I=0){this._setter(C.mod.mclBnFp_setStr,A,I)}getStr(A=0){return this._getter(C.mod.mclBnFp_getStr,A)}isOne(){return 1===this._getter(C.mod._mclBnFp_isOne)}isZero(){return 1===this._getter(C.mod._mclBnFp_isZero)}isEqual(A){return this._isEqual(C.mod._mclBnFp_isEqual,A)}setLittleEndian(A){this._setter(C.mod.mclBnFp_setLittleEndian,A)}setLittleEndianMod(A){this._setter(C.mod.mclBnFp_setLittleEndianMod,A)}setBigEndianMod(A){this._setter(C.mod.mclBnFp_setBigEndianMod,A)}setByCSPRNG(){const A=new Uint8Array(Q.MCLBN_FP_SIZE);(0,E.default)(A),this.setLittleEndian(A)}setHashOf(A){this._setter(C.mod.mclBnFp_setHashOf,A)}mapToG1(){const A=new F,I=C.mod.stackSave(),g=this._sallocAndCopy(),B=A._salloc();return C.mod._mclBnFp_mapToG1(B,g),A._save(B),C.mod.stackRestore(I),A}}I.Fp=M,I.deserializeHexStrToFp=A=>{const I=new M;return I.deserializeHexStr(A),I};class G extends i{constructor(){super(2*Q.MCLBN_FP_SIZE)}clone(){return w(this)}setInt(A,I){const g=new M;g.setInt(A),this.set_a(g),g.setInt(I),this.set_b(g)}deserialize(A){this._setter(C.mod.mclBnFp2_deserialize,A)}serialize(){return this._getter(C.mod.mclBnFp2_serialize)}getStr(A=0){return this.get_a().getStr(A)+" "+this.get_b().getStr(A)}setStr(A,I=0){const g=A.split(" ");if(2!==g.length)throw new Error("bad str");const B=new M;B.setStr(g[0],I),this.set_a(B),B.setStr(g[1],I),this.set_b(B)}isEqual(A){return this._isEqual(C.mod._mclBnFp2_isEqual,A)}isZero(){return 1===this._getter(C.mod._mclBnFp2_isZero)}isOne(){return 1===this._getter(C.mod._mclBnFp2_isOne)}setHashOf(A){throw new Error("Fp2.setHashOf is not supported")}get_a(){const A=new M;return A.a_=this._getSubArray(0,2),A}get_b(){const A=new M;return A.a_=this._getSubArray(1,2),A}set_a(A){this._setSubArray(A,0,2)}set_b(A){this._setSubArray(A,1,2)}mapToG2(){const A=new k,I=C.mod.stackSave(),g=this._sallocAndCopy(),B=A._salloc();return C.mod._mclBnFp2_mapToG2(B,g),A._save(B),C.mod.stackRestore(I),A}}I.Fp2=G,I.deserializeHexStrToFp2=A=>{const I=new G;return I.deserializeHexStr(A),I};class N extends i{}class F extends N{constructor(){super(Q.MCLBN_G1_SIZE)}clone(){return w(this)}deserialize(A){this._setter(C.mod.mclBnG1_deserialize,A)}serialize(){return this._getter(C.mod.mclBnG1_serialize)}setStr(A,I=0){this._setter(C.mod.mclBnG1_setStr,A,I)}getStr(A=0){return this._getter(C.mod.mclBnG1_getStr,A)}normalize(){this.a_=(0,I.normalize)(this).a_}getX(){const A=new M;return A.a_=this._getSubArray(0,3),A}getY(){const A=new M;return A.a_=this._getSubArray(1,3),A}getZ(){const A=new M;return A.a_=this._getSubArray(2,3),A}setX(A){this._setSubArray(A,0,3)}setY(A){this._setSubArray(A,1,3)}setZ(A){this._setSubArray(A,2,3)}isZero(){return 1===this._getter(C.mod._mclBnG1_isZero)}isValid(){return 1===this._getter(C.mod._mclBnG1_isValid)}isValidOrder(){return 1===this._getter(C.mod._mclBnG1_isValidOrder)}isEqual(A){return this._isEqual(C.mod._mclBnG1_isEqual,A)}setHashOf(A){this._setter(C.mod.mclBnG1_hashAndMapTo,A)}}I.G1=F,I.deserializeHexStrToG1=A=>{const I=new F;return I.deserializeHexStr(A),I},I.setETHserialization=A=>{C.mod._mclBn_setETHserialization(A?1:0)},I.setMapToMode=A=>{C.mod._mclBn_setMapToMode(A)},I.verifyOrderG1=A=>{C.mod._mclBn_verifyOrderG1(A?1:0)},I.verifyOrderG2=A=>{C.mod._mclBn_verifyOrderG2(A?1:0)},I.getBasePointG1=()=>{const A=new F,I=C.mod.stackSave(),g=A._salloc();if(C.mod._mclBnG1_getBasePoint(g),A._save(g),C.mod.stackRestore(I),A.isZero())throw new Error("not supported for pairing curves");return A};class k extends N{constructor(){super(Q.MCLBN_G2_SIZE)}clone(){return w(this)}deserialize(A){this._setter(C.mod.mclBnG2_deserialize,A)}serialize(){return this._getter(C.mod.mclBnG2_serialize)}setStr(A,I=0){this._setter(C.mod.mclBnG2_setStr,A,I)}getStr(A=0){return this._getter(C.mod.mclBnG2_getStr,A)}normalize(){this.a_=(0,I.normalize)(this).a_}getX(){const A=new G;return A.a_=this._getSubArray(0,3),A}getY(){const A=new G;return A.a_=this._getSubArray(1,3),A}getZ(){const A=new G;return A.a_=this._getSubArray(2,3),A}setX(A){this._setSubArray(A,0,3)}setY(A){this._setSubArray(A,1,3)}setZ(A){this._setSubArray(A,2,3)}isZero(){return 1===this._getter(C.mod._mclBnG2_isZero)}isValid(){return 1===this._getter(C.mod._mclBnG2_isValid)}isValidOrder(){return 1===this._getter(C.mod._mclBnG2_isValidOrder)}isEqual(A){return this._isEqual(C.mod._mclBnG2_isEqual,A)}setHashOf(A){this._setter(C.mod.mclBnG2_hashAndMapTo,A)}}I.G2=k,I.deserializeHexStrToG2=A=>{const I=new k;return I.deserializeHexStr(A),I};class U extends i{constructor(){super(Q.MCLBN_GT_SIZE)}clone(){return w(this)}setInt(A){this._setter(C.mod._mclBnGT_setInt32,A)}deserialize(A){this._setter(C.mod.mclBnGT_deserialize,A)}serialize(){return this._getter(C.mod.mclBnGT_serialize)}setStr(A,I=0){this._setter(C.mod.mclBnGT_setStr,A,I)}getStr(A=0){return this._getter(C.mod.mclBnGT_getStr,A)}isZero(){return 1===this._getter(C.mod._mclBnGT_isZero)}isOne(){return 1===this._getter(C.mod._mclBnGT_isOne)}isEqual(A){return this._isEqual(C.mod._mclBnGT_isEqual,A)}setHashOf(A){throw new Error("GT.setHashOf is not supported")}}I.GT=U,I.deserializeHexStrToGT=A=>{const I=new U;return I.deserializeHexStr(A),I};class H{constructor(A){if(!(A instanceof k))throw new Error("PrecomputedG2:bad type");const I=8*C.mod._mclBn_getUint64NumToPrecompute();this.p=C.mod._malloc(I);const g=C.mod.stackSave(),B=A._sallocAndCopy();C.mod._mclBn_precomputeG2(this.p,B),C.mod.stackRestore(g)}destroy(){null!=this.p&&C.mod._free(this.p),this.p=null}}function R(A){if(0===A.length)throw new Error("zero size array");const I=4*A[0].a_.length,g=C.mod.stackAlloc(I*A.length);for(let B=0;B<A.length;B++)A[B].copyToMem(g+I*B);return g}I.PrecomputedG2=H,I.neg=A=>{if(A instanceof o)return A._op1(C.mod._mclBnFr_neg);if(A instanceof M)return A._op1(C.mod._mclBnFp_neg);if(A instanceof F)return A._op1(C.mod._mclBnG1_neg);if(A instanceof k)return A._op1(C.mod._mclBnG2_neg);if(A instanceof U)return A._op1(C.mod._mclBnGT_neg);if(A instanceof G)return A._op1(C.mod._mclBnFp2_neg);throw new Error("neg:bad type")},I.sqr=A=>{if(A instanceof M)return A._op1(C.mod._mclBnFp_sqr);if(A instanceof o)return A._op1(C.mod._mclBnFr_sqr);if(A instanceof U)return A._op1(C.mod._mclBnGT_sqr);if(A instanceof G)return A._op1(C.mod._mclBnFp2_sqr);throw new Error("sqr:bad type")},I.inv=A=>{if(A instanceof M)return A._op1(C.mod._mclBnFp_inv);if(A instanceof o)return A._op1(C.mod._mclBnFr_inv);if(A instanceof U)return A._op1(C.mod._mclBnGT_inv);if(A instanceof G)return A._op1(C.mod._mclBnFp2_inv);throw new Error("inv:bad type")},I.squareRoot=A=>{if(A instanceof M)return A._squareRoot(C.mod._mclBnFp_squareRoot);if(A instanceof o)return A._squareRoot(C.mod._mclBnFr_squareRoot);if(A instanceof G)return A._squareRoot(C.mod._mclBnFp2_squareRoot);throw new Error("squareRoot:bad type")},I.normalize=A=>{if(A instanceof F)return A._op1(C.mod._mclBnG1_normalize);if(A instanceof k)return A._op1(C.mod._mclBnG2_normalize);throw new Error("normalize:bad type")},I.add=(A,I)=>{if(A.constructor!==I.constructor)throw new Error("add:mismatch type");if(A instanceof M)return A._op2(C.mod._mclBnFp_add,I);if(A instanceof o)return A._op2(C.mod._mclBnFr_add,I);if(A instanceof F)return A._op2(C.mod._mclBnG1_add,I);if(A instanceof k)return A._op2(C.mod._mclBnG2_add,I);if(A instanceof U)return A._op2(C.mod._mclBnGT_add,I);if(A instanceof G)return A._op2(C.mod._mclBnFp2_add,I);throw new Error("add:bad type")},I.sub=(A,I)=>{if(A.constructor!==I.constructor)throw new Error("sub:mismatch type");if(A instanceof M)return A._op2(C.mod._mclBnFp_sub,I);if(A instanceof o)return A._op2(C.mod._mclBnFr_sub,I);if(A instanceof F)return A._op2(C.mod._mclBnG1_sub,I);if(A instanceof k)return A._op2(C.mod._mclBnG2_sub,I);if(A instanceof U)return A._op2(C.mod._mclBnGT_sub,I);if(A instanceof G)return A._op2(C.mod._mclBnFp2_sub,I);throw new Error("sub:bad type")},I.mul=function(A,I){if(A instanceof M&&I instanceof M)return A._op2(C.mod._mclBnFp_mul,I);if(A instanceof o&&I instanceof o)return A._op2(C.mod._mclBnFr_mul,I);if(A instanceof F&&I instanceof o)return A._op2(C.mod._mclBnG1_mul,I);if(A instanceof k&&I instanceof o)return A._op2(C.mod._mclBnG2_mul,I);if(A instanceof U&&I instanceof U)return A._op2(C.mod._mclBnGT_mul,I);if(A instanceof G&&I instanceof G)return A._op2(C.mod._mclBnFp2_mul,I);throw new Error("mul:mismatch type")};const S=(A,I,g,B)=>{const Q=I.length,E=new B,i=C.mod.stackSave(),D=E._salloc();return A(D,R(I),R(g),Q),E._save(D),C.mod.stackRestore(i),E};I.mulVec=(A,I)=>{const g=A.length;if(0===g)throw new Error("mulVec:zero array");if(g!==I.length)throw new Error(`err _mulVec bad length ${g}, ${I.length}`);if(A[0]instanceof F&&I[0]instanceof o)return S(C.mod._mclBnG1_mulVec,A,I,F);if(A[0]instanceof k&&I[0]instanceof o)return S(C.mod._mclBnG2_mulVec,A,I,k);throw new Error("mulVec:mismatch type")};const J=(A,I,g)=>{const B=g.length,Q=C.mod.stackSave(),E=R(g);A(E,E,B),function(A,I){if(0===A.length)throw new Error("zero size array");const g=4*A[0].a_.length;for(let B=0;B<A.length;B++)A[B].copyFromMem(I+g*B)}(I,E),C.mod.stackRestore(Q)};I.invVecInPlace=A=>{if(0!==A.length)if(A[0]instanceof o)J(C.mod._mclBnFr_invVec,A,A);else{if(!(A[0]instanceof M))throw new Error("invVec: bad type");J(C.mod._mclBnFp_invVec,A,A)}},I.invVec=A=>{const I=A.length;if(0===I)return[];const g=A[0].constructor,B=Array.from({length:I},(A=>new g));if(A[0]instanceof o)return J(C.mod._mclBnFr_invVec,B,A),B;if(A[0]instanceof M)return J(C.mod._mclBnFp_invVec,B,A),B;throw new Error("invVec: bad type")},I.normalizeVec=A=>{if(0!==A.length)if(A[0]instanceof F)J(C.mod._mclBnG1_normalizeVec,A,A);else{if(!(A[0]instanceof k))throw new Error("normalizeVec: bad type");J(C.mod._mclBnG2_normalizeVec,A,A)}},I.div=function(A,I){if(A.constructor!==I.constructor)throw new Error("div:mismatch type");if(A instanceof M)return A._op2(C.mod._mclBnFp_div,I);if(A instanceof o)return A._op2(C.mod._mclBnFr_div,I);if(A instanceof U)return A._op2(C.mod._mclBnGT_div,I);if(A instanceof G)return A._op2(C.mod._mclBnFp2_div,I);throw new Error("div:bad type")},I.dbl=A=>{if(A instanceof F)return A._op1(C.mod._mclBnG1_dbl);if(A instanceof k)return A._op1(C.mod._mclBnG2_dbl);throw new Error("dbl:bad type")},I.hashToFr=A=>{const I=new o;return I.setHashOf(A),I},I.hashAndMapToG1=A=>{const I=new F;return I.setHashOf(A),I},I.hashAndMapToG2=A=>{const I=new k;return I.setHashOf(A),I};const h=(A,I,g)=>{const B=new(0,I.constructor),Q=(A=>{let I="number"==typeof A?BigInt(A):A;if(I<0n)throw new Error("IntToArray: negative value");if(0n===I)return new Uint8Array(1);const g=[];for(;I;)g.push(Number(BigInt.asUintN(8,I))),I>>=8n;return new Uint8Array(g)})(g.valueOf()),E=C.mod.stackSave(),i=B._salloc(),D=I._sallocAndCopy(),w=C.mod.stackAlloc(Q.length);C.mod.HEAP8.set(Q,w);const o=A(i,D,w,Q.length);if(B._save(i),C.mod.stackRestore(E),o<0)throw new Error("powArray err");return B};function y(A,I,g,B){const Q=new A,E=C.mod.stackSave(),i=Q._salloc(),D=R(g),w=B._sallocAndCopy();return I(i,D,g.length,w),Q._save(i),C.mod.stackRestore(E),Q}function c(A,I,g,B){const Q=B.length;if(Q!==g.length)throw new Error("recover:bad length");const E=new A,i=C.mod.stackSave(),D=E._salloc(),w=I(D,R(g),R(B),Q);if(E._save(D),C.mod.stackRestore(i),0!==w)throw new Error("callRecover");return E}I.pow=function(A,I){if(A instanceof o){if(I instanceof o)return A._op2(C.mod._mclBnFr_pow,I);if("number"==typeof I||"bigint"==typeof I)return h(C.mod._mclBnFr_powArray,A,I)}if(A instanceof M){if(I instanceof M)return A._op2(C.mod._mclBnFp_pow,I);if("number"==typeof I||"bigint"==typeof I)return h(C.mod._mclBnFp_powArray,A,I)}if(A instanceof U&&I instanceof o)return A._op2(C.mod._mclBnGT_pow,I);throw new Error("pow:bad type")},I.pairing=(A,I)=>{if(A instanceof F&&I instanceof k)return A._op2(C.mod._mclBn_pairing,I,U);throw new Error("exports.pairing:bad type")},I.millerLoop=(A,I)=>{if(A instanceof F&&I instanceof k)return A._op2(C.mod._mclBn_millerLoop,I,U);throw new Error("exports.millerLoop:bad type")},I.precomputedMillerLoop=(A,I)=>{if(!(A instanceof F&&I instanceof H))throw new Error("exports.precomputedMillerLoop:bad type");const g=new U,B=C.mod.stackSave(),Q=A._sallocAndCopy(),E=g._salloc();return C.mod._mclBn_precomputedMillerLoop(E,Q,I.p),g._save(E),C.mod.stackRestore(B),g},I.precomputedMillerLoop2=(A,I,g,B)=>{if(!(A instanceof F&&I instanceof H&&g instanceof F&&B instanceof H))throw new Error("exports.precomputedMillerLoop2mixed:bad type");const Q=new U,E=C.mod.stackSave(),i=A._sallocAndCopy(),D=g._sallocAndCopy(),w=Q._salloc();return C.mod._mclBn_precomputedMillerLoop2(w,i,I.p,D,B.p),Q._save(w),C.mod.stackRestore(E),Q},I.precomputedMillerLoop2mixed=(A,I,g,B)=>{if(!(A instanceof F&&I instanceof k&&g instanceof F&&B instanceof H))throw new Error("exports.precomputedMillerLoop2mixed:bad type");const Q=new U,E=C.mod.stackSave(),i=A._sallocAndCopy(),D=I._sallocAndCopy(),w=g._sallocAndCopy(),o=Q._salloc();return C.mod._mclBn_precomputedMillerLoop2mixed(o,i,D,w,B.p),Q._save(o),C.mod.stackRestore(E),Q},I.finalExp=A=>{if(A instanceof U)return A._op1(C.mod._mclBn_finalExp);throw new Error("finalExp:bad type")},I.shareFr=(A,I)=>y(o,C.mod._mclBn_FrEvaluatePolynomial,A,I),I.shareG1=(A,I)=>y(F,C.mod._mclBn_G1EvaluatePolynomial,A,I),I.shareG2=(A,I)=>y(k,C.mod._mclBn_G2EvaluatePolynomial,A,I),I.recoverFr=(A,I)=>c(o,C.mod._mclBn_FrLagrangeInterpolation,A,I),I.recoverG1=(A,I)=>c(F,C.mod._mclBn_G1LagrangeInterpolation,A,I),I.recoverG2=(A,I)=>c(k,C.mod._mclBn_G2LagrangeInterpolation,A,I)},358:A=>{var I,g=(I=(I="undefined"!=typeof document?document.currentScript?.src:void 0)||"/index.js",function(A={}){var g,B,C,Q=A,E=new Promise(((A,I)=>{g=A,B=I})),i="object"==typeof window,D="undefined"!=typeof WorkerGlobalScope,w="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node&&"renderer"!=process.type,o=Object.assign({},Q),M=(A,I)=>{throw I},G="";w?(G="//",C=A=>(A=L(A)?new URL(A):A,fs.readFileSync(A)),!Q.thisProgram&&process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),M=(A,I)=>{throw process.exitCode=A,I}):(i||D)&&(D?G=self.location.href:"undefined"!=typeof document&&document.currentScript&&(G=document.currentScript.src),I&&(G=I),G=G.startsWith("blob:")?"":G.substr(0,G.replace(/[?#].*/,"").lastIndexOf("/")+1),D&&(C=A=>{var I=new XMLHttpRequest;return I.open("GET",A,!1),I.responseType="arraybuffer",I.send(null),new Uint8Array(I.response)})),Q.print||console.log.bind(console);var N=Q.printErr||console.error.bind(console);Object.assign(Q,o),o=null,Q.arguments&&Q.arguments,Q.thisProgram&&Q.thisProgram;var F=Q.wasmBinary;var k,U,H,R,S,J=!1,h=[],y=[],c=[],a=0,K=null;function s(A){Q.onAbort?.(A),N(A="Aborted("+A+")"),J=!0,A+=". Build with -sASSERTIONS for more info.";var I=new WebAssembly.RuntimeError(A);throw B(I),I}var f,Y="data:application/octet-stream;base64,",T=A=>A.startsWith(Y),L=A=>A.startsWith("file://");async function n(A){return function(A){if(A==f&&F)return new Uint8Array(F);var I=function(A){if(T(A))return function(A){if(void 0!==w&&w){var I=Buffer.from(A,"base64");return new Uint8Array(I.buffer,I.byteOffset,I.length)}for(var g=atob(A),B=new Uint8Array(g.length),C=0;C<g.length;++C)B[C]=g.charCodeAt(C);return B}(A.slice(Y.length))}(A);if(I)return I;if(C)return C(A);throw"both async and sync fetching of the wasm failed"}(A)}var q={16760:(A,I)=>{Q.cryptoGetRandomValues(A,I)}};class Z{name="ExitStatus";constructor(A){this.message=`Program terminated with exit(${A})`,this.status=A}}var m=A=>{for(;A.length>0;)A.shift()(Q)},t=Q.noExitRuntime||!0;Q.stackRestore=A=>v(A),Q.stackSave=()=>V();var d=0,e={},r=A=>{if(A instanceof Z||"unwind"==A)return k;M(1,A)},j=()=>t||d>0,P=A=>{k=A,j()||(Q.onExit?.(A),J=!0),M(A,new Z(A))},l=A=>{if(!J)try{A(),(()=>{if(!j())try{k=A=k,P(A)}catch(A){r(A)}var A})()}catch(A){r(A)}},p=[];Q.stackAlloc=A=>O(A);var x,b={c:()=>s(""),f:(A,I,g)=>U.copyWithin(A,I,I+g),b:()=>{t=!1,d=0},d:(A,I)=>{if(e[A]&&(clearTimeout(e[A].id),delete e[A]),!I)return 0;var g=setTimeout((()=>{delete e[A],l((()=>W(A,performance.now())))}),I);return e[A]={id:g,timeout_ms:I},0},g:(A,I,g)=>((A,I,g)=>{var B=((A,I)=>{var g;for(p.length=0;g=U[A++];){var B=105!=g;I+=(B&=112!=g)&&I%8?4:0,p.push(112==g?R[I>>2]:105==g?H[I>>2]:S[I>>3]),I+=B?8:4}return p})(I,g);return q[A](...B)})(A,I,g),e:A=>(U.length,!1),a:P};!async function(){function A(A,I){var g,B;return x=A.exports,g=x.h.buffer,Q.HEAP8=new Int8Array(g),Q.HEAP16=new Int16Array(g),Q.HEAPU8=U=new Uint8Array(g),Q.HEAPU16=new Uint16Array(g),Q.HEAP32=H=new Int32Array(g),Q.HEAPU32=R=new Uint32Array(g),Q.HEAPF32=new Float32Array(g),Q.HEAPF64=S=new Float64Array(g),B=x.i,y.unshift(B),function(){if(a--,Q.monitorRunDependencies?.(a),0==a&&K){var A=K;K=null,A()}}(),x}a++,Q.monitorRunDependencies?.(a);var I={a:b};if(Q.instantiateWasm)try{return Q.instantiateWasm(I,A)}catch(A){N(`Module.instantiateWasm callback failed with error: ${A}`),B(A)}f??="data:application/octet-stream;base64,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QeCTASgCABECACAAQdACaiAGQbyHAUHgkwEoAgARAgAgAEGAA2ogBEG8hwFB4JMBKAIAEQIAIABBsANqIAVBvIcBQeCTASgCABECACAAQeADaiABQbyHAUHgkwEoAgARAgAgAEGQBGogAkG8hwFB4JMBKAIAEQIAIANBwBNqJAALwRcBCn8jAEGABmsiAyQAAkACQCABQcABaiILQZSTASgCABEEAEUNACABQfABakGUkwEoAgARBABFDQAgACACQZyTASgCABEBACAAQTBqIAJBMGpBnJMBKAIAEQEAIABB4ABqIAJB4ABqQZyTASgCABEBACAAQZABaiACQZABakGckwEoAgARAQAgAEHAAWogAkHAAWpBnJMBKAIAEQEAIABB8AFqIAJB8AFqQZyTASgCABEBAAwBCwJAIAJBwAFqIglBlJMBKAIAEQQARQ0AIAJB8AFqQZSTASgCABEEAEUNACAAIAFBnJMBKAIAEQEAIABBMGogAUEwakGckwEoAgARAQAgAEHgAGogAUHgAGpBnJMBKAIAEQEAIABBkAFqIAFBkAFqQZyTASgCABEBACAAQcABaiALQZyTASgCABEBACAAQfABaiABQfABakGckwEoAgARAQAMAQsCQAJAQYyTASgCACIGRQ0AA0AgCyAFQQJ0IghqKAIAIAhBgJEBaigCAEYEQCAGIAVBAWoiBUcNAQwCCwtBACEIDAELIAFB8AFqQZSTASgCABEEACEIQYyTASgCACEGCwJ/AkAgBkUNAEEAIQUDQCAJIAVBAnQiBGooAgAgBEGAkQFqKAIARgRAIAYgBUEBaiIFRw0BDAILC0EADAELIAJB8AFqQZSTASgCABEEAAshBiAIRQRAIANBwARqIgQgAUHwAWoiBSAFQbyHAUGokwEoAgARAAAgBCAEIAtBvIcBQbCTASgCABEAACADQaACaiIHIAsgBUG8hwFBqJMBKAIAEQAAIANBwAFqIgogCyAFQbyHAUGskwEoAgARAAAgA0GAA2ogByAKQbyHAUGwkwEoAgARAAAgA0GwA2ogBEGckwEoAgARAQALAkAgBgRAIANBoAJqIAFBnJMBKAIAEQEAIANB0AJqIgUgAUEwakGckwEoAgARAQACQCAIBEAgA0HgAGogAkGckwEoAgARAQAgA0GQAWogAkEwakGckwEoAgARAQAMAQsgA0HABGoiBCACIANBgANqQfySASgCABECACADQeAAaiAEQbyHAUHgkwEoAgARAgAgA0GQAWogA0GgBWpBvIcBQeCTASgCABECAAsgA0HgAGoiBCAEIANBoAJqQbyHAUGskwEoAgARAAAgA0GQAWoiBCAEIAVBvIcBQayTASgCABEAACADQcABaiABQeAAakGckwEoAgARAQAgA0HwAWogAUGQAWpBnJMBKAIAEQEADAELIANBwARqIgQgAkHwAWoiBSAFQbyHAUGokwEoAgARAAAgBCAEIAlBvIcBQbCTASgCABEAACADQaACaiIHIAkgBUG8hwFBqJMBKAIAEQAAIANB4ABqIgogCSAFQbyHAUGskwEoAgARAAAgA0HAAWoiDCAHIApBvIcBQbCTASgCABEAACADQfABaiIFIARBnJMBKAIAEQEAIAQgASAMQfySASgCABECACAHIARBvIcBQeCTASgCABECACADQdACaiIEIANBoAVqIgdBvIcBQeCTASgCABECAAJAIAgEQCAKIAJBnJMBKAIAEQEAIANBkAFqIAJBMGpBnJMBKAIAEQEADAELIANBwARqIgogAiADQYADakH8kgEoAgARAgAgA0HgAGogCkG8hwFB4JMBKAIAEQIAIANBkAFqIAdBvIcBQeCTASgCABECAAsgA0HgAGoiByAHIANBoAJqQbyHAUGskwEoAgARAAAgA0GQAWoiByAHIARBvIcBQayTASgCABEAACADQcAEaiIHIANBwAFqIgogCUH8kgEoAgARAgAgCiAHQbyHAUHgkwEoAgARAgAgBSADQaAFaiIEQbyHAUHgkwEoAgARAgAgByAKIAFB4ABqQfySASgCABECACAKIAdBvIcBQeCTASgCABECACAFIARBvIcBQeCTASgCABECAAsCQCAIBEAgA0GAA2ogAkHgAGpBnJMBKAIAEQEAIANBsANqIAJBkAFqQZyTASgCABEBAAwBCyADQcAEaiIHIANBgANqIgogC0H8kgEoAgARAgAgCiAHQbyHAUHgkwEoAgARAgAgA0GwA2oiBSADQaAFaiIEQbyHAUHgkwEoAgARAgAgByAKIAJB4ABqQfySASgCABECACAKIAdBvIcBQeCTASgCABECACAFIARBvIcBQeCTASgCABECAAsgA0GAA2oiBSAFIANBwAFqQbyHAUGskwEoAgARAAAgA0GwA2oiAiACIANB8AFqQbyHAUGskwEoAgARAAACQCADQeAAakGUkwEoAgARBABFDQAgA0GQAWpBlJMBKAIAEQQARQ0AAkAgBUGUkwEoAgARBABFDQAgAkGUkwEoAgARBABFDQAgACABEBAMAgsgA0HABGoiAkGYkwEoAgARAwAgA0HwBGoiAUGYkwEoAgARAwAgACACQZyTASgCABEBACAAQTBqIAFBnJMBKAIAEQEAIAJBmJMBKAIAEQMAIAFBmJMBKAIAEQMAIABB4ABqIAJBnJMBKAIAEQEAIABBkAFqIAFBnJMBKAIAEQEAIABBwAFqQZiTASgCABEDACAAQfABakGYkwEoAgARAwAMAQsgAEHAAWohAQJAIAgEQCAGBEAgASADQeAAakGckwEoAgARAQAgAEHwAWogA0GQAWpBnJMBKAIAEQEADAILIANBwARqIgUgA0HgAGogCUH8kgEoAgARAgAgASAFQbyHAUHgkwEoAgARAgAgAEHwAWogA0GgBWpBvIcBQeCTASgCABECAAwBCyAAQfABaiEFIAYEQCADQcAEaiIGIAsgA0HgAGpB/JIBKAIAEQIAIAEgBkG8hwFB4JMBKAIAEQIAIAUgA0GgBWpBvIcBQeCTASgCABECAAwBCyADQcAEaiIEIAsgCUH8kgEoAgARAgAgASAEQbyHAUHgkwEoAgARAgAgBSADQaAFaiIGQbyHAUHgkwEoAgARAgAgBCABIANB4ABqQfySASgCABECACABIARBvIcBQeCTASgCABECACAFIAZBvIcBQeCTASgCABECAAsgA0HABGoiBCADQZABaiIBIAFBvIcBQaiTASgCABEAACAEIAQgA0HgAGoiBUG8hwFBsJMBKAIAEQAAIANBkARqIgYgBSABQbyHAUGokwEoAgARAAAgA0HgA2oiCSAFIAFBvIcBQayTASgCABEAACADIAYgCUG8hwFBsJMBKAIAEQAAIANBMGoiCyAEQZyTASgCABEBACAEIAIgAkG8hwFBqJMBKAIAEQAAIAQgBCADQYADaiIHQbyHAUGwkwEoAgARAAAgBiAHIAJBvIcBQaiTASgCABEAACAJIAcgAkG8hwFBrJMBKAIAEQAAIABB4ABqIgEgBiAJQbyHAUGwkwEoAgARAAAgAEGQAWoiAiAEQZyTASgCABEBACAEIANBoAJqIgggA0H8kgEoAgARAgAgCCAEQbyHAUHgkwEoAgARAgAgA0HQAmoiBiADQaAFaiIJQbyHAUHgkwEoAgARAgAgBCADIAVB/JIBKAIAEQIAIAMgBEG8hwFB4JMBKAIAEQIAIAsgCUG8hwFB4JMBKAIAEQIAIAEgASAIQbyHAUGskwEoAgARAAAgAiACIAZBvIcBQayTASgCABEAACABIAEgCEG8hwFBrJMBKAIAEQAAIAIgAiAGQbyHAUGskwEoAgARAAAgACABIANBvIcBQayTASgCABEAACAAQTBqIgUgAiALQbyHAUGskwEoAgARAAAgCCAIIABBvIcBQayTASgCABEAACAGIAYgBUG8hwFBrJMBKAIAEQAAIAQgCCAHQfySASgCABECACAIIARBvIcBQeCTASgCABECACAGIAlBvIcBQeCTASgCABECACAEIAMgA0HAAWpB/JIBKAIAEQIAIAMgBEG8hwFB4JMBKAIAEQIAIAsgCUG8hwFB4JMBKAIAEQIAIAEgCCADQbyHAUGskwEoAgARAAAgAiAGIAtBvIcBQayTASgCABEAAAsgA0GABmokAAvBCgEJfyMAQfABayIDJAACQCABQeAAaiIHQZSTASgCABEEAARAIAAgAkGckwEoAgARAQAgAEEwaiACQTBqQZyTASgCABEBACAAQeAAaiACQeAAakGckwEoAgARAQAMAQsgAkHgAGoiCEGUkwEoAgARBAAEQCAAIAFBnJMBKAIAEQEAIABBMGogAUEwakGckwEoAgARAQAgAEHgAGogB0GckwEoAgARAQAMAQsCfwJAAkACQAJAAkBBjJMBKAIAIgUEQANAIAcgBEECdCIGaigCACIJIAZBgJEBaigCACIKRyILRQRAIARBAWoiBCAFRw0BCwtBACEEAkADQCAIIARBAnQiBmooAgAgBkGAkQFqKAIARiIGBEAgBSAEQQFqIgRHDQEMAgsLQbSTASgCACEEIAkgCkYNAiADQcABaiIFIAdBvIcBIAQRAgAgA0HgAGoiBCAIQbyHAUG0kwEoAgARAgAgA0GQAWogASAEQbyHAUGwkwEoAgARAAAgA0EwaiACIAVBvIcBQbCTASgCABEAAAwDCyAJIApHDQQLIANBkAFqIgYgAUGckwEoAgARAQAgA0EwaiIEIAJBnJMBKAIAEQEAIAQgBCAGQbyHAUGskwEoAgARAAAgA0HgAGogAUEwakGckwEoAgARAQBBASEEDAILIANB4ABqIgUgCEG8hwEgBBECACADQZABaiABIAVBvIcBQbCTASgCABEAACADQTBqIAJBnJMBKAIAEQEAC0EAIQQgA0EwaiIFIAUgA0GQAWpBvIcBQayTASgCABEAACADQeAAaiIFIAUgCEG8hwFBsJMBKAIAEQAAIAUgBSABQTBqQbyHAUGwkwEoAgARAAAgCw0CCyADQcABaiACQTBqQZyTASgCABEBAEEBDAILIANBwAFqIgUgB0G8hwFBtJMBKAIAEQIAIANBkAFqIgkgAUGckwEoAgARAQAgA0EwaiIEIAIgBUG8hwFBsJMBKAIAEQAAIAQgBCAJQbyHAUGskwEoAgARAAAgA0HgAGogAUEwakGckwEoAgARAQALIANBwAFqIgQgBCAHQbyHAUGwkwEoAgARAAAgBCAEIAJBMGpBvIcBQbCTASgCABEAACAGIQRBAAshBSADQcABaiICIAIgA0HgAGpBvIcBQayTASgCABEAACADQTBqQZSTASgCABEEAARAIAJBlJMBKAIAEQQABEAgACABEBEMAgsgAEGYkwEoAgARAwAgAEEwakGYkwEoAgARAwAgAEHgAGpBmJMBKAIAEQMADAELIABB4ABqIQECQCAFBEAgBARAIAEgA0EwakGckwEoAgARAQAMAgsgASADQTBqIAhBvIcBQbCTASgCABEAAAwBC0GwkwEoAgAhAiAEBEAgASAHIANBMGpBvIcBIAIRAAAMAQsgASAHIAhBvIcBIAIRAAAgASABIANBMGpBvIcBQbCTASgCABEAAAsgAyADQTBqIgRBvIcBQbSTASgCABECACAAQTBqIgEgA0HAAWoiBkG8hwFBtJMBKAIAEQIAIANBkAFqIgIgAiADQbyHAUGwkwEoAgARAAAgAyADIARBvIcBQbCTASgCABEAACABIAEgAkG8hwFBrJMBKAIAEQAAIAEgASACQbyHAUGskwEoAgARAAAgACABIANBvIcBQayTASgCABEAACACIAIgAEG8hwFBrJMBKAIAEQAAIAIgAiAGQbyHAUGwkwEoAgARAAAgAyADIANB4ABqQbyHAUGwkwEoAgARAAAgASACIANBvIcBQayTASgCABEAAAsgA0HwAWokAAvwAgICfwF+AkAgAkUNACAAIAE6AAAgACACaiIDQQFrIAE6AAAgAkEDSQ0AIAAgAToAAiAAIAE6AAEgA0EDayABOgAAIANBAmsgAToAACACQQdJDQAgACABOgADIANBBGsgAToAACACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiADYCACADIAIgBGtBfHEiAmoiAUEEayAANgIAIAJBCUkNACADIAA2AgggAyAANgIEIAFBCGsgADYCACABQQxrIAA2AgAgAkEZSQ0AIAMgADYCGCADIAA2AhQgAyAANgIQIAMgADYCDCABQRBrIAA2AgAgAUEUayAANgIAIAFBGGsgADYCACABQRxrIAA2AgAgAiADQQRxQRhyIgFrIgJBIEkNACAArUKBgICAEH4hBSABIANqIQEDQCABIAU3AxggASAFNwMQIAEgBTcDCCABIAU3AwAgAUEgaiEBIAJBIGsiAkEfSw0ACwsLogoBD38jAEGgCGsiBCQAIARBwARqIgggACgCEEGAkwEoAgARAQAgBEGAA2oiCyAAKAIUQYCTASgCABEBACAEQcABaiIFIAtBhJMBKAIAEQEAIAUgBSAIQbyHAUHYkwEoAgARAAAgBEGgAmoiAyADIARBoAVqIgpBvIcBQdiTASgCABEAACAEQYAGaiIMIAVBvIcBQeCTASgCABECACAEQbAGaiINIANBvIcBQeCTASgCABECACAEQcAHaiIGIAAoAhAiASAAKAIUIgJBvIcBQaiTASgCABEAACAEQfAHaiIJIAFBMGogAkEwakG8hwFBqJMBKAIAEQAAIAUgBkGAkwEoAgARAQAgCCAIIAtBvIcBQdiTASgCABEAACAKIAogBEHgA2oiDkG8hwFB2JMBKAIAEQAAIAUgBSAIQbyHAUHckwEoAgARAAAgAyADIApBvIcBQdyTASgCABEAACAGIAVBvIcBQeCTASgCABECACAJIANBvIcBQeCTASgCABECACAEQeAGaiIHIAAoAggiAiAAKAIMIg9BvIcBQaiTASgCABEAACAEQZAHaiIBIAJBMGogD0EwakG8hwFBqJMBKAIAEQAAIAQgB0GAkwEoAgARAQAgBSAAKAIIQYCTASgCABEBACAHIAZB+JMBKAIAEQEAIAAoAggiAiACIAdBvIcBQaiTASgCABEAACACQTBqIgIgAiABQbyHAUGokwEo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BiAENQIAfiIFPgIAIAAgBDUCBCAGfiAFQiCIfCIFPgIEIAAgBDUCCCAGfiAFQiCIfCIFPgIIIAAgBDUCDCAGfiAFQiCIfCIFPgIMIAAgBDUCECAGfiAFQiCIfCIFPgIQIAAgBDUCFCAGfiAFQiCIfCIFPgIUIAAgBDUCGCAGfiAFQiCIfCIFPgIYIAAgBDUCHCAGfiAFQiCIfCIFPgIcIAAgBDUCICAGfiAFQiCIfCIGPgIgQTYhA0EkDAcLIAAgAa0iBiAENQIAfiIFPgIAIAAgBDUCBCAGfiAFQiCIfCIFPgIEIAAgBDUCCCAGfiAFQiCIfCIFPgIIIAAgBDUCDCAGfiAFQiCIfCIFPgIMIAAgBDUCECAGfiAFQiCIfCIFPgIQIAAgBDUCFCAGfiAFQiCIfCIFPgIUIAAgBDUCGCAGfiAFQiCIfCIFPgIYIAAgBDUCHCAGfiAFQiCIfCIFPgIcIAAgBDUCICAGfiAFQiCIfCIFPgIgIAAgBDUCJCAGfiAFQiCIfCIGPgIkQTchA0EoDAYLIAAgAa0iBiAENQIAfiIFPgIAIAAgBDUCBCAGfiAFQiCIfCIFPgIEIAAgBDUCCCAGfiAFQiCIfCIFPgIIIAAgBDUCDCAGfiAFQiCIfCIFPgIMIAAgBDUCECAGfiAFQiCIfCIFPgIQIAAgBDUCFCAGfiAFQiCIfCIFPgIUIAAgBDUCGCAGfiAFQiCIfCIFPgIYIAAgBDUCHCAGfiAFQiCIfCIFPgIcIAAgBDUCICAGfiAFQiCIfCIFPgIgIAAgBDUCJCAGfiAFQiCIfCIFPgIkIAAgBDUCKCAGfiAFQiCIfCIGPgIoQTghA0EsDAULIAAgAa0iBiAENQIAfiIFPgIAIAAgBDUCBCAGfiAFQiCIfCIFPgIEIAAgBDUCCCAGfiAFQiCIfCIFPgIIIAAgBDUCDCAGfiAFQiCIfCIFPgIMIAAgBDUCECAGfiAFQiCIfCIFPgIQIAAgBDUCFCAGfiAFQiCIfCIFPgIUIAAgBDUCGCAGfiAFQiCIfCIFPgIYIAAgBDUCHCAGfiAFQiCIfCIFPgIcIAAgBDUCICAGfiAFQiCIfCIFPgIgIAAgBDUCJCAGfiAFQiCIfCIFPgIkIAAgBDUCKCAGfiAFQiCIfCIFPgIoIAAgBDUCLCAGfiAFQiCIfCIGPgIsQTkhA0EwDAQLIAAgAa0iBiAENQIAfiIFPgIAIAAgBDUCBCAGfiAFQiCIfCIFPgIEIAAgBDUCCCAGfiAFQiCIfCIFPgIIIAAgBDUCDCAGfiAFQiCIfCIFPgIMIAAgBDUCECAGfiAFQiCIfCIFPgIQIAAgBDUCFCAGfiAFQiCIfCIFPgIUIAAgBDUCGCAGfiAFQiCIfCIFPgIYIAAgBDUCHCAGfiAFQiCIfCIFPgIcIAAgBDUCICAGfiAFQiCIfCIFPgIgIAAgBDUCJCAGfiAFQiCIfCIFPgIkIAAgBDUCKCAGfiAFQiCIfCIFPgIoIAAgBDUCLCAGfiAFQiCIfCIFPgIsIAAgBDUCMCAGfiAFQiCIfCIGPgIwQTohA0E0DAMLIAAgAa0iBiAENQIAfiIFPgIAIAAgBDUCBCAGfiAFQiCIfCIFPgIEIAAgBDUCCCAGfiAFQiCIfCIFPgIIIAAgBDUCDCAGfiAFQiCIfCIFPgIMIAAgBDUCECAGfiAFQiCIfCIFPgIQIAAgBDUCFCAGfiAFQiCIfCIFPgIUIAAgBDUCGCAGfiAFQiCIfCIFPgIYIAAgBDUCHCAGfiAFQiCIfCIFPgIcIAAgBDUCICAGfiAFQiCIfCIFPgIgIAAgBDUCJCAGfiAFQiCIfCIFPgIkIAAgBDUCKCAGfiAFQiCIfCIFPgIoIAAgBDUCLCAGfiAFQiCIfCIFPgIsIAAgBDUCMCAGfiAFQiCIfCIFPgIwIAAgBDUCNCAGfiAFQiCIfCIGPgI0QTshA0E4DAILIAAgAa0iBiAENQIAfiIFPgIAIAAgBDUCBCAGfiAFQiCIfCIFPgIEIAAgBDUCCCAGfiAFQiCIfCIFPgIIIAAgBDUCDCAGfiAFQiCIfCIFPgIMIAAgBDUCECAGfiAFQiCIfCIFPgIQIAAgBDUCFCAGfiAFQiCIfCIFPgIUIAAgBDUCGCAGfiAFQiCIfCIFPgIYIAAgBDUCHCAGfiAFQiCIfCIFPgIcIAAgBDUCICAGfiAFQiCIfCIFPgIgIAAgBDUCJCAGfiAFQiCIfCIFPgIkIAAgBDUCKCAGfiAFQiCIfCIFPgIoIAAgBDUCLCAGfiAFQiCIfCIFPgIsIAAgBDUCMCAGfiAFQiCIfCIFPgIwIAAgBDUCNCAGfiAFQiCIfCIFPgI0IAAgBDUCOCAGfiAFQiCIfCIGPgI4QTwhA0E8DAELIAAgAa0iBiAENQIAfiIFPgIAIAAgBDUCBCAGfiAFQiCIfCIFPgIEIAAgBDUCCCAGfiAFQiCIfCIFPgIIIAAgBDUCDCAGfiAFQiCIfCIFPgIMIAAgBDUCECAGfiAFQiCIfCIFPgIQIAAgBDUCFCAGfiAFQiCIfCIFPgIUIAAgBDUCGCAGfiAFQiCIfCIFPgIYIAAgBDUCHCAGfiAFQiCIfCIFPgIcIAAgBDUCICAGfiAFQiCIfCIFPgIgIAAgBDUCJCAGfiAFQiCIfCIFPgIkIAAgBDUCKCAGfiAFQiCIfCIFPgIoI