{"version":3,"sources":["webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/actor.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/agent/api.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/agent/http/index.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/agent/http/transforms.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/agent/http/types.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/agent/index.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/agent/proxy.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/auth.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/canisters/asset.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/canisters/asset_idl.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/canisters/management.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/canisters/management_idl.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/cbor.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/certificate.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/errors.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/index.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/polling/index.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/polling/strategy.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/request_id.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/utils/bls.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/cjs/vendor/bls/bls.js","webpack://hello_assets/./node_modules/@dfinity/candid/lib/esm/utils/leb128.js","webpack://hello_assets/./node_modules/@dfinity/candid/lib/esm/types.js","webpack://hello_assets/./node_modules/@dfinity/candid/lib/esm/utils/hash.js","webpack://hello_assets/./node_modules/@dfinity/candid/lib/esm/idl.js","webpack://hello_assets/./node_modules/@dfinity/candid/lib/esm/candid-core.js","webpack://hello_assets/./node_modules/@dfinity/candid/lib/esm/candid-ui.js","webpack://hello_assets/./node_modules/@dfinity/principal/lib/esm/utils/base32.js","webpack://hello_assets/./node_modules/@dfinity/principal/lib/esm/utils/getCrc.js","webpack://hello_assets/./node_modules/@dfinity/principal/lib/esm/index.js","webpack://hello_assets/./node_modules/@dfinity/principal/lib/esm/utils/sha224.js","webpack://hello_assets/./node_modules/base64-arraybuffer/lib/base64-arraybuffer.js","webpack://hello_assets/./node_modules/base64-js/index.js","webpack://hello_assets/./node_modules/bignumber.js/bignumber.js","webpack://hello_assets/./node_modules/borc/node_modules/buffer/index.js","webpack://hello_assets/./node_modules/borc/src/constants.js","webpack://hello_assets/./node_modules/borc/src/decoder.asm.js","webpack://hello_assets/./node_modules/borc/src/decoder.js","webpack://hello_assets/./node_modules/borc/src/diagnose.js","webpack://hello_assets/./node_modules/borc/src/encoder.js","webpack://hello_assets/./node_modules/borc/src/index.js","webpack://hello_assets/./node_modules/borc/src/simple.js","webpack://hello_assets/./node_modules/borc/src/tagged.js","webpack://hello_assets/./node_modules/borc/src/utils.js","webpack://hello_assets/./node_modules/buffer-pipe/index.js","webpack://hello_assets/./node_modules/buffer/index.js","webpack://hello_assets/./node_modules/ieee754/index.js","webpack://hello_assets/./node_modules/iso-url/index.js","webpack://hello_assets/./node_modules/iso-url/src/relative.js","webpack://hello_assets/./node_modules/iso-url/src/url-browser.js","webpack://hello_assets/./node_modules/js-sha256/src/sha256.js","webpack://hello_assets/./node_modules/process/browser.js","webpack://hello_assets/./node_modules/safe-buffer/index.js","webpack://hello_assets/./node_modules/simple-cbor/src/index.js","webpack://hello_assets/./node_modules/simple-cbor/src/serializer.js","webpack://hello_assets/./node_modules/simple-cbor/src/value.js","webpack://hello_assets/webpack/bootstrap","webpack://hello_assets/webpack/runtime/amd options","webpack://hello_assets/webpack/runtime/compat get default export","webpack://hello_assets/webpack/runtime/define property getters","webpack://hello_assets/webpack/runtime/global","webpack://hello_assets/webpack/runtime/hasOwnProperty shorthand","webpack://hello_assets/webpack/runtime/make namespace object","webpack://hello_assets/./node_modules/@dfinity/agent/lib/esm/agent/api.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/esm/request_id.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/esm/auth.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/esm/cbor.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/esm/agent/http/transforms.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/esm/agent/http/types.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/esm/agent/http/index.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/esm/agent/proxy.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/esm/agent/index.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/esm/canisters/management_idl.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/esm/canisters/management.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/esm/errors.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/esm/vendor/bls/bls.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/esm/utils/bls.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/esm/certificate.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/esm/polling/index.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/esm/actor.js","webpack://hello_assets/./node_modules/@dfinity/agent/lib/esm/polling/strategy.js","webpack://hello_assets/./.dfx/ic/canisters/hello/hello.did.js","webpack://hello_assets/./.dfx/ic/canisters/hello/hello.js","webpack://hello_assets/./src/hello_assets/src/index.js"],"names":["Object","defineProperty","exports","value","Actor","CanisterInstallMode","UpdateCallRejectedError","QueryCallRejectedError","ActorCallError","buffer_1","agent_1","management_1","errors_1","candid_1","polling_1","principal_1","request_id_1","AgentError","constructor","canisterId","methodName","type","props","super","toText","getOwnPropertyNames","map","n","JSON","stringify","join","this","result","_a","Status","status","Code","ReplicaRejectCode","reject_code","Message","reject_message","requestId","response","toHex","toString","statusText","metadataSymbol","Symbol","for","metadata","freeze","actor","config","agent","service","Principal","from","fields","mode","undefined","Install","arg","wasmModule","module","fromText","getManagementCanister","install_code","wasm_module","canister_id","provisional_create_canister_with_cycles","amount","settings","interfaceFactory","createCanister","install","assign","createActor","IDL","DEFAULT_ACTOR_CONFIG","func","_fields","_createActorMethod","configuration","createActorClass","decodeReturnValue","types","msg","returnValues","decode","Buffer","length","pollingStrategyFactory","strategy","defaultStrategy","caller","annotations","includes","async","options","args","_b","queryTransform","call","getDefaultAgent","cid","encode","argTypes","query","retTypes","reply","callTransform","effectiveCanisterId","ecid","ok","pollStrategy","responseBytes","pollForResponse","Error","handler","withOptions","__createBinding","create","o","m","k","k2","enumerable","get","__setModuleDefault","v","__importStar","mod","__esModule","hasOwnProperty","__exportStar","p","HttpAgent","RequestStatusResponseStatus","auth_1","cbor","transforms_1","types_1","DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS","_pipeline","_rootKeyFetched","rootKey","blobFromHex","source","_identity","_fetch","_host","_credentials","fetch","window","g","self","bind","getDefaultFetch","host","match","URL","location","protocol","credentials","name","password","Promise","resolve","identity","AnonymousIdentity","addTransform","fn","priority","i","findIndex","x","splice","getPrincipal","id","canister","sender","anonymous","submit","request_type","SubmitRequestType","Call","method_name","ingress_expiry","Expiry","transformedRequest","_transform","request","body","method","headers","Authorization","btoa","endpoint","transformRequest","all","requestIdOf","text","arrayBuffer","paths","buffer","Uint8Array","blobFromUint8Array","root_key","then","r","r2","makeExpiryTransform","makeNonceTransform","NANOSECONDS_PER_MILLISECONDS","BigInt","REPLICA_PERMITTED_DRIFT_MILLISECONDS","deltaInMSec","_value","Date","now","toCBOR","u64","toHash","lebEncode","nonceFn","makeNonce","nonce","delayInMilliseconds","ic","ProxyAgent","ProxyStubAgent","ProxyMessageKind","_frontend","_agent","onmessage","GetPrincipal","GetPrincipalResponse","Query","QueryResponse","CallResponse","ReadState","readState","ReadStateResponse","StatusResponse","_backend","_nextId","_pendingCalls","Map","maybePromise","delete","reject","error","_sendAndWait","principal","set","__rest","s","e","t","prototype","indexOf","getOwnPropertySymbols","propertyIsEnumerable","isIdentityDescriptor","createIdentityDescriptor","SignIdentity","domainSeparator","TextEncoder","_principal","selfAuthenticating","getPublicKey","toDer","content","sender_pubkey","sender_sig","sign","blobFromBuffer","concat","publicKey","__importDefault","createAssetCanisterActor","actor_1","asset_idl_1","default","Service","retrieve","Func","Text","Vec","Nat8","store","management_idl_1","transform","callConfig","first","fromHex","CanisterSettings","Record","compute_allocation","Opt","Nat","memory_allocation","create_canister","Variant","Null","reinstall","upgrade","set_controller","new_controller","CborTag","borc_1","simple_cbor_1","serializer","SelfDescribeCborSerializer","withDefaultEncoders","decodePositiveBigInt","buf","len","byteLength","res","addEncoder","_isPrincipal","bytes","toUint8Array","isBuffer","tagged","serialize","input","Decoder","size","tags","val","Semantic","decodeFirst","lookup_path","lookupPathEx","reconstruct","Certificate","hashTreeToString","UnverifiedCertificateError","bls_1","isBufferEqual","a","b","tree","indent","split","left","right","label","decoder","TextDecoder","fatal","labelToString","sub","blobToHex","verified","_rootKey","cert","certificate","lookupEx","path","checkState","lookup","rootHash","derKey","_checkDelegation","delegation","sig","signature","key","expectedLength","DER_PREFIX","TypeError","prefix","slice","extractDER","domain_sep","blsVerify","d","verify","subnet_id","hash","alloc","writeUInt8","maybeReturn","blobFromText","blobToUint8Array","l","trees","find_label","flatten_forks","polling","Cbor","certificate_1","strategy_1","state","maybeBuf","Unknown","Replied","Received","Processing","Rejected","rejectCode","rejectMessage","Done","chain","backoff","timeout","throttle","maxAttempts","conditionalDelay","once","__1","condition","timeInMsec","setTimeout","end","startingThrottleInMsec","backoffFactor","currentThrottling","strategies","count","attempts","throttleInMsec","js_sha256_1","data","hashed","sha256","update","hashValue","Tagged","hashString","ArrayBuffer","Array","isArray","vals","encoded","bs","entries","filter","sort","k1","compare","pk","bls_init","pk1","sig1","msg1","bls_verify","base64Arraybuffer","wasm","wasmBytesBase64","replace","wasmBytes","cachegetUint8Memory0","passArray8ToWasm0","malloc","ptr","memory","w","ptr0","len0","__wbindgen_malloc","ptr1","len1","ptr2","len2","init","instance","imports","Response","WebAssembly","instantiate","Instance","load","__wbindgen_wasm_module","safeRead","pipe","num","read","Number","write","lebDecode","byte","weight","valueOf","slebEncode","isNeg","getLowerBytes","slebDecode","pipeView","writeUIntLE","writeIntLE","mul","readUIntLE","readIntLE","arr","blobFromUint32Array","derBlobFromBlob","blob","hex","Math","floor","random","idlLabelToId","test","isSafeInteger","array","h","c","idlHash","magicNumber","zipWith","xs","ys","f","TypeTable","_typs","_idx","has","obj","add","idx","push","merge","knot","knotIdx","typeName","Visitor","visitType","visitPrimitive","visitEmpty","visitBool","visitNull","visitReserved","visitText","visitNumber","visitInt","visitNat","visitFloat","visitFixedInt","visitFixedNat","visitPrincipal","visitConstruct","visitVec","ty","visitOpt","visitRecord","visitTuple","components","visitVariant","visitRec","visitFunc","visitService","Type","display","valueToString","buildTypeTable","typeTable","_buildTypeTableImpl","PrimitiveType","checkType","ConstructType","RecClass","getType","encodeType","EmptyClass","accept","covariant","encodeValue","decodeValue","BoolClass","writeInt8","NullClass","ReservedClass","isValidUTF8","TextClass","IntClass","isInteger","NatClass","FloatClass","_bits","writeFloatLE","writeDoubleLE","readFloatLE","readDoubleLE","FixedIntClass","min","max","log2","FixedNatClass","bits","VecClass","_type","_blobOptimization","every","opCode","vec","rets","OptClass","opt","RecordClass","tryAsTuple","values","bufs","T","forEach","_","record","expectKey","expectType","TupleClass","_components","tuple","wireType","VariantClass","variant","wireHash","arguments","_id","_counter","fill","decodePrincipalId","toUpperCase","PrincipalClass","FuncClass","methodLen","argLen","retLen","annLen","anns","encodeAnnotation","str","ann","ServiceClass","meths","labelBuf","labelLen","magic","table","typs","toReadableString","rawTable","rawTypes","prevHash","objectLength","pow","funcLength","servLength","rawList","readTypeTable","Rec","Bool","Int","Nat16","Nat32","Nat64","Int8","Int16","Int32","Int64","Float32","Float64","Reserved","Empty","entry","Tuple","buildType","output","ind","ret","InputBox","idl","ui","document","createElement","className","addEventListener","parse","style","classList","remove","isRejected","form","err","innerHTML","message","render","dom","container","innerText","appendChild","InputForm","renderForm","open","event","oldContainer","nextElementSibling","parentNode","removeChild","generateForm","RecordForm","labelMap","some","TupleForm","VariantForm","index","selectedIndex","select","selected","OptionForm","checked","VecForm","InputConfig","Random","Parse","FormConfig","renderInput","inputBox","recordForm","tupleForm","variantForm","optForm","vecForm","Render","placeholder","option","Option","checkbox","width","parseFloat","substring","generateNumber","signed","renderValue","RenderValue","dispatchEvent","Event","alphabet","lookupTable","lookUpTable","Uint32Array","_arr","sha","shaObj","sha224","other","parseInt","skip","decodeChar","char","toLowerCase","isAnonymous","reduce","padStart","checksumArrayBuf","DataView","setUint32","crc","getCrc32","checksum","matches","chars","charCodeAt","arraybuffer","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","parts","maxChunkLength","encodeChunk","code","start","globalObject","BigNumber","isNumeric","mathceil","ceil","mathfloor","bignumberError","tooManyDigits","BASE","LOG_BASE","MAX_SAFE_INTEGER","POWS_TEN","SQRT_BASE","MAX","bitFloor","coeffToString","z","j","y","xc","yc","intCheck","String","isOdd","toExponential","charAt","toFixedPoint","zs","clone","configObject","div","convertBase","parseNumeric","pow2_53","random53bitInt","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","P","ONE","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","groupSize","secondaryGroupSize","groupSeparator","decimalSeparator","fractionGroupSize","fractionGroupSeparator","suffix","ALPHABET","caseChanged","isNum","_isBigNumber","search","round","DEBUG","format","rm","c0","ne","maxOrMin","normalise","pop","sd","ni","rd","pows10","out","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","crypto","getRandomValues","randomBytes","EXPONENTIAL_AT","RANGE","isBigNumber","maximum","lt","minimum","gt","dp","rand","copy","sum","plus","decimal","toBaseOut","baseIn","baseOut","arrL","reverse","callerIsToString","multiply","base","temp","xlo","xhi","carry","klo","khi","aL","bL","cmp","subtract","more","prod","prodL","q","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","NaN","isNaN","p1","p2","absoluteValue","abs","comparedTo","decimalPlaces","dividedBy","dividedToIntegerBy","idiv","exponentiatedBy","half","isModExp","nIsBig","nIsNeg","nIsOdd","times","integerValue","isEqualTo","eq","isFinite","isGreaterThan","isGreaterThanOrEqualTo","gte","isLessThan","isLessThanOrEqualTo","lte","isNegative","isPositive","isZero","minus","xLTy","xe","ye","modulo","multipliedBy","xcL","ycL","ylo","yhi","zc","sqrtBase","negated","precision","shiftedBy","squareRoot","sqrt","rep","toFixed","toFormat","g1","g2","intPart","fractionPart","intDigits","substr","RegExp","toFraction","md","d0","d1","d2","exp","n0","n1","toNumber","toPrecision","toJSON","ieee754","customInspectSymbol","SlowBuffer","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","setPrototypeOf","encodingOrOffset","allocUnsafe","string","encoding","isEncoding","actual","fromString","isView","arrayView","isInstance","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","numberIsNaN","fromObject","toPrimitive","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","offset","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","console","poolSize","allocUnsafeSlow","_isBuffer","list","pos","swap16","swap32","swap64","toLocaleString","equals","inspect","trim","target","thisStart","thisEnd","thisCopy","targetCopy","hexSliceLookupTable","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatBE","readDoubleBE","writeUintLE","writeUintBE","writeUIntBE","writeUint8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","limit","writeIntBE","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatBE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","Infinity","leadSurrogate","base64clean","src","dst","i16","Bignumber","MT","POS_INT","NEG_INT","BYTE_STRING","UTF8_STRING","ARRAY","MAP","TAG","SIMPLE_FLOAT","DATE_STRING","DATE_EPOCH","POS_BIGINT","NEG_BIGINT","DECIMAL_FRAC","BIGFLOAT","BASE64URL_EXPECTED","BASE64_EXPECTED","BASE16_EXPECTED","CBOR","URI","BASE64URL","BASE64","REGEXP","MIME","NUMBYTES","ZERO","TWO","FOUR","EIGHT","INDEFINITE","SIMPLE","FALSE","TRUE","NULL","UNDEFINED","SYMS","PARENT","BREAK","STREAM","SHIFT32","SHIFT16","MAX_SAFE_HIGH","NEG_ONE","TEN","OBJECT","stdlib","foreign","heap","pushInt","pushInt32","pushInt32Neg","pushInt64","pushInt64Neg","pushFloat","pushFloatSingle","pushFloatDouble","pushTrue","pushFalse","pushUndefined","pushNull","pushInfinity","pushInfinityNeg","pushNaN","pushNaNNeg","pushArrayStart","pushArrayStartFixed","pushArrayStartFixed32","pushArrayStartFixed64","pushObjectStart","pushObjectStartFixed","pushObjectStartFixed32","pushObjectStartFixed64","pushByteString","pushByteStringStart","pushUtf8String","pushUtf8StringStart","pushSimpleUnassigned","pushTagStart","pushTagStart4","pushTagStart8","pushTagUnassigned","pushBreak","inputLength","jumpTable","readUInt16","readUInt32","INT_P","octet","UINT_P_8","UINT_P_16","UINT_P_32","UINT_P_64","INT_N","UINT_N_8","UINT_N_16","UINT_N_32","UINT_N_64","step","BYTE_STRING_8","BYTE_STRING_16","BYTE_STRING_32","BYTE_STRING_64","BYTE_STRING_BREAK","UTF8_STRING_8","UTF8_STRING_16","UTF8_STRING_32","UTF8_STRING_64","UTF8_STRING_BREAK","ARRAY_8","ARRAY_16","ARRAY_32","ARRAY_64","ARRAY_BREAK","MAP_8","MAP_16","MAP_32","MAP_64","MAP_BREAK","TAG_KNOWN","TAG_BIGNUM_POS","TAG_BIGNUM_NEG","TAG_FRAC","TAG_BIGNUM_FLOAT","TAG_UNASSIGNED","TAG_BASE64_URL","TAG_BASE64","TAG_BASE16","TAG_MORE_1","TAG_MORE_2","TAG_MORE_4","TAG_MORE_8","SIMPLE_UNASSIGNED","SIMPLE_FALSE","SIMPLE_TRUE","SIMPLE_NULL","SIMPLE_UNDEFINED","SIMPLE_BYTE","SIMPLE_FLOAT_HALF","mant","SIMPLE_FLOAT_SINGLE","SIMPLE_FLOAT_DOUBLE","ERROR","parser","utils","Simple","opts","nextPowerOf2","_heap","_heap8","_buffer","_reset","_knownTags","arrayBufferToBignumber","log","_parents","_depth","_currentParent","ref","_closeParent","_push","createTag","createByteString","createUtf8String","createMap","createObject","createArray","_dec","hasChildren","_ref","tmpKey","buildMap","_createParent","_res","tagNumber","typ","raw","createByteStringFromHeap","createInt","createInt32","buildInt32","createInt64","f1","f2","buildInt64","createFloat","createFloatSingle","createFloatDouble","createInt32Neg","createInt64Neg","createTrue","createFalse","createNull","createUndefined","createInfinity","createInfinityNeg","createNaN","createNaNNeg","createUtf8StringFromHeap","createSimpleUnassigned","_createArrayStartFixed","len3","len4","_createObjectStartFixed","tag","_decode","decodeAll","enc","Diagnose","fl","isNegativeZero","keys","collectObject","acc","constants","HALF","FLOAT","DOUBLE","MAXINT_BN","BUF_NAN","BUF_INF_NEG","BUF_INF_POS","Encoder","streaming","stream","onData","semanticTypes","_pushUrl","_pushBigNumber","addTypes","genTypes","addSemanticType","fun","old","resultMethod","resultLength","finalize","pushWrite","_pushUInt8","_pushUInt16BE","_pushUInt32BE","_pushDoubleBE","_pushNaN","_pushInfinity","_pushFloat","b2","writeHalf","parseHalf","b4","_pushInt","mt","orig","_pushIntNum","_pushNumber","_pushString","_pushBoolean","_pushUndefined","_pushArray","gen","pushAny","_pushTag","_pushDate","_pushBuffer","_pushNoFilter","_pushRegexp","_pushSet","_pushBigint","dec","slide","_pushMap","_pushRawMap","_pushObject","encodeCBOR","keyLength","keySorter","toType","diagnose","leveldb","hasParent","convert","converters","er","u32","u","s16","lenA","lenB","_bytesRead","_bytesWrote","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","readBigUInt64LE","defineBigIntMethod","validateNumber","last","boundsError","readBigUInt64BE","readBigInt64LE","readBigInt64BE","writeBigUInt64LE","writeBigUInt64BE","writeBigInt64LE","writeBigInt64BE","errors","E","sym","getMessage","Base","writable","configurable","stack","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","received","BufferBigIntNotDefined","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","LN2","URLWithLegacySupport","URLSearchParams","defaultBase","relative","url","protocolMap","defaultProtocol","urlParsed","pathname","auth","username","startsWith","hostname","href","origin","port","searchParams","createObjectURL","revokeObjectURL","userPass","WINDOW","root","JS_SHA256_NO_WINDOW","WEB_WORKER","NODE_JS","JS_SHA256_NO_NODE_JS","process","versions","node","COMMON_JS","JS_SHA256_NO_COMMON_JS","AMD","ARRAY_BUFFER","JS_SHA256_NO_ARRAY_BUFFER","HEX_CHARS","EXTRA","SHIFT","K","OUTPUT_TYPES","blocks","JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW","createOutputMethod","outputType","is224","Sha256","createMethod","nodeWrap","eval","algorithm","nodeMethod","createHash","digest","createHmacOutputMethod","HmacSha256","createHmacMethod","sharedMemory","h0","h1","h2","h3","h4","h5","h6","h7","block","hBytes","finalized","oKeyPad","iKeyPad","inner","notString","lastByteIndex","s0","s1","maj","t1","ab","da","cd","bc","dataView","innerHash","hmac","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","noop","nextTick","title","browser","env","argv","version","on","addListener","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","copyProps","SafeBuffer","__export","BufferClasses","Uint16Array","Int8Array","Int16Array","Int32Array","Float32Array","Float64Array","JsonDefaultCborEncoder","_serializer","_stable","undefined_","bool","number","doubleFloat","null_","serializeValue","find","item","ToCborEncoder","CborSerializer","_encoders","Set","stable","removeEncoder","encoder","getEncoderFor","chosenEncoder","_concat","newBuffer","_serializeValue","major","minor","_serializeNumber","_serializeString","utf8","charcode","uSmall","u8","radix","u16","iSmall","i8","i32","i64","done","newI64","reduceRight","true_","false_","items","keyA","keyB","localeCompare","singleFloat","single","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","amdO","getter","definition","globalThis","Function","prop","toStringTag","idlFactory","hello","getElementById","greeting","greet"],"mappings":"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GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAmG,GAEAC,GAEAC,GAEAC,GAEAmC,GACAA,GACAA,GACAlC,GAEAtG,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAuG,GAEAC,GAEAC,GAEAC,GAEA8B,GACAA,GACAA,GACA7B,GAEA1G,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEA2G,GAEAC,GAEAC,GAEAC,GACAyB,GACAA,GACAA,GAEAxB,GAEAC,GAEAA,GAEAA,GAEAA,GAEAA,GAEAA,GAEAK,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAA,GACAA,GACAA,GAEAI,GACAC,GACAC,GACAC,GACAW,GACAA,GACAA,GACAA,GAEAV,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAC,GAEAC,GAEAC,GAEAC,GAEAC,GAEAC,GAEAE,GAEAC,GACAC,GACAA,GACAA,GAEAxG,IAKF,MAAO,CACLlgB,MAAOA,K,2BCpzCX,MAAM,OAAE9kB,GAAW,EAAQ,KACrB04B,EAAU,EAAQ,KAClBgK,EAAY,iBAEZ+I,EAAS,EAAQ,KACjBC,EAAQ,EAAQ,KAChBrxB,EAAI,EAAQ,KACZsxB,EAAS,EAAQ,KACjBr2B,EAAS,EAAQ,MACjB,IAAE/Q,GAAQ,EAAQ,KAKxB,MAAMwK,EAKJtT,YAAamwC,KACXA,EAAOA,GAAQ,IAEL58B,MAAQ48B,EAAK58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","file":"index.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Actor = exports.CanisterInstallMode = exports.UpdateCallRejectedError = exports.QueryCallRejectedError = exports.ActorCallError = void 0;\nconst buffer_1 = require(\"buffer/\");\nconst agent_1 = require(\"./agent\");\nconst management_1 = require(\"./canisters/management\");\nconst errors_1 = require(\"./errors\");\nconst candid_1 = require(\"@dfinity/candid\");\nconst polling_1 = require(\"./polling\");\nconst principal_1 = require(\"@dfinity/principal\");\nconst request_id_1 = require(\"./request_id\");\nclass ActorCallError extends errors_1.AgentError {\n constructor(canisterId, methodName, type, props) {\n super([\n `Call failed:`,\n ` Canister: ${canisterId.toText()}`,\n ` Method: ${methodName} (${type})`,\n ...Object.getOwnPropertyNames(props).map(n => ` \"${n}\": ${JSON.stringify(props[n])}`),\n ].join('\\n'));\n this.canisterId = canisterId;\n this.methodName = methodName;\n this.type = type;\n this.props = props;\n }\n}\nexports.ActorCallError = ActorCallError;\nclass QueryCallRejectedError extends ActorCallError {\n constructor(canisterId, methodName, result) {\n var _a;\n super(canisterId, methodName, 'query', {\n Status: result.status,\n Code: (_a = agent_1.ReplicaRejectCode[result.reject_code]) !== null && _a !== void 0 ? _a : `Unknown Code \"${result.reject_code}\"`,\n Message: result.reject_message,\n });\n this.result = result;\n }\n}\nexports.QueryCallRejectedError = QueryCallRejectedError;\nclass UpdateCallRejectedError extends ActorCallError {\n constructor(canisterId, methodName, requestId, response) {\n super(canisterId, methodName, 'update', {\n 'Request ID': request_id_1.toHex(requestId),\n 'HTTP status code': response.status.toString(),\n 'HTTP status text': response.statusText,\n });\n this.requestId = requestId;\n this.response = response;\n }\n}\nexports.UpdateCallRejectedError = UpdateCallRejectedError;\n/**\n * The mode used when installing a canister.\n */\nvar CanisterInstallMode;\n(function (CanisterInstallMode) {\n CanisterInstallMode[\"Install\"] = \"install\";\n CanisterInstallMode[\"Reinstall\"] = \"reinstall\";\n CanisterInstallMode[\"Upgrade\"] = \"upgrade\";\n})(CanisterInstallMode = exports.CanisterInstallMode || (exports.CanisterInstallMode = {}));\nconst metadataSymbol = Symbol.for('ic-agent-metadata');\n/**\n * An actor base class. An actor is an object containing only functions that will\n * return a promise. These functions are derived from the IDL definition.\n */\nclass Actor {\n constructor(metadata) {\n this[metadataSymbol] = Object.freeze(metadata);\n }\n /**\n * Get the Agent class this Actor would call, or undefined if the Actor would use\n * the default agent (global.ic.agent).\n * @param actor The actor to get the agent of.\n */\n static agentOf(actor) {\n return actor[metadataSymbol].config.agent;\n }\n /**\n * Get the interface of an actor, in the form of an instance of a Service.\n * @param actor The actor to get the interface of.\n */\n static interfaceOf(actor) {\n return actor[metadataSymbol].service;\n }\n static canisterIdOf(actor) {\n return principal_1.Principal.from(actor[metadataSymbol].config.canisterId);\n }\n static async install(fields, config) {\n const mode = fields.mode === undefined ? CanisterInstallMode.Install : fields.mode;\n // Need to transform the arg into a number array.\n const arg = fields.arg ? [...fields.arg] : [];\n // Same for module.\n const wasmModule = [...fields.module];\n const canisterId = typeof config.canisterId === 'string'\n ? principal_1.Principal.fromText(config.canisterId)\n : config.canisterId;\n await management_1.getManagementCanister(config).install_code({\n mode: { [mode]: null },\n arg,\n wasm_module: wasmModule,\n canister_id: canisterId,\n });\n }\n static async createCanister(config) {\n const { canister_id: canisterId } = await management_1.getManagementCanister(config || {}).provisional_create_canister_with_cycles({ amount: [], settings: [] });\n return canisterId;\n }\n static async createAndInstallCanister(interfaceFactory, fields, config) {\n const canisterId = await this.createCanister(config);\n await this.install(Object.assign({}, fields), Object.assign(Object.assign({}, config), { canisterId }));\n return this.createActor(interfaceFactory, Object.assign(Object.assign({}, config), { canisterId }));\n }\n static createActorClass(interfaceFactory) {\n const service = interfaceFactory({ IDL: candid_1.IDL });\n class CanisterActor extends Actor {\n constructor(config) {\n const canisterId = typeof config.canisterId === 'string'\n ? principal_1.Principal.fromText(config.canisterId)\n : config.canisterId;\n super({\n config: Object.assign(Object.assign(Object.assign({}, DEFAULT_ACTOR_CONFIG), config), { canisterId }),\n service,\n });\n for (const [methodName, func] of service._fields) {\n this[methodName] = _createActorMethod(this, methodName, func);\n }\n }\n }\n return CanisterActor;\n }\n static createActor(interfaceFactory, configuration) {\n return new (this.createActorClass(interfaceFactory))(configuration);\n }\n}\nexports.Actor = Actor;\n// IDL functions can have multiple return values, so decoding always\n// produces an array. Ensure that functions with single or zero return\n// values behave as expected.\nfunction decodeReturnValue(types, msg) {\n const returnValues = candid_1.IDL.decode(types, buffer_1.Buffer.from(msg));\n switch (returnValues.length) {\n case 0:\n return undefined;\n case 1:\n return returnValues[0];\n default:\n return returnValues;\n }\n}\nconst DEFAULT_ACTOR_CONFIG = {\n pollingStrategyFactory: polling_1.strategy.defaultStrategy,\n};\nfunction _createActorMethod(actor, methodName, func) {\n let caller;\n if (func.annotations.includes('query')) {\n caller = async (options, ...args) => {\n var _a, _b;\n // First, if there's a config transformation, call it.\n options = Object.assign(Object.assign({}, options), (_b = (_a = actor[metadataSymbol].config).queryTransform) === null || _b === void 0 ? void 0 : _b.call(_a, methodName, args, Object.assign(Object.assign({}, actor[metadataSymbol].config), options)));\n const agent = options.agent || actor[metadataSymbol].config.agent || agent_1.getDefaultAgent();\n const cid = principal_1.Principal.from(options.canisterId || actor[metadataSymbol].config.canisterId);\n const arg = candid_1.IDL.encode(func.argTypes, args);\n const result = await agent.query(cid, { methodName, arg });\n switch (result.status) {\n case \"rejected\" /* Rejected */:\n throw new QueryCallRejectedError(cid, methodName, result);\n case \"replied\" /* Replied */:\n return decodeReturnValue(func.retTypes, result.reply.arg);\n }\n };\n }\n else {\n caller = async (options, ...args) => {\n var _a, _b;\n // First, if there's a config transformation, call it.\n options = Object.assign(Object.assign({}, options), (_b = (_a = actor[metadataSymbol].config).callTransform) === null || _b === void 0 ? void 0 : _b.call(_a, methodName, args, Object.assign(Object.assign({}, actor[metadataSymbol].config), options)));\n const agent = options.agent || actor[metadataSymbol].config.agent || agent_1.getDefaultAgent();\n const { canisterId, effectiveCanisterId, pollingStrategyFactory } = Object.assign(Object.assign(Object.assign({}, DEFAULT_ACTOR_CONFIG), actor[metadataSymbol].config), options);\n const cid = principal_1.Principal.from(canisterId);\n const ecid = effectiveCanisterId !== undefined ? principal_1.Principal.from(effectiveCanisterId) : cid;\n const arg = candid_1.IDL.encode(func.argTypes, args);\n const { requestId, response } = await agent.call(cid, {\n methodName,\n arg,\n effectiveCanisterId: ecid,\n });\n if (!response.ok) {\n throw new UpdateCallRejectedError(cid, methodName, requestId, response);\n }\n const pollStrategy = pollingStrategyFactory();\n const responseBytes = await polling_1.pollForResponse(agent, ecid, requestId, pollStrategy);\n if (responseBytes !== undefined) {\n return decodeReturnValue(func.retTypes, responseBytes);\n }\n else if (func.retTypes.length === 0) {\n return undefined;\n }\n else {\n throw new Error(`Call was returned undefined, but type [${func.retTypes.join(',')}].`);\n }\n };\n }\n const handler = (...args) => caller({}, ...args);\n handler.withOptions =\n (options) => (...args) => caller(options, ...args);\n return handler;\n}\n//# sourceMappingURL=actor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReplicaRejectCode = void 0;\n/**\n * Codes used by the replica for rejecting a message.\n * See {@link https://sdk.dfinity.org/docs/interface-spec/#reject-codes | the interface spec}.\n */\nvar ReplicaRejectCode;\n(function (ReplicaRejectCode) {\n ReplicaRejectCode[ReplicaRejectCode[\"SysFatal\"] = 1] = \"SysFatal\";\n ReplicaRejectCode[ReplicaRejectCode[\"SysTransient\"] = 2] = \"SysTransient\";\n ReplicaRejectCode[ReplicaRejectCode[\"DestinationInvalid\"] = 3] = \"DestinationInvalid\";\n ReplicaRejectCode[ReplicaRejectCode[\"CanisterReject\"] = 4] = \"CanisterReject\";\n ReplicaRejectCode[ReplicaRejectCode[\"CanisterError\"] = 5] = \"CanisterError\";\n})(ReplicaRejectCode = exports.ReplicaRejectCode || (exports.ReplicaRejectCode = {}));\n//# sourceMappingURL=api.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpAgent = exports.RequestStatusResponseStatus = void 0;\nconst buffer_1 = require(\"buffer/\");\nconst auth_1 = require(\"../../auth\");\nconst cbor = __importStar(require(\"../../cbor\"));\nconst principal_1 = require(\"@dfinity/principal\");\nconst request_id_1 = require(\"../../request_id\");\nconst candid_1 = require(\"@dfinity/candid\");\nconst transforms_1 = require(\"./transforms\");\nconst types_1 = require(\"./types\");\n__exportStar(require(\"./transforms\"), exports);\nvar RequestStatusResponseStatus;\n(function (RequestStatusResponseStatus) {\n RequestStatusResponseStatus[\"Received\"] = \"received\";\n RequestStatusResponseStatus[\"Processing\"] = \"processing\";\n RequestStatusResponseStatus[\"Replied\"] = \"replied\";\n RequestStatusResponseStatus[\"Rejected\"] = \"rejected\";\n RequestStatusResponseStatus[\"Unknown\"] = \"unknown\";\n RequestStatusResponseStatus[\"Done\"] = \"done\";\n})(RequestStatusResponseStatus = exports.RequestStatusResponseStatus || (exports.RequestStatusResponseStatus = {}));\n// Default delta for ingress expiry is 5 minutes.\nconst DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS = 5 * 60 * 1000;\n// Root public key for the IC, encoded as hex\nconst IC_ROOT_KEY = '308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100814' +\n 'c0e6ec71fab583b08bd81373c255c3c371b2e84863c98a4f1e08b74235d14fb5d9c0cd546d968' +\n '5f913a0c0b2cc5341583bf4b4392e467db96d65b9bb4cb717112f8472e0d5a4d14505ffd7484' +\n 'b01291091c5f87b98883463f98091a0baaae';\nfunction getDefaultFetch() {\n const result = typeof window === 'undefined'\n ? typeof global === 'undefined'\n ? typeof self === 'undefined'\n ? undefined\n : self.fetch.bind(self)\n : global.fetch.bind(global)\n : window.fetch.bind(window);\n if (!result) {\n throw new Error('Could not find default `fetch` implementation.');\n }\n return result;\n}\n// A HTTP agent allows users to interact with a client of the internet computer\n// using the available methods. It exposes an API that closely follows the\n// public view of the internet computer, and is not intended to be exposed\n// directly to the majority of users due to its low-level interface.\n//\n// There is a pipeline to apply transformations to the request before sending\n// it to the client. This is to decouple signature, nonce generation and\n// other computations so that this class can stay as simple as possible while\n// allowing extensions.\nclass HttpAgent {\n constructor(options = {}) {\n this._pipeline = [];\n this._rootKeyFetched = false;\n this.rootKey = candid_1.blobFromHex(IC_ROOT_KEY);\n if (options.source) {\n if (!(options.source instanceof HttpAgent)) {\n throw new Error(\"An Agent's source can only be another HttpAgent\");\n }\n this._pipeline = [...options.source._pipeline];\n this._identity = options.source._identity;\n this._fetch = options.source._fetch;\n this._host = options.source._host;\n this._credentials = options.source._credentials;\n }\n else {\n this._fetch = options.fetch || getDefaultFetch() || fetch.bind(global);\n }\n if (options.host !== undefined) {\n if (!options.host.match(/^[a-z]+:/) && typeof window !== 'undefined') {\n this._host = new URL(window.location.protocol + '//' + options.host);\n }\n else {\n this._host = new URL(options.host);\n }\n }\n else if (options.source !== undefined) {\n // Safe to ignore here.\n this._host = options.source._host;\n }\n else {\n const location = typeof window !== 'undefined' ? window.location : undefined;\n if (!location) {\n throw new Error('Must specify a host to connect to.');\n }\n this._host = new URL(location + '');\n }\n if (options.credentials) {\n const { name, password } = options.credentials;\n this._credentials = `${name}${password ? ':' + password : ''}`;\n }\n this._identity = Promise.resolve(options.identity || new auth_1.AnonymousIdentity());\n }\n addTransform(fn, priority = fn.priority || 0) {\n // Keep the pipeline sorted at all time, by priority.\n const i = this._pipeline.findIndex(x => (x.priority || 0) < priority);\n this._pipeline.splice(i >= 0 ? i : this._pipeline.length, 0, Object.assign(fn, { priority }));\n }\n async getPrincipal() {\n return (await this._identity).getPrincipal();\n }\n async call(canisterId, options, identity) {\n const id = (await (identity !== undefined ? await identity : await this._identity));\n const canister = principal_1.Principal.from(canisterId);\n const ecid = options.effectiveCanisterId\n ? principal_1.Principal.from(options.effectiveCanisterId)\n : canister;\n const sender = id.getPrincipal() || principal_1.Principal.anonymous();\n const submit = {\n request_type: types_1.SubmitRequestType.Call,\n canister_id: canister,\n method_name: options.methodName,\n arg: options.arg,\n sender: sender,\n ingress_expiry: new transforms_1.Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest = (await this._transform({\n request: {\n body: null,\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),\n },\n endpoint: \"call\" /* Call */,\n body: submit,\n }));\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n const body = cbor.encode(transformedRequest.body);\n // Run both in parallel. The fetch is quite expensive, so we have plenty of time to\n // calculate the requestId locally.\n const [response, requestId] = await Promise.all([\n this._fetch('' + new URL(`/api/v2/canister/${ecid.toText()}/call`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body })),\n request_id_1.requestIdOf(submit),\n ]);\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n return {\n requestId,\n response: {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n },\n };\n }\n async query(canisterId, fields, identity) {\n const id = await (identity !== undefined ? await identity : await this._identity);\n const canister = typeof canisterId === 'string' ? principal_1.Principal.fromText(canisterId) : canisterId;\n const sender = (id === null || id === void 0 ? void 0 : id.getPrincipal()) || principal_1.Principal.anonymous();\n const request = {\n request_type: \"query\" /* Query */,\n canister_id: canister,\n method_name: fields.methodName,\n arg: fields.arg,\n sender: sender,\n ingress_expiry: new transforms_1.Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n };\n // TODO: remove this any. This can be a Signed or UnSigned request.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest = await this._transform({\n request: {\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),\n },\n endpoint: \"read\" /* Query */,\n body: request,\n });\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n const body = cbor.encode(transformedRequest.body);\n const response = await this._fetch('' + new URL(`/api/v2/canister/${canister.toText()}/query`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body }));\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n return cbor.decode(buffer_1.Buffer.from(await response.arrayBuffer()));\n }\n async readState(canisterId, fields, identity) {\n const canister = typeof canisterId === 'string' ? principal_1.Principal.fromText(canisterId) : canisterId;\n const id = await (identity !== undefined ? await identity : await this._identity);\n const sender = (id === null || id === void 0 ? void 0 : id.getPrincipal()) || principal_1.Principal.anonymous();\n // TODO: remove this any. This can be a Signed or UnSigned request.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest = await this._transform({\n request: {\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),\n },\n endpoint: \"read_state\" /* ReadState */,\n body: {\n request_type: \"read_state\" /* ReadState */,\n paths: fields.paths,\n sender: sender,\n ingress_expiry: new transforms_1.Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n },\n });\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n const body = cbor.encode(transformedRequest.body);\n const response = await this._fetch('' + new URL(`/api/v2/canister/${canister}/read_state`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body }));\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n return cbor.decode(buffer_1.Buffer.from(await response.arrayBuffer()));\n }\n async status() {\n const headers = this._credentials\n ? {\n Authorization: 'Basic ' + btoa(this._credentials),\n }\n : {};\n const response = await this._fetch('' + new URL(`/api/v2/status`, this._host), { headers });\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n const buffer = await response.arrayBuffer();\n return cbor.decode(new Uint8Array(buffer));\n }\n async fetchRootKey() {\n if (!this._rootKeyFetched) {\n // Hex-encoded version of the replica root key\n this.rootKey = candid_1.blobFromUint8Array((await this.status()).root_key);\n this._rootKeyFetched = true;\n }\n return this.rootKey;\n }\n _transform(request) {\n let p = Promise.resolve(request);\n for (const fn of this._pipeline) {\n p = p.then(r => fn(r).then(r2 => r2 || r));\n }\n return p;\n }\n}\nexports.HttpAgent = HttpAgent;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeExpiryTransform = exports.makeNonceTransform = exports.Expiry = void 0;\nconst cbor = __importStar(require(\"simple-cbor\"));\nconst candid_1 = require(\"@dfinity/candid\");\nconst NANOSECONDS_PER_MILLISECONDS = BigInt(1000000);\nconst REPLICA_PERMITTED_DRIFT_MILLISECONDS = BigInt(60 * 1000);\nclass Expiry {\n constructor(deltaInMSec) {\n // Use bigint because it can overflow the maximum number allowed in a double float.\n this._value =\n (BigInt(Date.now()) + BigInt(deltaInMSec) - REPLICA_PERMITTED_DRIFT_MILLISECONDS) *\n NANOSECONDS_PER_MILLISECONDS;\n }\n toCBOR() {\n // TODO: change this to take the minimum amount of space (it always takes 8 bytes now).\n return cbor.value.u64(this._value.toString(16), 16);\n }\n toHash() {\n return candid_1.lebEncode(this._value);\n }\n}\nexports.Expiry = Expiry;\n/**\n * Create a Nonce transform, which takes a function that returns a Buffer, and adds it\n * as the nonce to every call requests.\n * @param nonceFn A function that returns a buffer. By default uses a semi-random method.\n */\nfunction makeNonceTransform(nonceFn = candid_1.makeNonce) {\n return async (request) => {\n // Nonce are only useful for async calls, to prevent replay attacks. Other types of\n // calls don't need Nonce so we just skip creating one.\n if (request.endpoint === \"call\" /* Call */) {\n request.body.nonce = nonceFn();\n }\n };\n}\nexports.makeNonceTransform = makeNonceTransform;\n/**\n * Create a transform that adds a delay (by default 5 minutes) to the expiry.\n *\n * @param delayInMilliseconds The delay to add to the call time, in milliseconds.\n */\nfunction makeExpiryTransform(delayInMilliseconds) {\n return async (request) => {\n request.body.ingress_expiry = new Expiry(delayInMilliseconds);\n };\n}\nexports.makeExpiryTransform = makeExpiryTransform;\n//# sourceMappingURL=transforms.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SubmitRequestType = void 0;\n// tslint:enable:camel-case\n// The types of values allowed in the `request_type` field for submit requests.\nvar SubmitRequestType;\n(function (SubmitRequestType) {\n SubmitRequestType[\"Call\"] = \"call\";\n})(SubmitRequestType = exports.SubmitRequestType || (exports.SubmitRequestType = {}));\n//# sourceMappingURL=types.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getDefaultAgent = void 0;\n__exportStar(require(\"./api\"), exports);\n__exportStar(require(\"./http\"), exports);\n__exportStar(require(\"./proxy\"), exports);\nfunction getDefaultAgent() {\n const agent = typeof window === 'undefined'\n ? typeof global === 'undefined'\n ? typeof self === 'undefined'\n ? undefined\n : self.ic.agent\n : global.ic.agent\n : window.ic.agent;\n if (!agent) {\n throw new Error('No Agent could be found.');\n }\n return agent;\n}\nexports.getDefaultAgent = getDefaultAgent;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyAgent = exports.ProxyStubAgent = exports.ProxyMessageKind = void 0;\nconst principal_1 = require(\"@dfinity/principal\");\nvar ProxyMessageKind;\n(function (ProxyMessageKind) {\n ProxyMessageKind[\"Error\"] = \"err\";\n ProxyMessageKind[\"GetPrincipal\"] = \"gp\";\n ProxyMessageKind[\"GetPrincipalResponse\"] = \"gpr\";\n ProxyMessageKind[\"Query\"] = \"q\";\n ProxyMessageKind[\"QueryResponse\"] = \"qr\";\n ProxyMessageKind[\"Call\"] = \"c\";\n ProxyMessageKind[\"CallResponse\"] = \"cr\";\n ProxyMessageKind[\"ReadState\"] = \"rs\";\n ProxyMessageKind[\"ReadStateResponse\"] = \"rsr\";\n ProxyMessageKind[\"Status\"] = \"s\";\n ProxyMessageKind[\"StatusResponse\"] = \"sr\";\n})(ProxyMessageKind = exports.ProxyMessageKind || (exports.ProxyMessageKind = {}));\n// A Stub Agent that forwards calls to another Agent implementation.\nclass ProxyStubAgent {\n constructor(_frontend, _agent) {\n this._frontend = _frontend;\n this._agent = _agent;\n }\n onmessage(msg) {\n switch (msg.type) {\n case ProxyMessageKind.GetPrincipal:\n this._agent.getPrincipal().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.GetPrincipalResponse,\n response: response.toText(),\n });\n });\n break;\n case ProxyMessageKind.Query:\n this._agent.query(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.QueryResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Call:\n this._agent.call(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.CallResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.ReadState:\n this._agent.readState(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.ReadStateResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Status:\n this._agent.status().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.StatusResponse,\n response,\n });\n });\n break;\n default:\n throw new Error(`Invalid message received: ${JSON.stringify(msg)}`);\n }\n }\n}\nexports.ProxyStubAgent = ProxyStubAgent;\n// An Agent that forwards calls to a backend. The calls are serialized\nclass ProxyAgent {\n constructor(_backend) {\n this._backend = _backend;\n this._nextId = 0;\n this._pendingCalls = new Map();\n this.rootKey = null;\n }\n onmessage(msg) {\n const id = msg.id;\n const maybePromise = this._pendingCalls.get(id);\n if (!maybePromise) {\n throw new Error('A proxy get the same message twice...');\n }\n this._pendingCalls.delete(id);\n const [resolve, reject] = maybePromise;\n switch (msg.type) {\n case ProxyMessageKind.Error:\n return reject(msg.error);\n case ProxyMessageKind.GetPrincipalResponse:\n case ProxyMessageKind.CallResponse:\n case ProxyMessageKind.QueryResponse:\n case ProxyMessageKind.ReadStateResponse:\n case ProxyMessageKind.StatusResponse:\n return resolve(msg.response);\n default:\n throw new Error(`Invalid message being sent to ProxyAgent: ${JSON.stringify(msg)}`);\n }\n }\n async getPrincipal() {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.GetPrincipal,\n }).then(principal => {\n if (typeof principal !== 'string') {\n throw new Error('Invalid principal received.');\n }\n return principal_1.Principal.fromText(principal);\n });\n }\n readState(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.ReadState,\n args: [canisterId.toString(), fields],\n });\n }\n call(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Call,\n args: [canisterId.toString(), fields],\n });\n }\n status() {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Status,\n });\n }\n query(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Query,\n args: [canisterId.toString(), fields],\n });\n }\n async _sendAndWait(msg) {\n return new Promise((resolve, reject) => {\n this._pendingCalls.set(msg.id, [resolve, reject]);\n this._backend(msg);\n });\n }\n async fetchRootKey() {\n // Hex-encoded version of the replica root key\n const rootKey = (await this.status()).root_key;\n this.rootKey = rootKey;\n return rootKey;\n }\n}\nexports.ProxyAgent = ProxyAgent;\n//# sourceMappingURL=proxy.js.map","\"use strict\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isIdentityDescriptor = exports.createIdentityDescriptor = exports.AnonymousIdentity = exports.SignIdentity = void 0;\nconst buffer_1 = require(\"buffer/\");\nconst principal_1 = require(\"@dfinity/principal\");\nconst request_id_1 = require(\"./request_id\");\nconst candid_1 = require(\"@dfinity/candid\");\nconst domainSeparator = buffer_1.Buffer.from(new TextEncoder().encode('\\x0Aic-request'));\n/**\n * An Identity that can sign blobs.\n */\nclass SignIdentity {\n /**\n * Get the principal represented by this identity. Normally should be a\n * `Principal.selfAuthenticating()`.\n */\n getPrincipal() {\n if (!this._principal) {\n this._principal = principal_1.Principal.selfAuthenticating(this.getPublicKey().toDer());\n }\n return this._principal;\n }\n /**\n * Transform a request into a signed version of the request. This is done last\n * after the transforms on the body of a request. The returned object can be\n * anything, but must be serializable to CBOR.\n * @param request - internet computer request to transform\n */\n async transformRequest(request) {\n const { body } = request, fields = __rest(request, [\"body\"]);\n const requestId = await request_id_1.requestIdOf(body);\n return Object.assign(Object.assign({}, fields), { body: {\n content: body,\n sender_pubkey: this.getPublicKey().toDer(),\n sender_sig: await this.sign(candid_1.blobFromBuffer(buffer_1.Buffer.concat([domainSeparator, requestId]))),\n } });\n }\n}\nexports.SignIdentity = SignIdentity;\nclass AnonymousIdentity {\n getPrincipal() {\n return principal_1.Principal.anonymous();\n }\n async transformRequest(request) {\n return Object.assign(Object.assign({}, request), { body: { content: request.body } });\n }\n}\nexports.AnonymousIdentity = AnonymousIdentity;\n/**\n * Create an IdentityDescriptor from a @dfinity/authentication Identity\n * @param identity - identity describe in returned descriptor\n */\nfunction createIdentityDescriptor(identity) {\n const identityIndicator = 'getPublicKey' in identity\n ? { type: 'PublicKeyIdentity', publicKey: identity.getPublicKey().toDer().toString('hex') }\n : { type: 'AnonymousIdentity' };\n return identityIndicator;\n}\nexports.createIdentityDescriptor = createIdentityDescriptor;\n/**\n * Type Guard for whether the unknown value is an IdentityDescriptor or not.\n * @param value - value to type guard\n */\nfunction isIdentityDescriptor(value) {\n var _a, _b;\n switch ((_a = value) === null || _a === void 0 ? void 0 : _a.type) {\n case 'AnonymousIdentity':\n return true;\n case 'PublicKeyIdentity':\n if (typeof ((_b = value) === null || _b === void 0 ? void 0 : _b.publicKey) !== 'string') {\n return false;\n }\n return true;\n }\n return false;\n}\nexports.isIdentityDescriptor = isIdentityDescriptor;\n//# sourceMappingURL=auth.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createAssetCanisterActor = void 0;\nconst actor_1 = require(\"../actor\");\nconst asset_idl_1 = __importDefault(require(\"./asset_idl\"));\n/* tslint:enable */\n/**\n * Create a management canister actor.\n * @param config\n */\nfunction createAssetCanisterActor(config) {\n return actor_1.Actor.createActor(asset_idl_1.default, config);\n}\nexports.createAssetCanisterActor = createAssetCanisterActor;\n//# sourceMappingURL=asset.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * This file is generated from the candid for asset management.\n */\n/* tslint:disable */\n// @ts-ignore\nexports.default = ({ IDL }) => {\n return IDL.Service({\n retrieve: IDL.Func([IDL.Text], [IDL.Vec(IDL.Nat8)], ['query']),\n store: IDL.Func([IDL.Text, IDL.Vec(IDL.Nat8)], [], []),\n });\n};\n//# sourceMappingURL=asset_idl.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getManagementCanister = void 0;\nconst actor_1 = require(\"../actor\");\nconst principal_1 = require(\"@dfinity/principal\");\nconst management_idl_1 = __importDefault(require(\"./management_idl\"));\n/* tslint:enable */\n/**\n * Create a management canister actor.\n * @param config\n */\nfunction getManagementCanister(config) {\n function transform(methodName, args, callConfig) {\n const first = args[0];\n let effectiveCanisterId = principal_1.Principal.fromHex('');\n if (first && typeof first === 'object' && first.canister_id) {\n effectiveCanisterId = principal_1.Principal.from(first.canister_id);\n }\n return { effectiveCanisterId };\n }\n return actor_1.Actor.createActor(management_idl_1.default, Object.assign(Object.assign(Object.assign({}, config), { canisterId: principal_1.Principal.fromHex('') }), {\n callTransform: transform,\n queryTransform: transform,\n }));\n}\nexports.getManagementCanister = getManagementCanister;\n//# sourceMappingURL=management.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * This file is generated from the candid for asset management.\n */\n/* tslint:disable */\n// @ts-ignore\nexports.default = ({ IDL }) => {\n const canister_id = IDL.Principal;\n const wasm_module = IDL.Vec(IDL.Nat8);\n const CanisterSettings = IDL.Record({\n compute_allocation: IDL.Opt(IDL.Nat),\n memory_allocation: IDL.Opt(IDL.Nat),\n });\n return IDL.Service({\n provisional_create_canister_with_cycles: IDL.Func([IDL.Record({ amount: IDL.Opt(IDL.Nat), settings: IDL.Opt(CanisterSettings) })], [IDL.Record({ canister_id: canister_id })], []),\n create_canister: IDL.Func([], [IDL.Record({ canister_id: canister_id })], []),\n install_code: IDL.Func([\n IDL.Record({\n mode: IDL.Variant({ install: IDL.Null, reinstall: IDL.Null, upgrade: IDL.Null }),\n canister_id: canister_id,\n wasm_module: wasm_module,\n arg: IDL.Vec(IDL.Nat8),\n }),\n ], [], []),\n set_controller: IDL.Func([IDL.Record({ canister_id: canister_id, new_controller: IDL.Principal })], [], []),\n });\n};\n//# sourceMappingURL=management_idl.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decode = exports.encode = exports.CborTag = void 0;\n// tslint:disable:max-classes-per-file\n// This file is based on:\n// tslint:disable-next-line: max-line-length\n// https://github.com/dfinity-lab/dfinity/blob/9bca65f8edd65701ea6bdb00e0752f9186bbc893/docs/spec/public/index.adoc#cbor-encoding-of-requests-and-responses\nconst borc_1 = __importDefault(require(\"borc\"));\nconst buffer_1 = require(\"buffer/\");\nconst cbor = __importStar(require(\"simple-cbor\"));\nconst simple_cbor_1 = require(\"simple-cbor\");\nconst candid_1 = require(\"@dfinity/candid\");\n// We are using hansl/simple-cbor for CBOR serialization, to avoid issues with\n// encoding the uint64 values that the HTTP handler of the client expects for\n// canister IDs. However, simple-cbor does not yet provide deserialization so\n// we are using `Uint8Array` so that we can use the dignifiedquire/borc CBOR\n// decoder.\nclass PrincipalEncoder {\n get name() {\n return 'Principal';\n }\n get priority() {\n return 0;\n }\n match(value) {\n return value && value._isPrincipal === true;\n }\n encode(v) {\n return cbor.value.bytes(v.toUint8Array().buffer);\n }\n}\nclass BufferEncoder {\n get name() {\n return 'Buffer';\n }\n get priority() {\n return 1;\n }\n match(value) {\n return buffer_1.Buffer.isBuffer(value);\n }\n encode(v) {\n return cbor.value.bytes(new Uint8Array(v));\n }\n}\nclass BigIntEncoder {\n get name() {\n return 'BigInt';\n }\n get priority() {\n return 1;\n }\n match(value) {\n return typeof value === `bigint`;\n }\n encode(v) {\n // Always use a bigint encoding.\n if (v > BigInt(0)) {\n return cbor.value.tagged(2, cbor.value.bytes(candid_1.blobFromHex(v.toString(16))));\n }\n else {\n return cbor.value.tagged(3, cbor.value.bytes(candid_1.blobFromHex((BigInt('-1') * v).toString(16))));\n }\n }\n}\nconst serializer = simple_cbor_1.SelfDescribeCborSerializer.withDefaultEncoders(true);\nserializer.addEncoder(new PrincipalEncoder());\nserializer.addEncoder(new BufferEncoder());\nserializer.addEncoder(new BigIntEncoder());\nvar CborTag;\n(function (CborTag) {\n CborTag[CborTag[\"Uint64LittleEndian\"] = 71] = \"Uint64LittleEndian\";\n CborTag[CborTag[\"Semantic\"] = 55799] = \"Semantic\";\n})(CborTag = exports.CborTag || (exports.CborTag = {}));\nexports.encode = (value) => {\n return candid_1.blobFromBuffer(buffer_1.Buffer.from(serializer.serialize(value)));\n};\nfunction decodePositiveBigInt(buf) {\n const len = buf.byteLength;\n let res = BigInt(0);\n for (let i = 0; i < len; i++) {\n // tslint:disable-next-line:no-bitwise\n res = res * BigInt(0x100) + BigInt(buf[i]);\n }\n return res;\n}\nfunction decode(input) {\n const decoder = new borc_1.default.Decoder({\n size: input.byteLength,\n tags: {\n // Override tags 2 and 3 for BigInt support (borc supports only BigNumber).\n 2: val => decodePositiveBigInt(val),\n 3: val => -decodePositiveBigInt(val),\n [CborTag.Semantic]: (value) => value,\n },\n });\n const result = decoder.decodeFirst(input);\n return result;\n}\nexports.decode = decode;\n//# sourceMappingURL=cbor.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lookup_path = exports.lookupPathEx = exports.reconstruct = exports.Certificate = exports.hashTreeToString = exports.UnverifiedCertificateError = void 0;\nconst buffer_1 = require(\"buffer/\");\nconst agent_1 = require(\"./agent\");\nconst cbor = __importStar(require(\"./cbor\"));\nconst errors_1 = require(\"./errors\");\nconst request_id_1 = require(\"./request_id\");\nconst candid_1 = require(\"@dfinity/candid\");\nconst bls_1 = require(\"./utils/bls\");\n/**\n * A certificate needs to be verified (using {@link Certificate.prototype.verify})\n * before it can be used.\n */\nclass UnverifiedCertificateError extends errors_1.AgentError {\n constructor() {\n super(`Cannot lookup unverified certificate. Call 'verify()' first.`);\n }\n}\nexports.UnverifiedCertificateError = UnverifiedCertificateError;\n/**\n * Make a human readable string out of a hash tree.\n * @param tree\n */\nfunction hashTreeToString(tree) {\n const indent = (s) => s\n .split('\\n')\n .map(x => ' ' + x)\n .join('\\n');\n function labelToString(label) {\n const decoder = new TextDecoder(undefined, { fatal: true });\n try {\n return JSON.stringify(decoder.decode(label));\n }\n catch (e) {\n return `data(...${label.byteLength} bytes)`;\n }\n }\n switch (tree[0]) {\n case 0:\n return '()';\n case 1: {\n const left = hashTreeToString(tree[1]);\n const right = hashTreeToString(tree[2]);\n return `sub(\\n left:\\n${indent(left)}\\n---\\n right:\\n${indent(right)}\\n)`;\n }\n case 2: {\n const label = labelToString(tree[1]);\n const sub = hashTreeToString(tree[2]);\n return `label(\\n label:\\n${indent(label)}\\n sub:\\n${indent(sub)}\\n)`;\n }\n case 3: {\n return `leaf(...${tree[1].byteLength} bytes)`;\n }\n case 4: {\n return `pruned(${candid_1.blobToHex(candid_1.blobFromUint8Array(new Uint8Array(tree[1])))}`;\n }\n default: {\n return `unknown(${JSON.stringify(tree[0])})`;\n }\n }\n}\nexports.hashTreeToString = hashTreeToString;\nfunction isBufferEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\nclass Certificate {\n constructor(response, _agent = agent_1.getDefaultAgent()) {\n this._agent = _agent;\n this.verified = false;\n this._rootKey = null;\n this.cert = cbor.decode(response.certificate);\n }\n lookupEx(path) {\n this.checkState();\n return lookupPathEx(path, this.cert.tree);\n }\n lookup(path) {\n this.checkState();\n return lookup_path(path, this.cert.tree);\n }\n async verify() {\n const rootHash = await reconstruct(this.cert.tree);\n const derKey = await this._checkDelegation(this.cert.delegation);\n const sig = this.cert.signature;\n const key = extractDER(derKey);\n const msg = buffer_1.Buffer.concat([domain_sep('ic-state-root'), rootHash]);\n const res = await bls_1.blsVerify(key, sig, msg);\n this.verified = res;\n return res;\n }\n checkState() {\n if (!this.verified) {\n throw new UnverifiedCertificateError();\n }\n }\n async _checkDelegation(d) {\n if (!d) {\n if (!this._rootKey) {\n if (this._agent.rootKey) {\n this._rootKey = this._agent.rootKey;\n return this._rootKey;\n }\n throw new Error(`Agent does not have a rootKey. Do you need to call 'fetchRootKey'?`);\n }\n return this._rootKey;\n }\n const cert = new Certificate(d, this._agent);\n if (!(await cert.verify())) {\n throw new Error('fail to verify delegation certificate');\n }\n const lookup = cert.lookupEx(['subnet', d.subnet_id, 'public_key']);\n if (!lookup) {\n throw new Error(`Could not find subnet key for subnet 0x${d.subnet_id.toString('hex')}`);\n }\n return buffer_1.Buffer.from(lookup);\n }\n}\nexports.Certificate = Certificate;\nconst DER_PREFIX = buffer_1.Buffer.from('308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100', 'hex');\nconst KEY_LENGTH = 96;\nfunction extractDER(buf) {\n const expectedLength = DER_PREFIX.length + KEY_LENGTH;\n if (buf.length !== expectedLength) {\n throw new TypeError(`BLS DER-encoded public key must be ${expectedLength} bytes long`);\n }\n const prefix = buf.slice(0, DER_PREFIX.length);\n if (!isBufferEqual(prefix, DER_PREFIX)) {\n throw new TypeError(`BLS DER-encoded public key is invalid. Expect the following prefix: ${DER_PREFIX}, but get ${prefix}`);\n }\n return buf.slice(DER_PREFIX.length);\n}\n/**\n * @param t\n */\nasync function reconstruct(t) {\n switch (t[0]) {\n case 0 /* Empty */:\n return request_id_1.hash(domain_sep('ic-hashtree-empty'));\n case 4 /* Pruned */:\n return buffer_1.Buffer.from(t[1]);\n case 3 /* Leaf */:\n return request_id_1.hash(buffer_1.Buffer.concat([\n domain_sep('ic-hashtree-leaf'),\n buffer_1.Buffer.from(t[1]),\n ]));\n case 2 /* Labeled */:\n return request_id_1.hash(buffer_1.Buffer.concat([\n domain_sep('ic-hashtree-labeled'),\n buffer_1.Buffer.from(t[1]),\n buffer_1.Buffer.from(await reconstruct(t[2])),\n ]));\n case 1 /* Fork */:\n return request_id_1.hash(buffer_1.Buffer.concat([\n domain_sep('ic-hashtree-fork'),\n buffer_1.Buffer.from(await reconstruct(t[1])),\n buffer_1.Buffer.from(await reconstruct(t[2])),\n ]));\n default:\n throw new Error('unreachable');\n }\n}\nexports.reconstruct = reconstruct;\nfunction domain_sep(s) {\n const buf = buffer_1.Buffer.alloc(1);\n buf.writeUInt8(s.length, 0);\n return buffer_1.Buffer.concat([buf, buffer_1.Buffer.from(s)]);\n}\n/**\n *\n * @param path\n * @param tree\n */\nfunction lookupPathEx(path, tree) {\n const maybeReturn = lookup_path(path.map(p => {\n if (typeof p === 'string') {\n return candid_1.blobFromText(p);\n }\n else {\n return candid_1.blobFromUint8Array(new Uint8Array(p));\n }\n }), tree);\n return maybeReturn && candid_1.blobToUint8Array(candid_1.blobFromBuffer(maybeReturn));\n}\nexports.lookupPathEx = lookupPathEx;\n/**\n * @param path\n * @param tree\n */\nfunction lookup_path(path, tree) {\n if (path.length === 0) {\n switch (tree[0]) {\n case 3 /* Leaf */: {\n return buffer_1.Buffer.from(tree[1]);\n }\n default: {\n return undefined;\n }\n }\n }\n const t = find_label(path[0], flatten_forks(tree));\n if (t) {\n return lookup_path(path.slice(1), t);\n }\n}\nexports.lookup_path = lookup_path;\nfunction flatten_forks(t) {\n switch (t[0]) {\n case 0 /* Empty */:\n return [];\n case 1 /* Fork */:\n return flatten_forks(t[1]).concat(flatten_forks(t[2]));\n default:\n return [t];\n }\n}\nfunction find_label(l, trees) {\n if (trees.length === 0) {\n return undefined;\n }\n for (const t of trees) {\n if (t[0] === 2 /* Labeled */) {\n const p = buffer_1.Buffer.from(t[1]);\n if (isBufferEqual(l, p)) {\n return t[2];\n }\n }\n }\n}\n//# sourceMappingURL=certificate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AgentError = void 0;\n/**\n * An error that happens in the Agent. This is the root of all errors and should be used\n * everywhere in the Agent code (this package).\n *\n * @todo https://github.com/dfinity/agent-js/issues/420\n */\nclass AgentError extends Error {\n}\nexports.AgentError = AgentError;\n//# sourceMappingURL=errors.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./actor\"), exports);\n__exportStar(require(\"./agent\"), exports);\n__exportStar(require(\"./auth\"), exports);\n__exportStar(require(\"./certificate\"), exports);\n__exportStar(require(\"./agent/http/transforms\"), exports);\n__exportStar(require(\"./agent/http/types\"), exports);\n__exportStar(require(\"./canisters/asset\"), exports);\n__exportStar(require(\"./canisters/management\"), exports);\n__exportStar(require(\"./request_id\"), exports);\n__exportStar(require(\"./utils/bls\"), exports);\nexports.polling = __importStar(require(\"./polling\"));\nexports.Cbor = __importStar(require(\"./cbor\"));\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pollForResponse = void 0;\nconst agent_1 = require(\"../agent\");\nconst certificate_1 = require(\"../certificate\");\nconst request_id_1 = require(\"../request_id\");\nconst candid_1 = require(\"@dfinity/candid\");\nexports.strategy = __importStar(require(\"./strategy\"));\nvar strategy_1 = require(\"./strategy\");\nObject.defineProperty(exports, \"defaultStrategy\", { enumerable: true, get: function () { return strategy_1.defaultStrategy; } });\n/**\n * Polls the IC to check the status of the given request then\n * returns the response bytes once the request has been processed.\n * @param agent The agent to use to poll read_state.\n * @param canisterId The effective canister ID.\n * @param requestId The Request ID to poll status for.\n * @param strategy A polling strategy.\n */\nasync function pollForResponse(agent, canisterId, requestId, strategy) {\n const path = [candid_1.blobFromText('request_status'), requestId];\n const state = await agent.readState(canisterId, { paths: [path] });\n const cert = new certificate_1.Certificate(state, agent);\n const verified = await cert.verify();\n if (!verified) {\n throw new Error('Fail to verify certificate');\n }\n const maybeBuf = cert.lookup([...path, candid_1.blobFromText('status')]);\n let status;\n if (typeof maybeBuf === 'undefined') {\n // Missing requestId means we need to wait\n status = agent_1.RequestStatusResponseStatus.Unknown;\n }\n else {\n status = maybeBuf.toString();\n }\n switch (status) {\n case agent_1.RequestStatusResponseStatus.Replied: {\n return cert.lookup([...path, candid_1.blobFromText('reply')]);\n }\n case agent_1.RequestStatusResponseStatus.Received:\n case agent_1.RequestStatusResponseStatus.Unknown:\n case agent_1.RequestStatusResponseStatus.Processing:\n // Execute the polling strategy, then retry.\n await strategy(canisterId, requestId, status);\n return pollForResponse(agent, canisterId, requestId, strategy);\n case agent_1.RequestStatusResponseStatus.Rejected: {\n const rejectCode = cert.lookup([...path, candid_1.blobFromText('reject_code')]).toString();\n const rejectMessage = cert.lookup([...path, candid_1.blobFromText('reject_message')]).toString();\n throw new Error(`Call was rejected:\\n` +\n ` Request ID: ${request_id_1.toHex(requestId)}\\n` +\n ` Reject code: ${rejectCode}\\n` +\n ` Reject text: ${rejectMessage}\\n`);\n }\n case agent_1.RequestStatusResponseStatus.Done:\n // This is _technically_ not an error, but we still didn't see the `Replied` status so\n // we don't know the result and cannot decode it.\n throw new Error(`Call was marked as done but we never saw the reply:\\n` +\n ` Request ID: ${request_id_1.toHex(requestId)}\\n`);\n }\n throw new Error('unreachable');\n}\nexports.pollForResponse = pollForResponse;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.chain = exports.backoff = exports.timeout = exports.throttle = exports.maxAttempts = exports.conditionalDelay = exports.once = exports.defaultStrategy = void 0;\nconst __1 = require(\"..\");\nconst FIVE_MINUTES_IN_MSEC = 5 * 60 * 1000;\n/**\n * A best practices polling strategy: wait 2 seconds before the first poll, then 1 second\n * with an exponential backoff factor of 1.2. Timeout after 5 minutes.\n */\nfunction defaultStrategy() {\n return chain(conditionalDelay(once(), 1000), backoff(1000, 1.2), timeout(FIVE_MINUTES_IN_MSEC));\n}\nexports.defaultStrategy = defaultStrategy;\n/**\n * Predicate that returns true once.\n */\nfunction once() {\n let first = true;\n return async () => {\n if (first) {\n first = false;\n return true;\n }\n return false;\n };\n}\nexports.once = once;\n/**\n * Delay the polling once.\n * @param condition A predicate that indicates when to delay.\n * @param timeInMsec The amount of time to delay.\n */\nfunction conditionalDelay(condition, timeInMsec) {\n return async (canisterId, requestId, status) => {\n if (await condition(canisterId, requestId, status)) {\n return new Promise(resolve => setTimeout(resolve, timeInMsec));\n }\n };\n}\nexports.conditionalDelay = conditionalDelay;\n/**\n * Error out after a maximum number of polling has been done.\n * @param count The maximum attempts to poll.\n */\nfunction maxAttempts(count) {\n let attempts = count;\n return async (canisterId, requestId, status) => {\n if (--attempts <= 0) {\n throw new Error(`Failed to retrieve a reply for request after ${count} attempts:\\n` +\n ` Request ID: ${__1.toHex(requestId)}\\n` +\n ` Request status: ${status}\\n`);\n }\n };\n}\nexports.maxAttempts = maxAttempts;\n/**\n * Throttle polling.\n * @param throttleInMsec Amount in millisecond to wait between each polling.\n */\nfunction throttle(throttleInMsec) {\n return () => new Promise(resolve => setTimeout(resolve, throttleInMsec));\n}\nexports.throttle = throttle;\n/**\n * Reject a call after a certain amount of time.\n * @param timeInMsec Time in milliseconds before the polling should be rejected.\n */\nfunction timeout(timeInMsec) {\n const end = Date.now() + timeInMsec;\n return async (canisterId, requestId, status) => {\n if (Date.now() > end) {\n throw new Error(`Request timed out after ${timeInMsec} msec:\\n` +\n ` Request ID: ${__1.toHex(requestId)}\\n` +\n ` Request status: ${status}\\n`);\n }\n };\n}\nexports.timeout = timeout;\n/**\n * A strategy that throttle, but using an exponential backoff strategy.\n * @param startingThrottleInMsec The throttle in milliseconds to start with.\n * @param backoffFactor The factor to multiple the throttle time between every poll. For\n * example if using 2, the throttle will double between every run.\n */\nfunction backoff(startingThrottleInMsec, backoffFactor) {\n let currentThrottling = startingThrottleInMsec;\n return () => new Promise(resolve => setTimeout(() => {\n currentThrottling *= backoffFactor;\n resolve();\n }, currentThrottling));\n}\nexports.backoff = backoff;\n/**\n * Chain multiple polling strategy. This _chains_ the strategies, so if you pass in,\n * say, two throttling strategy of 1 second, it will result in a throttle of 2 seconds.\n * @param strategies A strategy list to chain.\n */\nfunction chain(...strategies) {\n return async (canisterId, requestId, status) => {\n for (const a of strategies) {\n await a(canisterId, requestId, status);\n }\n };\n}\nexports.chain = chain;\n//# sourceMappingURL=strategy.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.requestIdOf = exports.hash = exports.toHex = void 0;\nconst js_sha256_1 = require(\"js-sha256\");\nconst borc_1 = __importDefault(require(\"borc\"));\nconst buffer_1 = require(\"buffer/\");\nconst candid_1 = require(\"@dfinity/candid\");\nconst principal_1 = require(\"@dfinity/principal\");\n/**\n * get RequestId as hex-encoded blob.\n * @param requestId - RequestId to hex\n */\nfunction toHex(requestId) {\n return candid_1.blobToHex(requestId);\n}\nexports.toHex = toHex;\n/**\n * sha256 hash the provided Buffer\n * @param data - input to hash function\n */\nfunction hash(data) {\n const hashed = js_sha256_1.sha256.create().update(data).arrayBuffer();\n return candid_1.blobFromUint8Array(new Uint8Array(hashed));\n}\nexports.hash = hash;\nfunction hashValue(value) {\n if (value instanceof borc_1.default.Tagged) {\n return hashValue(value.value);\n }\n else if (typeof value === 'string') {\n return hashString(value);\n }\n else if (typeof value === 'number') {\n return hash(candid_1.lebEncode(value));\n }\n else if (buffer_1.Buffer.isBuffer(value)) {\n return hash(candid_1.blobFromUint8Array(new Uint8Array(value)));\n }\n else if (value instanceof Uint8Array || value instanceof ArrayBuffer) {\n return hash(candid_1.blobFromUint8Array(new Uint8Array(value)));\n }\n else if (Array.isArray(value)) {\n const vals = value.map(hashValue);\n return hash(buffer_1.Buffer.concat(vals));\n }\n else if (value instanceof principal_1.Principal) {\n return hash(candid_1.blobFromUint8Array(value.toUint8Array()));\n }\n else if (typeof value === 'object' &&\n value !== null &&\n typeof value.toHash === 'function') {\n return hashValue(value.toHash());\n // TODO This should be move to a specific async method as the webauthn flow required\n // the flow to be synchronous to ensure Safari touch id works.\n // } else if (value instanceof Promise) {\n // return value.then(x => hashValue(x));\n }\n else if (typeof value === 'bigint') {\n // Do this check much later than the other bigint check because this one is much less\n // type-safe.\n // So we want to try all the high-assurance type guards before this 'probable' one.\n return hash(candid_1.lebEncode(value));\n }\n throw Object.assign(new Error(`Attempt to hash a value of unsupported type: ${value}`), {\n // include so logs/callers can understand the confusing value.\n // (when stringified in error message, prototype info is lost)\n value,\n });\n}\nconst hashString = (value) => {\n const encoder = new TextEncoder();\n const encoded = encoder.encode(value);\n return hash(buffer_1.Buffer.from(encoded));\n};\n/**\n * Concatenate many blobs.\n * @param bs - blobs to concatenate\n */\nfunction concat(bs) {\n return candid_1.blobFromBuffer(buffer_1.Buffer.concat(bs));\n}\n/**\n * Get the RequestId of the provided ic-ref request.\n * RequestId is the result of the representation-independent-hash function.\n * https://sdk.dfinity.org/docs/interface-spec/index.html#hash-of-map\n * @param request - ic-ref request to hash into RequestId\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction requestIdOf(request) {\n const hashed = Object.entries(request)\n .filter(([, value]) => value !== undefined)\n .map(([key, value]) => {\n const hashedKey = hashString(key);\n const hashedValue = hashValue(value);\n return [hashedKey, hashedValue];\n });\n const traversed = hashed;\n const sorted = traversed.sort(([k1], [k2]) => {\n return buffer_1.Buffer.compare(buffer_1.Buffer.from(k1), buffer_1.Buffer.from(k2));\n });\n const concatenated = concat(sorted.map(concat));\n const requestId = hash(concatenated);\n return requestId;\n}\nexports.requestIdOf = requestIdOf;\n//# sourceMappingURL=request_id.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.blsVerify = exports.verify = void 0;\nconst bls_1 = __importStar(require(\"../vendor/bls/bls\"));\n/**\n *\n * @param pk primary key: Uint8Array\n * @param sig signature: Uint8Array\n * @param msg message: Uint8Array\n * @returns Promise resolving a boolean\n */\nasync function blsVerify(pk, sig, msg) {\n if (!exports.verify) {\n await bls_1.default();\n if (bls_1.bls_init() !== 0) {\n throw new Error('Cannot initialize BLS');\n }\n exports.verify = (pk1, sig1, msg1) => {\n // Reorder things from what the WASM expects (sig, m, w).\n return bls_1.bls_verify(sig1, msg1, pk1) === 0;\n };\n }\n return exports.verify(pk, sig, msg);\n}\nexports.blsVerify = blsVerify;\n//# sourceMappingURL=bls.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bls_verify = exports.bls_init = void 0;\nconst base64Arraybuffer = __importStar(require(\"base64-arraybuffer\"));\n/* tslint:disable */\n/* eslint-disable */\nlet wasm;\n// This WASM is generated from the BLS Rust code of the Agent RS (see\n// http://github.com/dfinity/agent-rs/)\n// Once the WASM is compiled, simply base64 encode it and include it in this string.\nconst wasmBytesBase64 = `\n AGFzbQEAAAABXg9gAn9/AGABfwBgA39/fwBgAn9/AX9gAX8Bf2ADf39/AX9gBH9/f38AYAV/f39/fwBgBn9/f39/fwF/\n YAAAYAZ/f39/f38AYAV/fn5+fgBgAAF/YAF/AX5gAn9/AX4DvAG6AQgEAAEAAAABAgEDAAAMAAACAQEKAQAHBgEAAQEA\n AgcCAgABAgAGAAgOBAEBBAAAAQALAQkAAwMAAQQBAAICAAIBAQEBAQEGAQACAQEEAAECAQEABQMBAQMEAwQCAwAAAAEA\n AAAAAAEFAQEAAAACAQIAAQMAAQAGBAACAgMEAAAAAAAGAAQABAQEBAAAAwIAAgACAAEBAAAAAQEBAAEAAAAAAgAAAQAB\n AQEBAQEBAQEBAQIBAAAAAQ0AAQQFAXABBQUFAwEAEQYJAX8BQYCAwAALBzYEBm1lbW9yeQIACGJsc19pbml0AA0KYmxz\n X3ZlcmlmeQAnEV9fd2JpbmRnZW5fbWFsbG9jAHwJDQEAQQELBLgBCrkBtwEKiO8CugGXVQIQfwV+IwBB4OEAayIGJABB\n KxABIgkEQCAJQfSgwABBKxBnIQwDQCAHQStHBEAgByAMaiIJQV9BfyAJLQAAIglBn39qQf8BcUEaSRsgCXE6AAAgB0EB\n aiEHDAELC0EAIQcgBkGoA2pBOBByGiAGQQE2AuADIAZB6ANqQTgQciEPIAZBoARqQQE2AgAgBkGoBmpBoKfAABBfIAZB\n qAZqECkhCSAGQbgVakGAAhByGiAGQdjbAGpBgAEQchogBkGbI2pBgQIQciENIAZBsAxqQcAAEHIaIAZByM8AakHAABBy\n GiAGQdDVAGpBwAAQchogBkEAOgCaIyAGIAlB/wBqIhBBA3ZBAWoiCkEBdCILOgCZIyAGIApBB3Y6AJgjIAtBf2pBBXYi\n CEEBaiERA0AgB0ErRwRAIAcgDWogByAMai0AADoAACAHQQFqIQcMAQsLIAZBKzoAxiMgBkEgaiAGQZgjakEvQdinwAAQ\n ggEgBkGwDGpBwAAgAiADIAYoAiAgBigCJBATQQAhDUEAIAtrIRIgBkGZI2ohE0EBIQNBACEJA0ACQCANIAMgEUtyRQRA\n IAMgCEshDSADIAMgCE1qIQJBACEHA0AgB0EgRgRAIAYgAzoAmCNBACEHA0AgB0ErRwRAIAcgE2ogByAMai0AADoAACAH\n QQFqIQcMAQsLIAZBKzoAxCMgBkEYaiAGQZgjakEtQeinwAAQggFBACEHIAZByM8AakEAIAZB0NUAakEgIAYoAhggBigC\n HBATIAkgEmohAyAJIAlBgAIgCUGAAksbIg5rIRQgBkG4FWogCWohFQJAA0AgB0EgRg0FIAcgFGpFDQEgByAVaiAGQcjP\n AGogB2otAAA6AAAgAyAHQQFqIgdqDQALIAIhAyALIQkMBQsgDkGAAkH4p8AAEDwABSAGQcjPAGogB2oiDiAOLQAAIAZB\n sAxqIAdqLQAAcyIOOgAAIAZB0NUAaiAHaiAOOgAAIAdBAWohBwwBCwALAAsgEEGACEkhDUEAIQNBACEJA0ACQCAJQQJH\n BEAgCUEBaiELIAZBuBVqIANqIQJBACEHAkADQCAHIApGBEAgDQRAIAZByM8AakHwABByGiAGQdjbAGohCCAKIQcDQCAH\n BEAgBkHIzwBqQQgQLiAGIAYpA8hPIAgxAAB8NwPITyAHQX9qIQcgCEEBaiEIDAELCyAGQcjPAGoQRSAGQdDVAGogBkGo\n BmoQMCAGQZgjakHwABByGiAGQcjPAGogBkHQ1QBqEDZBAEgNBUEAIQIDQCAGQdDVAGpBARAuIAJBAWohAiAGQcjPAGog\n BkHQ1QBqEDZBf0oNAAsDQCACQQFIDQZBACEHA0AgB0HoAEYEQCAGIAYpA7hWQgGHNwO4VkEAIQcDQCAHQfAARwRAIAZB\n mCNqIAdqIAZByM8AaiAHaikDADcDACAHQQhqIQcMAQsLIAZBmCNqIAZB0NUAahBkIAZBmCNqEEUgBikDgCRCP4chF0EA\n IQcDQCAHQfAARwRAIAZByM8AaiAHaiIIIAZBmCNqIAdqKQMAIhYgCCkDAIUgF4MgFoU3AwAgB0EIaiEHDAELCyACQX9q\n IQIMAgUgBkHQ1QBqIAdqIgggCEEIaikDAEI5hkKAgICAgICAgAKDIAgpAwBCAYeENwMAIAdBCGohBwwBCwALAAsACyAK\n QYABQaChwAAQPQALIAMgB2oiCEH/AU0EQCAHQYABRg0CIAZB2NsAaiAHaiACIAdqLQAAOgAAIAdBAWohBwwBCwsgCEGA\n AkGwocAAEDwAC0GAAUGAAUHAocAAEDwACyAGQShqIAZBqANqEAIgBkG4EmogDxACIAZBKGogBkG4EmoQDCAGQegBakHo\n g8AAEF8CQAJAIAZB6AFqEFoNACAGQShqEIQBDQAgBkGIPWoQS0EAIQcgBkGIwwBqQTgQchogBkG4IWpBOBByGiAGQYjA\n AGoQSyAGQcjEAGoQSyAGQcjJAGoQSyAGQcjMAGoQSyAGQagGahBLIAZBsAxqEEsgBkHIzwBqEEsgBkHQ1QBqEEsgBkHY\n 2wBqEEsgBkG4FWoQSyAGQZgjaiAGQcjJAGpBwAEQZxogBkHYJGogBkHIzABqQcABEGcaIAZBmCZqIAZBqAZqQcABEGca\n IAZB2CdqIAZBsAxqQcABEGcaIAZBmClqIAZByM8AakHAARBnGiAGQdgqaiAGQdDVAGpBwAEQZxogBkGYLGogBkHY2wBq\n QcABEGcaIAZB2C1qIAZBuBVqQcABEGcaIAZBuBVqQecAEHIaIAZBiMAAaiAGQShqEH8gBkGIwABqEBggBkGYI2ogBkEo\n ahB/A0AgB0HACkYEQCAGQbghaiAGQegBahBrIAYpA7ghIRcgBkG4IWpBARCdASAGQbghahBEIAYpA7ghIRYgBkGIwwBq\n IAZBuCFqEGsgBkGIwwBqQQEQnQEgBkGIwwBqEEQgBkG4IWogBkGIwwBqIBdCAoGnEE8gBkGIwABqIAZBKGogFkICgacQ\n bSAGQcjEAGogBkGIwABqEH8gBkG4IWoQKUEDaiIJQQJ2IgdBAWohAkEAIQgCQAJAAkADQAJAIAZBuCFqQQUQjAEhAyAC\n IAhGBEAgCUGYA0kNASACQecAQbCEwAAQPAALIAhB5wBGDQIgBkG4FWogCGogA0FwaiIDOgAAIAZBuCFqIANBGHRBGHUQ\n ngEgBkG4IWoQRCAGQbghakEEEDsgCEEBaiEIDAELCyAGQbgVaiACaiADOgAAIANBGHRBGHVBf2oiA0EBdiECIANBD0sN\n ASAGQYg9aiAGQZgjaiACQcABbGoQfwNAIAdBf0YEQCAGQYg9aiAGQcjEAGoQcyAGQZgjaiAGQYg9akHAARBnGgwICyAH\n QeYASw0DIAZBiMAAaiAGQZgjaiAGQbgVaiAHaiwAABAfIAdBf2ohByAGQYg9ahAYIAZBiD1qEBggBkGIPWoQGCAGQYg9\n ahAYIAZBiD1qIAZBiMAAahAMDAALAAtB5wBB5wBBoITAABA8AAsgAkEIQcCEwAAQPAALIAdB5wBB0ITAABA8AAUgBkHI\n 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\n UtcEAKAIAIgFBASACdCICcQRAIAAoAggMAQtB1LXBACABIAJyNgIAIAALIQEgACAENgIIIAEgBDYCDCAEIAA2AgwgBCAB\n NgIIC0EAIQVB6LjBACgCACIAIAZNDQBB6LjBACAAIAZrIgI2AgBB8LjBAEHwuMEAKAIAIgEgBmoiADYCACAAIAJBAXI2A\n gQgASAGQQNyNgIEIAFBCGoPCyAFDwsgASAHNgIYIAMoAhAiAARAIAEgADYCECAAIAE2AhgLIANBFGooAgAiAEUNACABQR\n RqIAA2AgAgACABNgIYCwJAIAVBEE8EQCADIAZBA3I2AgQgAyAGaiIEIAVBAXI2AgQgBCAFaiAFNgIAQeS4wQAoAgAiAAR\n AIABBA3YiAkEDdEHctcEAaiEAQey4wQAoAgAhBwJ/QdS1wQAoAgAiAUEBIAJBH3F0IgJxBEAgACgCCAwBC0HUtcEAIAEg\n AnI2AgAgAAshAiAAIAc2AgggAiAHNgIMIAcgADYCDCAHIAI2AggLQey4wQAgBDYCAEHkuMEAIAU2AgAMAQsgAyAFIAZqI\n gBBA3I2AgQgACADaiIAIAAoAgRBAXI2AgQLIANBCGoLtA8BA38jAEGAC2siAiQAIAJBCGoQSyACQcgBakE4EHIaIAJBAT\n YCgAIgAkGIAmpBOBByGiACQQE2AsACIAJByAJqQTgQchogAkEBNgKAAyACQYgDakE4EHIaIAJBATYCwAMgAkHIA2pBOBB\n yGiACQQE2AoAEIAJBiARqQQEQigEgAkHIBGpBOBByGiACQQE2AoAFIAJBiAVqQTgQchogAkEBNgLABSACQcgFaiABEIUB\n IAJBiAZqQTgQchogAkEBNgLABiACQcgGakE4EHIaIAJBATYCgAcgAkGIB2pBOBByGiACQQE2AsAHIAJByAdqQTgQchogA\n kEBNgKACCACQcgFahBYIQMgAkHICWpB4ITAABBfIAJBiApqIAJByAlqEIsBIAJByAFqIAJBiApqEKUBIAJByAlqQZiFwA\n AQXyACQYgKaiACQcgJahCLASACQYgCaiACQYgKahClASACQcgFahADIAJByAVqQQsQUiACQYgGaiACQcgFahClASACQYg\n GaiACQYgEahB4IAJBiAZqEEQgAkGIBmogAkHIBWoQSCACQYgFaiACQcgBahClASACQYgFaiACQYgGahBIIAJBiAZqIAJB\n iARqEHggAkGIBmoQRCACQYgGaiACQYgCahBIIAJBiAZqEEEgAkGIBmoQRCACQYgDaiACQYgGahClASACQcgDaiACQcgFa\n hClASACQcgDaiACQYgDahBIIAJByAdqIAJBiANqEKUBIAJByAdqEAMgAkHIBmogAkGIBWoQpQEgAkHIBmoQAyACQYgGai\n ACQcgBahClASACQYgGaiACQcgGahBIIAJByAdqIAJBiAZqEHggAkHIB2oQRCACQcgHaiACQYgDahBIIAJByAZqIAJBiAV\n qEEggAkGIBmogAkGIAmoQpQEgAkGIBmogAkHIBmoQSCACQcgHaiACQYgGahB4IAJByAdqEEQgAkGIBmogAkHIB2oQpQEg\n AkGIBmogAkGIBWoQSCACQYgGaiACQYgHahBcIQQgAkGIBWogAkGIBmoQpQEgAkGIBWogAkGIB2oQNCACQYgFaiACQcgHa\n hBIIAJBiANqIAJBiAVqEEggAkHIA2ogAkGIBWoQSCACQcgFaiABEEggAkHIBmogAkGIBWoQpQEgAkHIBmoQAyACQYgFai\n ACQcgGahClASACQYgFaiACQcgFahBIIAJByAVqIAJBiAZqEKUBIAJByAVqQQsQUiACQcgJakHQhcAAEF8gAkGICmogAkH\n ICWoQiwEgAkHIAmogAkGICmoQpQEgAkHIAmogAkGIB2oQSCACQYgDaiACQcgDakEBIARrIgEQeSACQcgGaiACQYgFaiAB\n EHkgAkGIBmogAkHIBWogARB5IAJBiAdqIAJByAJqIAEQeSACQYgKaiACQYgGaiACQYgHahAjIAJByARqIAJBiApqEKUBI\n AJByARqIAJByAZqEEggAkHIBGoQWCEBIAJBiAZqIAJByARqEKUBIAJBiAZqEEEgAkGIBmoQRCACQcgEaiACQYgGaiABIA\n NzEHkgAkGICmpBiIbAABBfIAJBiAhqIAJBiApqEIsBQTghAQNAIAFBoAVGRQRAIAJBiAhqIAJBiANqEEggAkHICWogAUG\n IhsAAahBfIAFBOGohASACQYgKaiACQcgJahCLASACQYgGaiACQYgKahClASACQYgIaiACQYgGahB4IAJBiAhqEEQMAQsL\n IAJByAhqIAJBiANqEIUBIAJByAlqQaiLwAAQXyACQYgKaiACQcgJahCLASACQYgGaiACQYgKahClASACQcgIaiACQYgGa\n hB4IAJByAhqEERBACEBA0AgAUH4A0ZFBEAgAkHICGogAkGIA2oQSCACQcgJaiABQeCLwABqEF8gAUE4aiEBIAJBiApqIA\n JByAlqEIsBIAJBiAZqIAJBiApqEKUBIAJByAhqIAJBiAZqEHggAkHICGoQRAwBCwsgAkGICmpB2I/AABBfIAJBiAlqIAJ\n BiApqEIsBQQAhAQNAIAFByAZGBEACQCACQcgJaiACQYgDahCFASACQcgKakHYlsAAEF8gAkGICmogAkHICmoQiwEgAkGI\n BmogAkGICmoQpQEgAkHICWogAkGIBmoQeCACQcgJahBEQQAhAQNAIAFBkAZGDQEgAkHICWogAkGIA2oQSCACQcgKaiABQ\n ZCXwABqEF8gAUE4aiEBIAJBiApqIAJByApqEIsBIAJBiAZqIAJBiApqEKUBIAJByAlqIAJBiAZqEHggAkHICWoQRAwACw\n ALBSACQYgJaiACQYgDahBIIAJByAlqIAFBkJDAAGoQXyABQThqIQEgAkGICmogAkHICWoQiwEgAkGIBmogAkGICmoQpQE\n gAkGICWogAkGIBmoQeCACQYgJahBEDAELCyACQYgJaiACQcgEahBIIAJBiAZqIAJBiAhqEKUBIAJBiAZqIAJByAlqEEgg\n AkEIaiACQYgGahClASACQYgGaiACQYgJahClASACQYgGaiACQcgIahBIIAJByABqIAJBiAZqEKUBIAJBiAZqIAJByAhqE\n KUBIAJBiAZqIAJByAlqEEggAkGIAWogAkGIBmoQpQEgACACQQhqQcABEGcaIAJBgAtqJAALzQ0CE38IfiMAQYADayIBJA\n AgADQCOCIUIBR+QoCAgBBaBEAgABASCyABQeABakHoABByGiABQcgBaiAAKQMAIhggGEI/hyIZIBggGRAxIAEgASkDyAE\n iFEL//////////wODNwPYASABQdABaikDACIXQgaGIBRCOoiEIRUgF0I6iCEaIABBCGoiCyEFIAAhBkEBIQcDQCAHQQZP\n BEAgAEEYaiEMIABBKGohCyAAQRBqIQcgACkDMCEYQQQhBkEAIQkgAUGgAWohDUEDIQpBAiEIQQchBQJAAkADQCAFQQpLD\n QIgBiAIIAYgCEsbIQ4gBiAKIAYgCksbQQN0QWhqIQ8gAUGYAWogBUEDdCIQIABqQVBqKQMAIhQgFEI/hyAYIBhCP4ciGR\n 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\n OBByGiACQQE2AvgMIAJBgA1qQTgQchogAkG4DWpBATYCACACQYAIakE4EHIaIAJBATYCuAggAkHACGpBOBByGiACQfgIa\n kEBNgIAIAJBgApqIABBgANqIgMQXiACQYAIaiACQYAKahCQASACQYAKaiABQYADaiIFEF4gAkGACGogAkGACmoQDyACQc\n AMahCpASAERQRAIAJBgApqIAMQXiACQcAMaiACQYAKahCQASACQYAKaiABQYACahBeIAJBwAxqIAJBgApqEA8LIAAoAoA\n GQQRHBEAgAkGACmogAEGAAmoQXiACQcAMaiACQYAKahCQASACQYAKaiAFEF4gAkHADGogAkGACmoQDwsgAkGABGogAkHA\n DGogAkGACGoQoQEgAkGABGoQZgsgAkGACGogABCOASACQYAKaiABEI4BIAJBgAhqIABBgAJqIgQQlgEgAkGACGoQrAEgA\n kGACmogAUGAAmoiBRCWASACQYAKahCsASACQYACaiACQYAIahCSASACQYACaiACQYAKahAZIAJBgAhqIAQQkgEgAkGACG\n ogAEGABGoiAxCWASACQYAIahCsASACQYAKaiAFEJIBIAJBgApqIAFBgARqIgUQlgEgAkGACmoQrAEgAkGABmogAkGACGo\n QkgEgAkGABmogAkGACmoQGSACQYAIaiACEJIBIAJBgAhqECsgAkGACmogAkGABGoQkgEgAkGACmoQKyACQYACaiACQYAI\n ahCWASAEIAJBgAJqEJIBIAQgAkGACmoQlgEgAkGABmogAkGACmoQlgEgAkGABGogAkGACGoQlgEgAkGACGogABCSASACQ\n YAIaiADEJYBIAJBgAhqEKwBIAJBgApqIAEQkgEgAkGACmogBRCWASACQYAKahCsASACQYAIaiACQYAKahAZIAJBgARqIA\n JBgAhqEJYBIAJBgAhqIAMQkgEgAkGACGogBRAZIAJBgApqIAJBgAhqEJIBIAJBgApqECsgAyACQYAEahCSASADIAJBgAp\n qEJYBIAJBgAZqIAJBgApqEJYBIAJBgAhqEGYgBCACQYAIahCWAQwDCyAAIAEQBgwECyACQcAMaiABQYAFahBeIAJBgAxq\n IAJBwAxqQcAAEGcaIAJBgAZqIAJBgAxqEKMBCyACQYAGahBmIAJBgAhqIAIQkgEgAkGACGoQKyACQYACaiACQYAIahCWA\n SAFIAJBgAJqEJIBIAJBgARqIAJBgAhqEJIBIAJBgAhqIAAQkgEgAkGACGogAxCWASACQYAIahCsASACQYAKaiABEJIBIA\n JBgApqIAFBgARqEJYBIAJBgApqEKwBIAJBgAhqIAJBgApqEBkgAkGABGogAkGACGoQlgEgAkGACGogAxCSAQJAIARBAkc\n EQCACQcAMaiABQYAFahBeIAJBgAhqIAJBwAxqEKIBDAELIAJBwAxqIAFBgAVqEF4gAkGADGogAkHADGpBwAAQZxogAkGA\n CGogAkGADGoQowELIAJBgAhqEGYgAkGACmogAkGACGoQkgEgAkGACmoQKyADIAJBgARqEJIBIAMgAkGACmoQlgEgAkGAB\n mogAkGACmoQlgEgAkGACGoQZiAFIAJBgAhqEJYBCyACQYAGahCsASACQYAGahBmIAAgAhCSASAAIAJBgAZqEJYBIABBBT\n YCgAYgABCZAQwBCyAAIAEQbAsgAkHADWokAAuaCQIPfwt+IwBBwAJrIgIkACACQeAAakGgp8AAEF8gAEE4EHIhDCACQZg\n BakHwABByGiACQZACakEwEHIaIAwQdCACIAEpAwAiFEL9//P/z///+QF+Qv//////////A4MiETcDiAIgAkHQAGogEUIA\n IAIpA2AiGCAYQj+HIhoQMSAUIAIpA1AiEXwiFiARVK0gAkHYAGopAwAgFEI/h3x8IhRCOocgASkDCCIRQj+HfCARIBRCB\n oYgFkI6iIQiEXwiEiARVK18IRNBASEDAkADQAJAIANBB0YEQCACQZACaiEJIAJB6ABqIQpBByEEIAJB4ABqIQ0gAkGIAm\n ohDkEGIQ8MAQsgA0EBdiIAQQFqIQUgCiAAayEGIAkgAEEDdCIHayEAIAdBCGohCCACQUBrIANBA3QiBCACQeAAamopAwA\n iFiAWQj+HIhQgAikDiAIiESARQj+HEDEgAkHIAGopAwAgEiAVfCIRIBJUrSATIBd8fHwgESACKQNAfCITIBFUrXwhEiAD\n QQFqIQcDQCADIAVNBEAgAkGIAmogBGogE0L9//P/z///+QF+Qv//////////A4MiETcDACACQTBqIBFCACAYIBoQMSACQ\n SBqIBFCACAWIBQQMSACQZgBaiADQQR0aiIAIAJBKGopAwAiGzcDCCAAIAIpAyAiGTcDACACKQMwIhEgE3wiFiARVK0gAk\n E4aikDACASfHwiFEI6hyABIAdBA3RqKQMAIhFCP4d8IBEgFEIGhiAWQjqIhCIRfCISIBFUrXwhEyAVIBl8IhUgGVStIBc\n gG3x8IRcgCUEIaiEJIApBAWohCiAHIQMMAwsgBkEGSw0DIAJBEGogAkHgAGogCGopAwAgAkHgAGogAGopAwB9IhEgEUI/\n hyACQYgCaiAAaikDACACQYgCaiAIaikDAH0iESARQj+HEDEgAikDECIRIBN8IhMgEVStIAJBGGopAwAgEnx8IRIgBUEBa\n iEFIABBeGohACAGQX9qIQYgCEEIaiEIDAALAAsLA0ACQCAEQQ1HBEAgDyAEQQF2IgBrIQUgDiAAQQN0IgtrIRAgDSALay\n EIIBMgF3wgEiAVfCITIBJUrXwhEiAEQQFqIQdBMCEAIAkhBiAKIQMDQCAAIAtGDQIgBUEGTQRAIAIgAyALaikDACAAIAh\n qKQMAfSIRIBFCP4cgACAQaikDACAGIAtqKQMAfSIRIBFCP4cQMSACKQMAIhEgE3wiEyARVK0gAkEIaikDACASfHwhEiAF\n QX9qIQUgBkEIaiEGIANBCGohAyAAQXhqIQAMAQsLIAVBB0HknsAAEDwACyAMIBJC//////////8DgzcDMCACQcACaiQAD\n wsgBEEDdCAMakFIaiATQv//////////A4M3AwAgEkI6hyABIAdBA3RqKQMAIhFCP4d8IBEgEkIGhiATQjqIhCIRfCISIB\n FUrXwhEyAXIARBBHQgAmpBOGoiAEEIaikDAH0gFSAAKQMAIhFUrX0hFyAOQQhqIQ4gDUEIaiENIA9BAWohDyAVIBF9IRU\n gByEEDAALAAsgBkEHQdSewAAQPAAL+QkBBH8jAEGACWsiAiQAIAJBgAhqIAAQXiACIAJBgAhqEF4gAkGACGogAEGAAWoi\n BBBeIAJBgAFqIAJBgAhqEF4gAkGACGogARBeIAIgAkGACGoQDyACQYAIaiABQYABaiIFEF4gAkGAAWogAkGACGoQDyAAK\n AKABiEDAkACQCABKAKABkECRwRAIANBAkYNASACQYAIaiAAQYAFahBeIAJBgAJqIAJBgAhqEF4gAkGACGogAUGABWoQXi\n ACQYACaiACQYAIahAPDAILIANBAkYEQCACQYAIaiAAQYAFahBeIAJBgAdqIAJBgAhqQcAAEGcaIAJBgAZqIAJBgAdqEIU\n BIAJBgAhqIAFBgAVqEF4gAkGAB2ogAkGACGpBwAAQZxogAkGABmogAkGAB2oQSCACQYAIakE4EHIaIAJBATYCuAggAkHA\n CGpBOBByIAJB+AhqQQE2AgAgAkGACGogAkGABmoQpQEQsgEgAkGAAmogAkGACGpBgAEQZxoMAgsgAkGACGogAEGABWoQX\n iACQYACaiACQYAIahBeIAJBgAhqIAFBgAVqEF4gAkGAB2ogAkGACGpBwAAQZxogAkGAAmogAkGAB2oQoAEMAQsgAkGACG\n ogAUGABWoQXiACQYACaiACQYAIahBeIAJBgAhqIABBgAVqEF4gAkGAB2ogAkGACGpBwAAQZxogAkGAAmogAkGAB2oQoAE\n LIAJBgAhqIAAQXiACQYADaiACQYAIahBeIAJBgAhqIAEQXiACQYAEaiACQYAIahBeIAJBgAhqIAQQXiACQYADaiACQYAI\n ahCVASACQYADahCoASACQYAIaiAFEF4gAkGABGogAkGACGoQlQEgAkGABGoQqAEgAkGABWogAkGAA2oQXiACQYAFaiACQ\n YAEahAPIAJBgAZqIAIQXiACQYAGaiACQYABahCVASACQYAGahA6IAJBgAVqIAJBgAZqEJUBIAJBgAhqIAAQXiACQYADai\n ACQYAIahCQASACQYAIaiAAQYAFaiIDEF4gAkGAA2ogAkGACGoQlQEgAkGAA2oQqAEgAkGACGogARBeIAJBgARqIAJBgAh\n qEJABIAJBgAhqIAFBgAVqIgEQXiACQYAEaiACQYAIahCVASACQYAEahCoASACQYAHaiACQYADahBeIAJBgAdqIAJBgARq\n EA8gAkGABmogAhCQASACQYAGaiACQYACahCVASACQYAGahA6IAJBgAdqIAJBgAZqEJUBIAJBgAhqIAQQXiACQYADaiACQ\n YAIahCQASACQYAIaiADEF4gAkGAA2ogAkGACGoQlQEgAkGAA2oQqAEgAkGACGogBRBeIAJBgARqIAJBgAhqEJABIAJBgA\n hqIAEQXiACQYAEaiACQYAIahCVASACQYAEahCoASACQYAIaiACQYADahBeIAJBgAhqIAJBgARqEA8gAkGABmogAkGAAWo\n QkAEgAkGABmogAkGAAmoQlQEgAkGABmoQOiACQYAIaiACQYAGahCVASACQYABahBVIAIgAkGAAWoQlQEgACACIAJBgAVq\n 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\n GogAkGABWoQfSACQYAEahCoASACQYAFaiAAEJABIAJBgAVqIAQQlQEgAkGABWoQqAEgAkGABmogARBeIAJBgAZqIAYQlQ\n EgAkGABmoQqAEgAkGABWogAkGABmoQDyACQYAGaiACEJABIAJBgAZqIAJBgAJqEJUBIAJBgAZqIAJBgAVqELUBIAJBgAZ\n qEKgBIAJBgAVqIAIQkAEgAkGABWogAhCVASACIAJBgAVqEJUBIAIQqAEgAkGAAmpBDBCfASACQYACahBVIAJBgAJqEKgB\n IAJBgAdqIAJBgAFqEF4gAkGAB2ogAkGAAmoQlQEgAkGAB2oQqAEgAkGAAWogAkGAAmoQfSACQYABahCoASACQYAGakEME\n J8BIAJBgAZqEFUgAkGABmoQqAEgAkGABWogAkGABmoQkAEgAkGABWogAkGABGoQDyACQYACaiACQYADahCQASACQYACai\n ACQYABahAPIAJBgAVqIAJBgAJqELUBIAJBgAZqIAIQDyACQYABaiACQYAHahAPIAJBgAZqIAJBgAFqEJUBIAIgAkGAA2o\n QDyACQYAHaiACQYAEahAPIAJBgAdqIAIQlQEgACACQYAFahCQASAAEKgBIAMgAkGABmoQkAEgAxCoASAEIAJBgAdqEJAB\n IAQQqAEgAkGACGokAAv2BQEFfyMAQYAEayICJAAgAiAAEIUBIAIgARBIIAJBQGsgAEFAayIDEIUBIAJBQGsgAUFAayIFE\n EggAkGAAWogAEGAAWoiBBCFASACQYABaiABQYABaiIGEEggAkHAAWogABCFASACQcABaiADEHggAkHAAWoQRCACQYACai\n ABEIUBIAJBgAJqIAUQeCACQYACahBEIAJBwAFqIAJBgAJqEEggAkGAAmogAhClASACQYACaiACQUBrEHggAkHAAWogAkG\n AAmoQgAEgAkHAAWoQRCACQYACaiADEKUBIAJBgAJqIAQQeCACQYACahBEIAJBwAJqIAUQhQEgAkHAAmogBhB4IAJBwAJq\n EEQgAkGAAmogAkHAAmoQSCACQcACaiACQUBrEKUBIAJBwAJqIAJBgAFqEHggAkGAAmogAkHAAmoQgAEgAkGAAmoQRCACQ\n cACaiAAEKUBIAJBwAJqIAQQeCACQcACahBEIAJBgANqIAEQhQEgAkGAA2ogBhB4IAJBgANqEEQgAkHAAmogAkGAA2oQSC\n ACQYADaiACEKUBIAJBgANqIAJBgAFqEHggAkGAA2ogAkHAAmoQswEgAkGAA2oQRCACQcACaiACEKUBIAJBwAJqIAIQeCA\n CIAJBwAJqEHggAhBEIAJBgAFqQQwQUiACQcADaiACQUBrEIUBIAJBwANqIAJBgAFqEHggAkHAA2oQRCACQUBrIAJBgAFq\n EIABIAJBQGsQRCACQYADakEMEFIgAkHAAmogAkGAA2oQpQEgAkHAAmogAkGAAmoQSCACQYABaiACQcABahClASACQYABa\n iACQUBrEEggAkHAAmogAkGAAWoQswEgAkGAA2ogAhBIIAJBQGsgAkHAA2oQSCACQYADaiACQUBrEHggAiACQcABahBIIA\n JBwANqIAJBgAJqEEggAkHAA2ogAhB4IAAgAkHAAmoQpQEgABBEIAMgAkGAA2oQpQEgAxBEIAQgAkHAA2oQpQEgBBBEIAJ\n BgARqJAALxQUBBH8jAEHwEmsiACQAIAAQOEF/IQEgABCIAUUEQCAAQYADakE4EHIaIABBuANqQTgQchogAEG4A2ogAEGA\n A2oQVCAAQfAKakG4gMAAEF8gAEHwDWpB8IDAABBfIABB8ANqIABB8ApqIABB8A1qEEkgAEHwBGpBOBByGiAAQQE2AqgFI\n ABBsAVqQTgQchogAEHoBWpBATYCACAAQfAFakE4EHIaIABBATYCqAYgAEGwBmpBOBByGiAAQegGakEBNgIAIABB8AZqQT\n gQchogAEEBNgKoByAAQbAHakE4EHIaIABB6AdqQQE2AgBBf2ohAyAAQfAHahAqIABB8AdqIAAQfiAAQfAKahAqIABB8Ap\n qIABB8AdqEH4gAEHwDWoQKiAAQfANaiAAQfAHahB+IABB8A1qEJwBAkACQAJAA0AgAiEBIANBAkkNAyAAQfAKaiAAQfAE\n aiAAQfAFaiAAQfAGahAlIAFBxABNBEAgAEHwEGogAEHwBGogAEHwBWogAEHwBmoQRiABQQh0QdCrwABqIABB8BBqEJIBI\n AFBAWohAgJAAkAgAEG4A2ogA0F/aiIDEFcgAEGAA2ogAxBXa0EBag4DAQMAAwsgAEHwCmogAEHwB2ogAEHwBGogAEHwBW\n ogAEHwBmoQHiABQcMASw0DIABB8BBqIABB8ARqIABB8AVqIABB8AZqEEYgAkEIdEHQq8AAaiAAQfAQahCSASABQQJqIQI\n MAgsgAEHwCmogAEHwDWogAEHwBGogAEHwBWogAEHwBmoQHiABQcMASw0DIABB8BBqIABB8ARqIABB8AVqIABB8AZqEEYg\n AkEIdEHQq8AAaiAAQfAQahCSASABQQJqIQIMAQsLIAFBxQBBvIHAABA8AAtBxQBBxQBBzIHAABA8AAtBxQBBxQBB3IHAA\n BA8AAtBACEBCyAAQfASaiQAIAEL8gQBBH8jAEGADGsiAiQAIAIgABCOASACQYACahAvIAJBgARqIABBgAJqIgMQjgEgAk\n GABmoQLyACQYAIaiAAEI4BIAJBgApqIAEQjgEgAiABEBkgAkGABGogAUGAAmoiBBAZIAJBgAhqIAMQlgEgAkGACmogBBC\n WASACQYAIahCsASACQYAKahCsASACQYACaiACQYAIahCSASACQYACaiACQYAKahAZIAJBgAhqIAMQkgEgAkGACGogAEGA\n BGoiBRCWASACQYAKaiAEEJIBIAJBgApqIAFBgARqIgQQlgEgAkGACGoQrAEgAkGACmoQrAEgAkGABmogAkGACGoQkgEgA\n kGABmogAkGACmoQGSACQYAIaiACEJIBIAJBgAhqECsgAkGACmogAkGABGoQkgEgAkGACmoQKyACQYACaiACQYAIahCWAS\n ADIAJBgAJqEJIBIAMgAkGACmoQlgEgAkGABmogAkGACmoQlgEgAkGABGogAkGACGoQlgEgAkGACGogABCSASACQYAIaiA\n FEJYBIAJBgAhqEKwBIAJBgApqIAEQkgEgAkGACmogBBCWASACQYAKahCsASACQYAIaiACQYAKahAZIAJBgARqIAJBgAhq\n EJYBIAJBgAhqIAUQkgEgAkGACGogBBAZIAJBgApqIAJBgAhqEJIBIAJBgApqECsgBSACQYAEahCSASAFIAJBgApqEJYBI\n AJBgAZqIAJBgApqEJYBIAJBgAhqEGYgAyACQYAIahCWASACQYAGahCsASACQYAGahBmIAAgAhCSASAAIAJBgAZqEJYBIA\n BBBTYCgAYgABCZASACQYAMaiQAC68EAQV/IwBBkAZrIgIkACAAQUBrIQQCQCABQfgAaigCACABKAI4aqwgAEH4AGooAgA\n iAyAAKAI4IgVqrH5CgICAEFMNACAFQQJOBH8gABASIAAoAngFIAMLQQJIDQAgBBASCyACQaCnwAAQX0EAIQMgAkE4akHw\n ABByGiABQUBrIQUDQCADQThGBEAgAkHwAGohBkEAIQMDQCADQThGRQRAIAMgBmogAiADaikDADcDACADQQhqIQMMAQsLI\n AJBqAFqIAAQXyACQeABaiABEF8gAkGYAmogACABEAggAkGIA2ogBCAFEAggAkGoAWogBBBhIAJBqAFqEEQgAkHgAWogBR\n BhIAJB4AFqEEQgAkH4A2ogAkGoAWogAkHgAWoQCEEAIQMgAkHoBGpB8AAQchoDQCADQfAARkUEQCACQegEaiADaiACQZg\n CaiADaikDADcDACADQQhqIQMMAQsLIAJB6ARqIAJBiANqEGVBACEDA0AgA0HwAEZFBEAgAkGIA2ogA2oiASACQThqIANq\n KQMAIAEpAwB9NwMAIANBCGohAwwBCwsgAkGYAmogAkGIA2oQZSACQZgCahBFIAJB+ANqIAJB6ARqEGQgAkH4A2oQRSACQ\n dgFaiACQZgCahAFIAAgAkHYBWoQayAAQQM2AjggAkHYBWogAkH4A2oQBSAEIAJB2AVqEGsgAEECNgJ4IAJBkAZqJAAFIA\n JBOGogA2pCADcDACADQQhqIQMMAQsLC5QEAQF/IwBB0CJrIgMkACADQcAWakG4gMAAEF8gA0HIHGpB8IDAABBfIANBCGo\n gA0HAFmogA0HIHGoQSSADQYgBakE4EHIaIANBwAFqQTgQchogA0H4AWoQKgJAIAIQhAFFBEAgA0H4BGoQKiADQfgEaiAB\n EH4gA0H4BGoQSiADQfgHahBLIANB+AdqIAIQfyADQfgHahBHIANByBxqIANB+AdqEIUBIANBuAlqIANByBxqEIUBIANBy\n BxqIANBuAhqEIUBIANB+AlqIANByBxqEIUBIANBuApqECogA0G4DWoQYCADQbgKaiADQfgEahB+IANBwBNqECogA0HAE2\n ogA0H4BGoQfiADQcATahCcASADQcABaiADQYgBahBUQX9qIQIDQCACQQFNBEAgA0G4DWoQkwEgACADQbgNakGIBhBnGgw\n DBSADQbgNahAbIANBwBZqIANBuApqIANBuAlqIANB+AlqEBcCQAJAAkAgA0HAAWogAkF/aiICEFcgA0GIAWogAhBXa0EB\n ag4DAQIAAgsgA0HIHGogA0G4CmogA0H4BGogA0G4CWogA0H4CWoQFiADQcAWaiADQcgcahAGDAELIANByBxqIANBuApqI\n ANBwBNqIANBuAlqIANB+AlqEBYgA0HAFmogA0HIHGoQBgsgA0G4DWogA0HAFmoQBAwBCwALAAsgABBgCyADQdAiaiQAC8\n MDARV/A0AgAUHAAUYEQAJAIABBKGohCyAAQRRqKAIAIgwhCCAAQRBqKAIAIg0hAyAAQQxqKAIAIg4hAiAAKAIIIg8hASA\n AQRhqKAIAIhAhCiAAQRxqKAIAIhEhBCAAQSBqKAIAIhIhByAAQSRqKAIAIhMhBgNAIAchCSAEIQcgCiEEIAVBgAJGDQEg\n AiADcSEUIAIgA3MhFSAFIAtqKAIAIAVB9J7AAGooAgAgBEEadyAEQRV3cyAEQQd3cyAGaiAJIARBf3NxIAQgB3FyampqI\n gYgCGohCiAFQQRqIQUgAyEIIAIhAyABIQIgAUEedyABQRN3cyABQQp3cyAUIAEgFXFzaiAGaiEBIAkhBgwACwALBSAAIA\n FqIgNB6ABqIANBzABqKAIAIANBKGooAgAgA0EsaigCACICQRl3IAJBDndzIAJBA3ZzIANB4ABqKAIAIgJBD3cgAkENd3M\n gAkEKdnNqamo2AgAgAUEEaiEBDAELCyAAIAYgE2o2AiQgACAJIBJqNgIgIAAgByARajYCHCAAIAQgEGo2AhggACAIIAxq\n NgIUIAAgAyANajYCECAAIAIgDmo2AgwgACABIA9qNgIIC9YDAgZ/An4jAEHwAGsiASQAIAFBoKfAABBfIAFBOGogARBfI\n AAQRAJAAkACQCABAn8gACgCOCICQRBMBEAgAkF/ahA5DAELIAEpAzAiCEIBfCIHIAhUDQEgACkDMCIIQoCAgICAgICAgH\n 9RQQAgB0J/URsNAiABQThqIAggB3+nECghByABIAEpA2ggB0I6hnw3A2ggACABQThqEGIgABBEQQILIgMQLSAAQQhqIQQ\n DQCADRQ0DIAEgASkDCEI5hkKAgICAgICAgAKDIAEpAwBCAYeEIgc3AwAgASAAKQMAIAd9IgdC//////////8DgzcDOEEA\n IQIDQCAHQjqHIQcgAkEoRkUEQCABIAJqIgVBCGoiBiAFQRBqKQMAQjmGQoCAgICAgICAAoMgBikDAEIBh4QiCDcDACABI\n AJqQUBrIAIgBGopAwAgCH0gB3wiB0L//////////wODNwMAIAJBCGohAgwBCwsgASABKQMwQgGHIgg3AzAgASAAKQMwIA\n h9IAd8Igc3A2ggACABQThqIAdCP4enQQFqEE8gA0F/aiEDDAALAAtBoKLAAEEZQbyiwAAQWwALQdCiwABBH0G8osAAEFs\n ACyAAQQE2AjggAUHwAGokAAuhAwEBfyMAQZADayIGJAAgBkEIakHAABByGiAGQcgAakGoAhByGiAGQcgAahBDA0AgAQRA\n IAZByABqQQAQPiABQX9qIQEMAQUCQCACBEAgBkHIAGogAiADEHoLIAQEQCAGQcgAaiAEIAUQegsgBkGIA2pCADcDACAGQ\n YADakIANwMAIAZB+AJqQgA3AwAgBkIANwPwAiAGKAJIIQEgBigCTCECIAZByABqQYABED4DQCAGKAJIQf8DcUHAA0ZFBE\n AgBkHIAGpBABA+DAELCyAGQawBaiABNgIAIAZBqAFqIAI2AgAgBkHIAGoQEUEAIQJBACEBA0AgAUEgRkUEQCAGQfACaiA\n BaiABQXxxIAZqQdAAaigCACACQX9zQRhxdjoAACACQQhqIQIgAUEBaiEBDAELCyAGQcgAahBDQQAhAQNAIAFBIEZFBEAg\n BkEIaiABaiAGQfACaiABai0AADoAACABQQFqIQEMAQsLQQAhAQNAIAFBIEYNASAAIAFqIAZBCGogAWotAAA6AAAgAUEBa\n iEBDAALAAsLCyAGQZADaiQAC6EDAQN/IwBBgAZrIgEkACABIABBgAFqIgMQXiABQYABaiADEF4gAUGAAWoQMiABQYACai\n ABEF4gAUGAAmogAEGAAmoiAhAPIAFBgANqIAIQXiABQYADahAyIAIgAUGAAWoQkAEgAiABQYABahCVASACEKgBIAIQpwE\n gAhCnASACEKgBIAFBgANqQQwQnwEgAUGAA2oQVSABQYADahCoASABQYAEaiABQYADahBeIAFBgARqIAIQDyABQYAFaiAB\n QYABahBeIAFBgAVqIAFBgANqEJUBIAFBgAVqEKgBIAIgAUGAAmoQDyABQYACaiABQYADahCQASABQYACaiABQYADahCVA\n SABQYADaiABQYACahCVASABQYADahCoASABQYABaiABQYADahB9IAFBgAFqEKgBIAFBgAVqIAFBgAFqEA8gAUGABWogAU\n GABGoQlQEgAUGAAmogABCQASABQYACaiABEA8gACABQYABahCQASAAEKgBIAAgAUGAAmoQDyAAEKcBIAAQqAEgAyABQYA\n FahCQASADEKgBIAFBgAZqJAALhQMBBH8CQAJAIAFBgAJPBEAgAEEYaigCACEEAkACQCAAIAAoAgwiAkYEQCAAQRRBECAA\n QRRqIgIoAgAiAxtqKAIAIgENAUEAIQIMAgsgACgCCCIBIAI2AgwgAiABNgIIDAELIAIgAEEQaiADGyEDA0AgAyEFIAEiA\n kEUaiIDKAIAIgFFBEAgAkEQaiEDIAIoAhAhAQsgAQ0ACyAFQQA2AgALIARFDQIgACAAQRxqKAIAQQJ0QeS3wQBqIgEoAg\n BHBEAgBEEQQRQgBCgCECAARhtqIAI2AgAgAkUNAwwCCyABIAI2AgAgAg0BQdi1wQBB2LXBACgCAEF+IAAoAhx3cTYCAA8\n LIABBDGooAgAiAiAAQQhqKAIAIgBHBEAgACACNgIMIAIgADYCCA8LQdS1wQBB1LXBACgCAEF+IAFBA3Z3cTYCAAwBCyAC\n IAQ2AhggACgCECIBBEAgAiABNgIQIAEgAjYCGAsgAEEUaigCACIARQ0AIAJBFGogADYCACAAIAI2AhgLC7MCAQF/IwBBg\n AtrIgUkACAFEC8gBUGAAmoQLyAFQYAEahAvIAVBgAZqQTgQchogBUEBNgK4BiAFQcAGakE4EHIaIAVB+AZqQQE2AgAgBU\n GAB2pBOBByGiAFQQE2ArgHIAVBwAdqQTgQchogBUH4B2pBATYCACAFQYAIakE4EHIaIAVBATYCuAggBUHACGpBOBByGiA\n FQfgIakEBNgIAIAEgAiAFQYAGaiAFQYAHaiAFQYAIahAeIAVBgAhqIAMQoAEgBUGABmogBBCgASAFQYAJaiAFQYAGaiAF\n QYAHahCRASAFIAVBgAlqEJIBIAVBgAlqIAVBgAhqEJsBIAVBgARqIAVBgAlqEJIBIAVBgARqEGYgACAFIAVBgAJqIAVBg\n ARqEHYgAEEDNgKABiAFQYALaiQAC7ECAQF/IwBBgAtrIgQkACAEEC8gBEGAAmoQLyAEQYAEahAvIARBgAZqQTgQchogBE\n EBNgK4BiAEQcAGakE4EHIaIARB+AZqQQE2AgAgBEGAB2pBOBByGiAEQQE2ArgHIARBwAdqQTgQchogBEH4B2pBATYCACA\n EQYAIakE4EHIaIARBATYCuAggBEHACGpBOBByGiAEQfgIakEBNgIAIAEgBEGABmogBEGAB2ogBEGACGoQJSAEQYAIaiAC\n EKABIARBgAZqIAMQoAEgBEGACWogBEGABmogBEGAB2oQkQEgBCAEQYAJahCSASAEQYAJaiAEQYAIahCbASAEQYAEaiAEQ\n YAJahCSASAEQYAEahBmIAAgBCAEQYACaiAEQYAEahB2IABBAzYCgAYgBEGAC2okAAvJAgEDfyMAQcACayIBJAAgASAAQU\n BrIgMQhQEgARADIAFBQGsgAxCFASABQUBrIABBgAFqIgIQSCABQYABaiACEIUBIAFBgAFqEAMgAiABEKUBIAIgARB4IAI\n QRCACEE4gAhBOIAIQRCABQYABakEMEFIgAUHAAWogAUGAAWoQhQEgAUHAAWogAhBIIAFBgAJqIAEQhQEgAUGAAmogAUGA\n AWoQeCABQYACahBEIAIgAUFAaxBIIAFBQGsgAUGAAWoQpQEgAUFAayABQYABahB4IAFBgAFqIAFBQGsQeCABIAFBgAFqE\n IABIAEQRCABQYACaiABEEggAUGAAmogAUHAAWoQeCABQUBrIAAQpQEgAUFAayADEEggACABEKUBIAAQRCAAIAFBQGsQSC\n AAEE4gABBEIAMgAUGAAmoQpQEgAxBEIAFBwAJqJAALrQIBA38jAEGABGsiAiQAIAIgABBeIAJBgAFqIABBgAFqIgMQXiA\n CQYACakE4EHIaIAJBATYCuAIgAkHAAmpBOBByGiACQfgCakEBNgIAIAJBgANqIAMQXiACIAEQDyACQYABaiABQYABaiIE\n EA8gAkGAAmogBBCQASACQYACaiABEJUBIAJBgANqIAAQlQEgAkGAAmoQqAEgAkGAA2oQqAEgAkGAA2ogAkGAAmoQDyACQ\n YACaiACEJABIAJBgAJqEDogAkGAA2ogAkGAAmoQlQEgAkGAA2oQqAEgAkGAAmogAkGAAWoQkAEgAkGAAmoQOiADIAJBgA\n NqEJABIAMgAkGAAmoQlQEgAkGAAWoQVSAAIAJBgAFqEJABIAAgAhCVASAAEKwBIAJBgARqJAALvQIBA38jAEGACGsiASQ\n AIAEgABCOASABQYACaiAAQYAEaiICEI4BIAFBgARqIABBgAJqIgMQjgEgAUGABmoQLyAAECIgAUGABmogABCSASABQYAG\n aiAAEJYBIAAgAUGABmoQlgEgABCsASABELYBIAEQrwEgACABEJYBIAFBgAJqECIgAUGAAmoQZiABQYAGaiABQYACahCSA\n SABQYAGaiABQYACahCWASABQYACaiABQYAGahCWASABQYACahCsASABQYAEahAiIAFBgAZqIAFBgARqEJIBIAFBgAZqIA\n FBgARqEJYBIAFBgARqIAFBgAZqEJYBIAFBgARqEKwBIAMQrgEgAxCvASACELYBIAIQrwEgAyABQYACahCWASACIAFBgAR\n qEJYBIABBBTYCgAYgABCaASABQYAIaiQAC7ICAQN/IwBBgAhrIgEkACAAKAKABkEBRwRAIAEgABCOASABQYACaiAAQYAC\n aiIDEI4BIAFBgARqIABBgARqIgIQjgEgAUGABmogABCOASABECIgAUGAAmogAhAZIAFBgAJqEK8BIAFBgAJqEKwBIAFBg\n ARqECIgAUGABmogAxAZIAFBgAZqEK8BIAIgABCWASACIAMQlgEgAhCsASACECIgACABEJIBIAEgAUGAAmoQlgEgARCsAS\n ABIAFBgARqEJYBIAEgAUGABmoQlgEgARCsASABECsgAUGAAmoQZiABQYAEahBmIAAgAUGAAmoQlgEgAyABQYAEahCSASA\n DIAFBgAZqEJYBIAIgARCWASAAQQRBBSAAKAKABkF+cUECRhs2AoAGIAAQmQELIAFBgAhqJAALigIBAn8jAEHgAWsiAiQA\n IAAQRCACQQhqQTAQchogAkIBNwMAIAJBOGogABBfIAJB8ABqIAEQXyACQagBakE4EHIaIAAQdANAIAJBOGogAkHwAGoQN\n UF/TARAA0ACQCADQQBMDQAgAkHwAGpBARA7IAJBARA7IAJBqAFqIAJBOGoQayACQagBaiACQfAAahBiIAJBqAFqEEQgAk\n E4aiACQagBaiACKQPYAUI/h6dBAWoiARBPIAJBqAFqIAAQayACQagBaiACEGEgAkGoAWoQRCAAIAJBqAFqIAEQTyADQX9\n qIQMMAQsLBSACQQEQLSACQfAAakEBEC0gA0EBaiEDDAELCyACQeABaiQAC54CAQF/IwBBgA1rIgMkACADIAEQaiADEJkB\n IANBiAZqIAIQXyADQYgGahBEIANBwAZqIANBiAZqEF8gA0HABmpBAxAoGiADQcAGahBEIANB+AZqIAMQagJAIANBwAZqE\n FpFBEAgA0HABmoQKUF/aiECA0AgAkEBTQRAIANB+AZqEJoBDAMLIANB+AZqEBoCQAJAIANBwAZqIAJBf2oiAhBXIANBiA\n ZqIAIQV2tBAWoOAwECAAILIANB+AZqIAMQDgwBCyADEJMBIANB+AZqIAMQDiADEJMBDAALAAsgA0H4BmoQsAEgA0H4B2o\n QqQEgA0H4CGoQrQEgA0H4CmoQrQEgA0EBNgL4DAsgACADQfgGakGIBhBnGiADQYANaiQAC5ACAQJ/IwBBgAJrIgUkACAF\n QYABaiAAEF4gAiAFQYABahCQASAFQYABaiAAQYABahBeIAQgBUGAAWoQkAEgBUGAAWogAEGAAmoiBhBeIAUgBUGAAWoQX\n iAFQYABaiAGEF4gAyAFQYABahCQASAFQYABaiABQYABaiIGEF4gBSAFQYABahAPIAVBgAFqIAEQXiADIAVBgAFqEA8gAi\n ADEH0gAhCoASAEIAUQfSAEEKgBIAUgAhCQASACEFUgAhCoASAFQYABaiAGEF4gBSAFQYABahAPIAMgBBCQASAFQYABaiA\n BEF4gAyAFQYABahAPIAMgBRB9IAMQqAEgBBA6IAQQqAEgACABEAsgBUGAAmokAAvkAQECfyMAQcABayIDJAAgAxBLIAAg\n ASACQR91IgQgAnMgBEF/c2pBAm0iAkF/akEfdhBtIAAgAUHAAWogAkEBc0F/akEfdhBtIAAgAUGAA2ogAkECc0F/akEfd\n hBtIAAgAUHABGogAkEDc0F/akEfdhBtIAAgAUGABmogAkEEc0F/akEfdhBtIAAgAUHAB2ogAkEFc0F/akEfdhBtIAAgAU\n GACWogAkEGc0F/akEfdhBtIAAgAUHACmogAkEHc0F/akEfdhBtIAMgABB/IAMQpgEgACADIARBAXEQbSADQcABaiQAC+Q\n BAQJ/IwBBgANrIgMkACADECogACABIAJBH3UiBCACcyAEQX9zakECbSICQX9qQR92EG8gACABQYADaiACQQFzQX9qQR92\n EG8gACABQYAGaiACQQJzQX9qQR92EG8gACABQYAJaiACQQNzQX9qQR92EG8gACABQYAMaiACQQRzQX9qQR92EG8gACABQ\n YAPaiACQQVzQX9qQR92EG8gACABQYASaiACQQZzQX9qQR92EG8gACABQYAVaiACQQdzQX9qQR92EG8gAyAAEH4gAxCcAS\n AAIAMgBEEBcRBvIANBgANqJAALvAEBAn8jAEGwAWsiAiQAIAJBMBByIQIDQCADQTBGBEACQCABQTBqIQEgAkEwaiACEHV\n BACEDA0AgA0EwRg0BIAIgA2ogASADai0AADoAACADQQFqIQMMAAsACwUgAiADaiABIANqLQAAOgAAIANBAWohAwwBCwsg\n AkHwAGogAhB1IABBOBByIgBBATYCOCAAQUBrQTgQciAAQfgAakEBNgIAIAAgAkHwAGoQpQEgAkEwahClASACQbABaiQAC\n 9QBAQJ/IwBBgANrIgEkACABIAAQXiABQYABaiAAQYABaiICEF4gAUGAAmogABBeIAFBgAJqIAIQDyABIAIQlQEgAUGAAW\n oQVSABQYABaiAAEJUBIAEQqAEgAUGAAWoQqAEgACABEJABIAAgAUGAAWoQDyABQYABaiABQYACahCQASABQYABahBVIAF\n BgAFqIAFBgAJqEJUBIAFBgAFqEKgBIAFBgAFqEDogACABQYABahCVASABQYACahCnASACIAFBgAJqEJABIAAQrAEgAUGA\n A2okAAvEAQEBfyMAQYADayIDJAAgA0EIaiABEIUBAkAgAkUEQCADQQhqEAcMAQsgA0EIaiACEKUBCyADQcgAakHYo8AAE\n F8gA0GAAWogA0HIAGoQiwEgA0HAAWogA0EIahCFASADQcABahADIANBwAFqIAEQSCAAIAEQhQEgACADQQhqEEggA0GAAm\n ogA0HAAWoQhQEgABBYIQEgA0HAAmogABCFASADQcACahBBIANBwAJqEEQgACADQcACaiABEHkgA0GAA2okAAufAQEBfyM\n AQfAAayICJAAgAiABEF9BACEBIAJBOGpBOBByGiAAEEQCQCAAIAIQNUEASA0AA0AgAkEBEC0gAUEBaiEBIAAgAhA1QX9K\n DQALA0AgAUEATA0BIAJBARA7IAJBOGogABBrIAJBOGogAhBiIAJBOGoQRCAAIAJBOGogAikDaEI/h6dBAWoQTyABQX9qI\n QEMAAsACyACQfAAaiQAC7IBAQF/IwBBgAJrIgQkACAEQYABaiAAEF4gAyAEQYABahCQASAEQYABaiAAQYABahBeIAQgBE\n GAAWoQXiAEQYABaiAAQYACahBeIAIgBEGAAWoQkAEgASAEEJABIAEgAhAPIAMQMiAEEDIgAhAyIAEQpwEgARA6IAEQqAE\n gARBVIAEQqAEgAkEMEJ8BIANBAxCfASACEFUgAhCoASACIAQQfSACEKgBIAAQFCAEQYACaiQAC58BAQJ/IwBBgAJrIgIk\n ACAAIAEQXiAAEDIgAkGIAWpB2KTAABBfIAJBCGpBOBByGiACQQE2AkAgAkHIAGpBOBByIAJBgAFqQQE2AgAgAkHAAWogA\n kGIAWoQiwEgAkEIaiACQcABahClARCyASACQQhqEKgBIAJBCGoQVSACQQhqEKgBIAAgARAPIAAgAkEIahCVASAAEKsBIA\n JBgAJqJAALowEBAX8jAEEwayIGJAAgBkEQaiAAIAEQsQEgBiAGKAIUIgA2AhwgBiAGKAIQIgE2AhggBkEIaiACIAMQsQE\n gBiAGKAIMIgI2AiQgBiAGKAIIIgM2AiAgBiAEIAUQsQEgBiAGKAIEIgQ2AiwgBiAGKAIAIgU2AiggASAAIAMgAiAFIAQQ\n ACAGQShqEKQBIAZBIGoQpAEgBkEYahCkASAGQTBqJAALiAECA38DfiMAQRBrIgIkAAN+IANBOEYEfiACQRBqJAAgBgUgA\n iAAIANqIgQpAwAiBSAFQj+HIAGsIgUgBUI/hxAxIAQgAikDACIHIAZ8IgVC//////////8DgzcDACAFIAdUrSACQQhqKQ\n MAIAZCP4d8fEIGhiAFQjqIhCEGIANBCGohAwwBCwsLhAECA38BfiMAQUBqIgEkACABQQhqIAAQXyABQQhqEEQgAUE4aiE\n CQQYhA0HcAiEAAn8DQEEAIANBAEgNARogAikDACIEUARAIAJBeGohAiAAQUZqIQAgA0F/aiEDDAELCwN/IARQBH8gAAUg\n AEEBaiEAIARCAn8hBAwBCwsLIAFBQGskAAuHAQEBfyMAQcABayIBJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByGiAAQfgAa\n kEBNgIAIAEQUCABQYgBakE4EHIaIABBgAFqIAFBgAEQZxogAEGAAmpBOBByGiAAQbgCakEBNgIAIABBvAJqIAFBhAFqQT\n wQZxogAEH4AmpBATYCACABQcABaiQAC48BAQJ/IwBBgAJrIgEkACAAEKwBIAEgABBeIAFBgAFqQTgQchogAUEBNgK4ASA\n BQcABakE4EHIaIAFB+AFqQQE2AgAgASAAQYABaiICEJUBIAEQOiABQYABaiABEJABIAFBgAFqIAIQlQEgAiABEJABIAIg\n ABCVASAAIAFBgAFqEJABIAAQrAEgAUGAAmokAAt9AgF/An4jAEGAAWsiASQAIAFBCGogABCFASABQQhqEBIgAUHIAGogA\n UEIahCDAUEIIQADQCAAQThGRQRAIAFByABqIABqKQMAIAKEIQIgAEEIaiEADAELCyABKQNIIQMgAUGAAWokACACQn98IA\n NCAYVCf3yDQjqIp0EBcQuJAQIBfwJ+IAAgACkDMCABQT9xrSIDhiAAKQMoQTogAWtBP3GtIgSHhDcDMCAAQShqIQFBBiE\n CA0AgAkEBTQRAIAAgACkDACADhkL//////////wODNwMABSABIAEpAwAgA4ZC//////////8DgyABQXhqIgEpAwAgBIeE\n NwMAIAJBf2ohAgwBCwsLiQECAX8CfiAAIAApA2BBOiABQTpwIgFrrSIEhyAAKQNoIAGtIgOGhDcDaCAAQeAAaiEBQQ0hA\n gNAIAJBAU0EQCAAIAApAwAgA4ZC//////////8DgzcDAAUgASABKQMAIAOGQv//////////A4MgAUF4aiIBKQMAIASHhD\n cDACACQX9qIQIMAQsLC3EBAX8jAEFAaiIBJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByGiAAQfgAakEBNgIAIAFBCGpBOBB\n yGiAAQYABakE4EHIaIABBuAFqQQE2AgAgAEG8AWogAUEEakE8EGcaIABB+AFqQQE2AgAgAUFAayQAC4EBAgF/AX4gAEHw\n ABByIQADQCACQThGBEACQCAAIAEpAzAiA0I6hzcDOCAAIANC//////////8DgzcDMCAAQUBrIQBBACECA0AgAkEwRg0BI\n AAgAmpCADcDACACQQhqIQIMAAsACwUgACACaiABIAJqKQMANwMAIAJBCGohAgwBCwsLdQECfiAAIANCIIgiBSABQiCIIg\n Z+IAIgA358IAEgBH58IANC/////w+DIgIgAUL/////D4MiAX4iA0IgiCACIAZ+fCICQiCIfCABIAV+IAJC/////w+DfCI\n BQiCIfDcDCCAAIANC/////w+DIAFCIIaENwMAC3YBAn8jAEHAAWsiASQAIAEgABCFASABQUBrIAAQhQEgAUGAAWogAEFA\n ayICEIUBIAEgAhB4IAFBQGsgABB4IAFBQGsQRCACIAFBQGsQSCABQYABahBBIAAgAUGAAWoQeCABEEQgABBEIAAgARBII\n AFBwAFqJAALkwEBAn9B0LXBAEHQtcEAKAIAQQFqNgIAAkACQEGYucEAKAIAQQFGBEBBnLnBAEGcucEAKAIAQQFqIgA2Ag\n AgAEECSw0CQaC5wQAoAgAiAUF/Sg0BDAILQZi5wQBCgYCAgBA3AwBBoLnBACgCACIAQQBIDQFBoLnBACAANgIAAAtBoLn\n BACABNgIAIABBAUsNAAALAAtnAQJ/IwBBQGoiAiQAIAAQRCACIAAQhQECQCABRQRAIAAQBwwBCyAAIAEQpQELQQAhAQNA\n IAFBAUsgA3JFBEAgABADIAFBAEchAyABIAFFaiEBDAELCyAAIAIQSCAAEBIgAkFAayQAC18CAX8EfkIBIQNBMCECA38gA\n kF4RgR/IARCAYYgA3ynQX9qBSABIAJqKQMAIgUgACACaikDACIGfUI6hyADgyAEhCEEIAJBeGohAiAFIAaFQn98QjqHIA\n ODIQMMAQsLC2ACAX8EfkIBIQNB6AAhAgN/IAJBeEYEfyAEQgGGIAN8p0F/agUgASACaikDACIFIAAgAmopAwAiBn1COoc\n gA4MgBIQhBCACQXhqIQIgBSAGhUJ/fEI6hyADgyEDDAELCwt3AQN/IwBBgAJrIgIkACACIAEQXiACQYABaiABEF4gAhAy\n IAJBgAFqIAIQDyAAIAJBgAFqEJcBIABBgAJqIgMgAkGAAWoQlwEgAEGABGoiBCACQYABahCXASADIAEQogEgBCACEKIBI\n ABBBTYCgAYgAkGAAmokAAt6AQF/IwBB4ANrIgEkACABQYABakHApcAAEF8gAUG4AWpB+KXAABBfIAEgAUGAAWogAUG4AW\n oQSSABQfACakGwpsAAEF8gAUGoA2pB6KbAABBfIAFB8AFqIAFB8AJqIAFBqANqEEkgACABIAFB8AFqED8gAUHgA2okAAt\n nACAAQQF2IAByIgBBAnYgAHIiAEEEdiAAciIAQQh2IAByIgBBEHYgAHIiACAAQQF2QdWq1aoFcWsiAEECdkGz5syZA3Eg\n AEGz5syZA3FqIgBBBHYgAGpBj568+ABxQYGChAhsQRh2C2cBAn8jAEGAAWsiASQAIAEgABCFASABQUBrQTgQchogAUEBN\n gJ4IAEgAEFAayICEHggARBBIAFBQGsgARClASABQUBrIAIQeCACIAEQpQEgAiAAEHggACABQUBrEKUBIAFBgAFqJAALaA\n IBfwJ+IAFBP3GtIQNBOiABa0E/ca0hBEEAIQEDQCABQTBGBEAgACAAKQMwIAOHNwMwBSAAIAFqIgIgAkEIaikDACAEhkL\n //////////wODIAIpAwAgA4eENwMAIAFBCGohAQwBCwsLbAEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYC\n ACADQSxqQQI2AgAgA0ICNwIMIANBlKjAADYCCCADQQI2AiQgAyADQSBqNgIYIAMgAzYCKCADIANBBGo2AiAgA0EIaiACE\n HAAC2wBAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakECNgIAIANCAjcCDCADQbCqwAA2AgggA0\n ECNgIkIAMgA0EgajYCGCADIANBBGo2AiggAyADNgIgIANBCGogAhBwAAtlAQJ/IAAgACgCACICQQhqIgM2AgAgACACQQN\n 2QTxxakEoaiICIAFB/wFxIAIoAgBBCHRyNgIAAkACQCADRQRAIABBADYCACAAIAAoAgRBAWo2AgQMAQsgA0H/A3ENAQsg\n ABARCwtnAQF/IwBBgAJrIgMkACAAECogACABEJABIABBgAFqIgEgAhCQASAAQYACahCwASAAEKgBIAMgABAmIANBgAFqI\n AEQXiADQYABahAyIANBgAFqIAMQe0UEQCAAEJgBCyADQYACaiQAC18BAn8jAEGAAWsiASQAIAAQqAEgASAAEIUBIAFBQG\n sgAEFAayICEIUBIAEQAyABQUBrEAMgASABQUBrEHggAUEAEDQgACABEEggARBBIAEQRCACIAEQSCABQYABaiQAC10BAn8\n jAEFAaiIBJAAgAUEIakGgp8AAEF8gAUEIaiAAKAI4QX9qEDkiAhAtIAAgAUEIahBjIABBASACQQFqQR9xdCICNgI4IAJB\n gICAEE4EQCAAEBILIAFBQGskAAtfAgF/AX4jAEHwAGsiASQAIAFBoKfAABBfIAApAwAhAiABQThqIAAQXyAAQQEQOyABQ\n ThqIAEQYSABQThqEEQgAUE4akEBEDsgACABQThqIAJCAoGnEE8gAUHwAGokAAt7AQJ/IABBKGohAgNAIAFBgAJGBEAgAE\n LnzKfQ1tDrs7t/NwIIIABCADcCACAAQSBqQquzj/yRo7Pw2wA3AgAgAEEYakL/pLmIxZHagpt/NwIAIABBEGpC8ua746O\n n/aelfzcCAAUgASACakEANgIAIAFBBGohAQwBCwsLaQICfwF+IAAgACkDACIDQv//////////A4M3AwBBCCEBA0AgA0I6\n hyEDIAFBMEYEQCAAIAApAzAgA3w3AzAFIAAgAWoiAiACKQMAIAN8IgNC//////////8DgzcDACABQQhqIQEMAQsLC2oCA\n n8BfiAAIAApAwAiA0L//////////wODNwMAQQghAQNAIANCOochAyABQegARgRAIAAgACkDaCADfDcDaAUgACABaiICIA\n IpAwAgA3wiA0L//////////wODNwMAIAFBCGohAQwBCwsLWQEBfyMAQYADayIEJAAgBCADEF4gBBBAIARBgAFqIAEQXiA\n EQYACaiACEF4gBEGAAWogBBAPIARBgAJqIAQQDyAAIARBgAFqIARBgAJqEJEBIARBgANqJAALWQECfyMAQUBqIgEkAAJA\n IAAQhAENACABQQEQigEgAEGAAWoiAiABEFkNACACQQAQNCAAIAIQSCAAEBIgAEFAayIAIAIQSCAAEBIgAiABEKUBCyABQ\n UBrJAALVwEBfyMAQbABayICJAAgATQCOCAANAI4fkKAgIAQWQRAIAAQEgsgAkEIaiAAIAEQCCACQfgAaiACQQhqEAUgAC\n ACQfgAahBrIABBAjYCOCACQbABaiQAC08BAn8jAEFAaiIDJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByIABB+ABqQQE2AgA\n gAyABEIsBIAAgAxClASADIAIQiwEgAxClASADQUBrJAALWQECfyMAQYABayIBJAACQCAAEIgBDQAgARBQIABBgAJqIgIg\n ARB7DQAgAhBAIAAgAhAPIAAQqwEgAEGAAWoiACACEA8gABCrASACIAEQkAELIAFBgAFqJAALSwEBfyMAQUBqIgEkACAAQ\n TgQciIAQQE2AjggAUEBEIoBIABBQGsgAUHAABBnGiAAQYABakE4EHIaIABBuAFqQQE2AgAgAUFAayQAC0sBAn8jAEHwAG\n siASQAIAAQd0UEQCABQaCnwAAQXyABQThqIAAQgwEgASABQThqEGIgARBEIAFBOGogARA1IQILIAFB8ABqJAAgAgtPAQF\n /IwBBgAFrIgIkACAAIAEQhQEgABADIAJByABqQdikwAAQXyACQQhqIAJByABqEIsBIAAgARBIIAAgAkEIahB4IAAQEiAC\n QYABaiQAC0kBAn8DQCABQThGRQRAIAAgAWoiAiACKQMAQgGGNwMAIAFBCGohAQwBCwsgACAAKAI4QQF0IgE2AjggAUGAg\n IAQTgRAIAAQEgsLQgIBfwJ+QQAgAmusIQQDQCADQThHBEAgACADaiICIAIpAwAiBSABIANqKQMAhSAEgyAFhTcDACADQQ\n hqIQMMAQsLC0YBAn8jAEFAaiIBJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByIABB+ABqQQE2AgAgAUEBEIoBIAAgARClARC\n yASABQUBrJAALTgEBfyMAQYAEayIBJAAgABAvIAEQLyABQYACahAvIABBgAJqIAFBgAIQZxogAEGABGogAUGAAmpBgAIQ\n ZxogAEEANgKABiABQYAEaiQAC0sBAX8jAEFAaiICJAACQCAAKAI4IAFsQYCAgBBOBEAgAiABEIoBIAAgAhBIDAELIAAgA\n RAoGiAAIAAoAjggAWw2AjgLIAJBQGskAAtKAAJ/IAFBgIDEAEcEQEEBIAAoAhggASAAQRxqKAIAKAIQEQMADQEaCyACRQ\n RAQQAPCyAAKAIYIAJBACAAQRxqKAIAKAIMEQUACwtCAQF/IwBBQGoiAiQAIAJBCGpBgIDAABBfIAEgAkEIahBrIAEQRCA\n AIAEQayAAQQMQKBogABBEIAAQKSACQUBrJAALSQECfyMAQcABayIBJAAgASAAEF4gAUGAAWogABCFASAAIABBQGsiAhCl\n ASAAEEEgAiABQYABahClASAAIAEQlQEgAUHAAWokAAtIAQF/IwBB4AFrIgEkACABQeihwAAQXyABQThqIAAgARAIIAFBq\n AFqIAFBOGoQBSAAIAFBqAFqEGsgAEECNgI4IAFB4AFqJAALPgEBfyABQTpuIQIgAUGVA00EQCAAIAJBA3RqKQMAQgEgAU\n H//wNxQTpwrYaDQgBVDwsgAkEHQdSdwAAQPAALQAIBfwF+IwBBgAFrIgEkACABQQhqIAAQhQEgAUEIahASIAFByABqIAF\n BCGoQgwEgASkDSCABQYABaiQAQgKBpws8AQF/IwBBgAFrIgIkACACIAAQhQEgAkFAayABEIUBIAIQEiACQUBrEBIgAiAC\n QUBrEDUgAkGAAWokAEULPAIBfwF+A38gAUE4RgR/IAJCf3xCgICAgICAgIAEg0I6iKcFIAAgAWopAwAgAoQhAiABQQhqI\n QEMAQsLC0cBAX8jAEEgayIDJAAgA0EUakEANgIAIANB9KrAADYCECADQgE3AgQgAyABNgIcIAMgADYCGCADIANBGGo2Ag\n AgAyACEHAACzkBAX8jAEFAaiICJAAgAiAAEIUBIAIQByABBEAgASACEKUBCyACEAMgAiAAEEggAhAsIAJBQGskAAs6AQF\n /IABBOBByIQADQCACQTBGRQRAIABBCBAtIAAgACkDACABIAJqMQAAfDcDACACQQFqIQIMAQsLCzQBAX8gAEE4EHIiAEEB\n NgI4IABBQGtBOBByIABB+ABqQQE2AgAgACABEKUBIAFBQGsQpQELMAEBfyAAQTgQciEAA0AgAkE4RwRAIAAgAmogASACa\n ikDADcDACACQQhqIQIMAQsLCz8BAX8jAEGAAmsiASQAIAAQUSABEG4gACABEJIBIABBgAJqEK0BIABBgARqEK0BIABBAT\n YCgAYgAUGAAmokAAswAQJ/A0AgAkE4RwRAIAAgAmoiAyADKQMAIAEgAmopAwB8NwMAIAJBCGohAgwBCwsLMAECfwNAIAJ\n BOEcEQCAAIAJqIgMgAykDACABIAJqKQMAfTcDACACQQhqIQIMAQsLCzABAn8DQCACQThHBEAgACACaiIDIAEgAmopAwAg\n AykDAH03AwAgAkEIaiECDAELCwsxAQJ/A0AgAkHwAEcEQCAAIAJqIgMgAykDACABIAJqKQMAfTcDACACQQhqIQIMAQsLC\n zEBAn8DQCACQfAARwRAIAAgAmoiAyADKQMAIAEgAmopAwB8NwMAIAJBCGohAgwBCwsLOQECfyMAQYABayIBJAAgASAAQY\n ABaiICEF4gAiAAEJABIAEQVSAAIAEQkAEgABCsASABQYABaiQACzMBAX8gAgRAIAAhAwNAIAMgAS0AADoAACABQQFqIQE\n gA0EBaiEDIAJBf2oiAg0ACwsgAAtIAQN/IwBBEGsiASQAIAAoAgwhAyAAKAIIIgJFBEBB9KrAAEErQaCrwAAQWwALIAEg\n AzYCCCABIAA2AgQgASACNgIAIAEQcQALMgEBfyAAQgE3AwBBCCEBA0AgAUE4RkUEQCAAIAFqQgA3AwAgAUEIaiEBDAELC\n yAAEFYLNwAgABBRIAAgARCSASAAQYACaiABQYACahCSASAAQYAEaiABQYAEahCSASAAIAEoAoAGNgKABgsoAQF/A0AgAk\n E4RwRAIAAgAmogASACaikDADcDACACQQhqIQIMAQsLCzMAIAAgARCSASAAQYACaiABQYACahCSASAAQYAEaiABQYAEahC\n SASAAIAEoAoAGNgKABgsoACAAIAEgAhB5IABBQGsgAUFAayACEHkgAEGAAWogAUGAAWogAhB5Cy4BAX8jAEGAAWsiASQA\n IAAQLyABEFAgACABEJABIABBgAFqEKkBIAFBgAFqJAALLQAgACABIAIQjwEgAEGAAWogAUGAAWogAhCPASAAQYACaiABQ\n YACaiACEI8BCzQBAX8jAEEQayICJAAgAiABNgIMIAIgADYCCCACQaSowAA2AgQgAkH0qsAANgIAIAIQaAALPgEBfyMAQR\n BrIgEkACABQQhqIABBCGooAgA2AgAgASAAKQIANwMAIAEoAgAiAEEUaigCABogACgCBBoQMwALKQEBfyABBEAgACECA0A\n gAkEAOgAAIAJBAWohAiABQX9qIgENAAsLIAALKwEBfyMAQcABayICJAAgAhBLIAIgARB/IAIQpgEgACACEAwgAkHAAWok\n AAsiAQF/A0AgAUE4RwRAIAAgAWpCADcDACABQQhqIQEMAQsLCycBAX8jAEFAaiICJAAgAkEIaiABEF0gACACQQhqEIsBI\n AJBQGskAAsrACAAEFEgACABEJIBIABBgAJqIAIQkgEgAEGABGogAxCSASAAQQU2AoAGCyMBAX8jAEFAaiIBJAAgASAAEI\n UBIAEQEiABEFogAUFAayQACykAIAAgARBhIAAgACgCOCABKAI4aiIBNgI4IAFBgICAEE4EQCAAEBILCyUAIAAgASACEE8\n gAEEAIAJrIAAoAjgiACABKAI4c3EgAHM2AjgLIwADQCACBEAgACABLQAAED4gAkF/aiECIAFBAWohAQwBCwsLIgACQCAA\n IAEQWUUNACAAQUBrIAFBQGsQWUUNAEEBDwtBAAskAAJAIABBfE0EQCAARQRAQQQhAAwCCyAAEAEiAA0BCwALIAALJwEBf\n yMAQYABayICJAAgAiABEF4gAhA6IAAgAhCVASACQYABaiQACycAIAAgARCQASAAQYABaiABQYABahCQASAAQYACaiABQY\n ACahCQAQslACAAIAEQpQEgAEFAayABQUBrEKUBIABBgAFqIAFBgAFqEKUBCyUBAX8jAEFAaiICJAAgAiABEIUBIAIQQSA\n AIAIQeCACQUBrJAALKAEBfyMAQYACayICJAAgAiABEI4BIAIQKyAAIAIQlgEgAkGAAmokAAsjAEGEAiACSQRAIAJBhAIg\n AxA9AAsgACACNgIEIAAgATYCAAsiAQF/IwBB8ABrIgIkACACIAEQMCAAIAIQBSACQfAAaiQACxwAAkAgABB3RQ0AIABBg\n AFqEHdFDQBBAQ8LQQALHwAgAEE4EHIiAEEBNgI4IAAgARBrIAAgASgCODYCOAseAAJAIAAQhwFFDQAgAEGAAWoQhwFFDQ\n BBAQ8LQQALGwACQCAAEHdFDQAgAEFAaxB3RQ0AQQEPC0EACx4AAkAgABCHAUUNACAAQYACahCHAUUNAEEBDwtBAAsaAQF\n /IAAQWCIBIABBQGsQWCABcyAAEHdxcwsaACAAQTgQciIAQQE2AjggACABEJ0BIAAQVgsZACAAQTgQciIAQQE2AjggACAB\n EGsgABBWCxcAIAAQRCAAKAIAQX8gAUEfcXRBf3NxCxoAIAAgARBfIAAgAhAkIAAgAhBjIAAgAhAkCxwAIAAQLyAAIAEQk\n AEgAEGAAWogAUGAAWoQkAELGAAgACABIAIQeSAAQUBrIAFBQGsgAhB5CxYAIAAgARClASAAQUBrIAFBQGsQpQELGAAgAB\n AvIAAgARCQASAAQYABaiACEJABCxgAIAAgARCQASAAQYABaiABQYABahCQAQsZACAAEK4BIABBgAJqELYBIABBgARqEK4\n BCxcAIAAQsgEgAEFAaxBpIABBgAFqELIBCxQAIAAgARB4IABBQGsgAUFAaxB4CxgAIAAgARCVASAAQYABaiABQYABahCV\n AQsYACAAEKYBIABBgAFqIgAQpgEgACABEA8LGQAgABCpASAAQYABahCwASAAQYACahCpAQsZACAAEKwBIABBgAJqEKwBI\n ABBgARqEKwBCxkAIAAQqgEgAEGAAmoQqgEgAEGABGoQqgELFgAgABAvIAAgARCQASAAQYABahCpAQsWACAAQYABaiIAEK\n gBIAAQOiAAEKgBCxQAIAAQRCAAIAApAwAgAax8NwMACxQAIAAQRCAAIAApAwAgAax9NwMACxEAIAAgARBSIABBQGsgARB\n SCxEAIAAgARBIIABBQGsgARBICxQAIAAgARCQASAAQYABaiACEJABCxIAIAAgARAPIABBgAFqIAEQDwsUACAAIAEQoAEg\n AEGAAWogARCgAQsRACAAKAIEBEAgACgCABAJCwsSACAAIAEQayAAIAEoAjg2AjgLDwAgAEFAayIAEEEgABBECw0AIAAQT\n iAAQUBrEE4LDQAgABBEIABBQGsQRAsPACAAELIBIABBQGsQsgELEAAgABCrASAAQYABahCrAQsNACAAEBIgAEFAaxASCx\n AAIAAQqAEgAEGAAWoQqAELEAAgABCpASAAQYABahCpAQsPACAAQYABahA6IAAQrAELEAAgABCnASAAQYABahCnAQsOACA\n AEGkgAEFAaxCyAQsQACAAIAI2AgQgACABNgIACw0AIAAQdCAAQQE2AjgLDAAgABBBIAAgARB4CwwAIAAgARBrIAAQVgsN\n ACAAEDogACABEJUBCwsAIAAQOiAAEKwBCwwAQunQotvMouq7RgsDAAELAwABCwv+PZoCAEGCgMAACwcBAAAAAQI0AEG4g\n MAAC9sBuF8jku11BwFjT+D5WE+pA2dPnKtLeD0Akew9ffXy9AMD1g8fDSwgAK1vjPCZwa4A8DtNkAEAAADzStxtEor3AI\n uwH1tTsFYDgvLFYx+X7AAysL/NHtseAkehVLifHyMCQHo6ogw4sQGz4sMPAAAAAHNyYy9ibHMxMjM4MS9wYWlyLnJzqAA\n QABQAAAAHAQAACQAAAKgAEAAUAAAADAEAAA0AAACoABAAFAAAABEBAAANAAAAAAAAAAEAAAD///8Dv/+W/78AaQM7VYAd\n moCAAefMIPV1pkwBp+1zAEGogsAACyz+//7///8BAosAgILYBPYB4Y1oiW++kwLOdqvfPagdAMZpulHOdt8Dy1nGFwBB4\n ILAAAuRAZABEAATAAAA0AEAABgAAACQARAAEwAAANQBAAARAAAAkAEQABMAAADWAQAAHAAAAHNyYy9ibHMxMjM4MS9lY3\n AucnMAkAEQABMAAAAZBQAADQAAAJABEAATAAAAGwUAAAkAAACQARAAEwAAABwFAAARAAAAkAEQABMAAAAfBQAAHAAAAAA\n AAAABAAEAAAABAjQAQaCEwAALuSCQARAAEwAAAGcEAAARAAAAkAEQABMAAABsBAAADQAAAJABEAATAAAAbgQAABUAAACQ\n ARAAEwAAAHAEAAAgAAAAHUxYLQgo9ADXXz44aOPbAInJGoj9roEBomOjmrkPTgGY6rCCSW3JAoBOWs9QOu4AimlEAQAAA\n ADgKxeO6UjMAXSpOluMVsgAolXvNe/8FADngsIBPcnDA8EWIDvuPnUAusRiAAwgWgDRCCkuAQAAALgh6L1iEMUA3/4Vlz\n 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\n GZYzb76G2KA7ycH+3PFk8AK2qmngEAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAbxEQABIAAAB8AQAAFAAAAAA\n AAABhdHRlbXB0IHRvIGRpdmlkZSB3aXRoIG92ZXJmbG93c3JjL2JsczEyMzgxL2ZwLnJzAAAAbxEQABIAAAASAgAADQAA\n AG8REAASAAAAHgIAACYAAABvERAAEgAAAB4CAAAjAAAAbxEQABIAAAAkAgAAFwAAAG8REAASAAAAJAIAABQAAAAAAAAAq\n qr//////gHu//9UrP//AupBYg9rDyoBw5z9ShTOEwJLd2TXrEtDAu3pxpKm+V8Cox4RoAEAAABAEhAAFAAAABUBAAATAA\n AAQBIQABQAAAAeAQAAGAAAAEASEAAUAAAAJAEAABwAAABzcmMvYmxzMTIzODEvZWNwMi5ycwAAAAAEAEGQpcAAC7wGQBI\n QABQAAADmAgAACQAAAEASEAAUAAAA7gIAAA0AAABAEhAAFAAAAP4CAAAhAAAAuL0hwchWgAD1+24BqskAA7pwFz2uR7YA\n RNEK7ADpUwN65MZREMUtA0kBgkmkwiMALyuqJAAAAAB+KwRdBX2sAflVF+WERDwDNJME9ce9GwJp12rYgmRCA9BrWWVPJ\n 4gA6DRrH9hnnAAFtgI+AQAAAAEouAiGVJMBeKIo6w5zsgIjyRINFpWmAQq1nU73MqoCm/2tGjUu2gJxczJjhFufAHdSXc\n 4AAAAAvnlf8F8HqQJqaAc710nDAfOzmulytSoB0pm8jp0W+gEoPsuZi8IrAKw0qwwzzakDAkpsYAAAAACrqv/////+Ae7\n //1Ss//8C6kFiD2sPKgHDnP1KFM4TAkt3ZNesS0MC7enGkqb5XwKjHhGgAQAAAAgUEAALAAAAjwEAAA8AAAAIFBAACwAA\n AKcBAAATAAAACBQQAAsAAACqAQAADQAAAHNyYy9obWFjLnJzADQUEAAgAAAAVBQQABIAAAADAAAAAAAAAAEAAAAEAAAAa\n W5kZXggb3V0IG9mIGJvdW5kczogdGhlIGxlbiBpcyAgYnV0IHRoZSBpbmRleCBpcyAwMDAxMDIwMzA0MDUwNjA3MDgwOT\n EwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ\n 0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5\n ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OQAAQBUQABAAAABQFRAAIgAAAHJhbmdlIGVuZCBpb\n mRleCAgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIG\n EgYE5vbmVgIHZhbHVlALAVEAAcAAAA7gEAAB4AAABsaWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzAEGIrMAACwEBAEH\n IrMAACwEBAEGIrcAACwEBAEHIrcAACwEBAEGIrsAACwEBAEHIrsAACwEBAEGIr8AACwEBAEHIr8AACwEBAEGIsMAACwEB\n AEHIsMAACwEBAEGIscAACwEBAEHIscAACwEBAEGIssAACwEBAEHIssAACwEBAEGIs8AACwEBAEHIs8AACwEBAEGItMAAC\n wEBAEHItMAACwEBAEGItcAACwEBAEHItcAACwEBAEGItsAACwEBAEHItsAACwEBAEGIt8AACwEBAEHIt8AACwEBAEGIuM\n AACwEBAEHIuMAACwEBAEGIucAACwEBAEHIucAACwEBAEGIusAACwEBAEHIusAACwEBAEGIu8AACwEBAEHIu8AACwEBAEG\n IvMAACwEBAEHIvMAACwEBAEGIvcAACwEBAEHIvcAACwEBAEGIvsAACwEBAEHIvsAACwEBAEGIv8AACwEBAEHIv8AACwEB\n AEGIwMAACwEBAEHIwMAACwEBAEGIwcAACwEBAEHIwcAACwEBAEGIwsAACwEBAEHIwsAACwEBAEGIw8AACwEBAEHIw8AAC\n wEBAEGIxMAACwEBAEHIxMAACwEBAEGIxcAACwEBAEHIxcAACwEBAEGIxsAACwEBAEHIxsAACwEBAEGIx8AACwEBAEHIx8\n AACwEBAEGIyMAACwEBAEHIyMAACwEBAEGIycAACwEBAEHIycAACwEBAEGIysAACwEBAEHIysAACwEBAEGIy8AACwEBAEH\n Iy8AACwEBAEGIzMAACwEBAEHIzMAACwEBAEGIzcAACwEBAEHIzcAACwEBAEGIzsAACwEBAEHIzsAACwEBAEGIz8AACwEB\n AEHIz8AACwEBAEGI0MAACwEBAEHI0MAACwEBAEGI0cAACwEBAEHI0cAACwEBAEGI0sAACwEBAEHI0sAACwEBAEGI08AAC\n wEBAEHI08AACwEBAEGI1MAACwEBAEHI1MAACwEBAEGI1cAACwEBAEHI1cAACwEBAEGI1sAACwEBAEHI1sAACwEBAEGI18\n AACwEBAEHI18AACwEBAEGI2MAACwEBAEHI2MAACwEBAEGI2cAACwEBAEHI2cAACwEBAEGI2sAACwEBAEHI2sAACwEBAEG\n I28AACwEBAEHI28AACwEBAEGI3MAACwEBAEHI3MAACwEBAEGI3cAACwEBAEHI3cAACwEBAEGI3sAACwEBAEHI3sAACwEB\n AEGI38AACwEBAEHI38AACwEBAEGI4MAACwEBAEHI4MAACwEBAEGI4cAACwEBAEHI4cAACwEBAEGI4sAACwEBAEHI4sAAC\n wEBAEGI48AACwEBAEHI48AACwEBAEGI5MAACwEBAEHI5MAACwEBAEGI5cAACwEBAEHI5cAACwEBAEGI5sAACwEBAEHI5s\n AACwEBAEGI58AACwEBAEHI58AACwEBAEGI6MAACwEBAEHI6MAACwEBAEGI6cAACwEBAEHI6cAACwEBAEGI6sAACwEBAEH\n I6sAACwEBAEGI68AACwEBAEHI68AACwEBAEGI7MAACwEBAEHI7MAACwEBAEGI7cAACwEBAEHI7cAACwEBAEGI7sAACwEB\n AEHI7sAACwEBAEGI78AACwEBAEHI78AACwEBAEGI8MAACwEBAEHI8MAACwEBAEGI8cAACwEBAEHI8cAACwEBAEGI8sAAC\n wEBAEHI8sAACwEBAEGI88AACwEBAEHI88AACwEBAEGI9MAACwEBAEHI9MAACwEBAEGI9cAACwEBAEHI9cAACwEBAEGI9s\n AACwEBAEHI9sAACwEBAEGI98AACwEBAEHI98AACwEBAEGI+MAACwEBAEHI+MAACwEBAEGI+cAACwEBAEHI+cAACwEBAEG\n I+sAACwEBAEHI+sAACwEBAEGI+8AACwEBAEHI+8AACwEBAEGI/MAACwEBAEHI/MAACwEBAEGI/cAACwEBAEHI/cAACwEB\n AEGI/sAACwEBAEHI/sAACwEBAEGI/8AACwEBAEHI/8AACwEBAEGIgMEACwEBAEHIgMEACwEBAEGIgcEACwEBAEHIgcEAC\n wEBAEGIgsEACwEBAEHIgsEACwEBAEGIg8EACwEBAEHIg8EACwEBAEGIhMEACwEBAEHIhMEACwEBAEGIhcEACwEBAEHIhc\n EACwEBAEGIhsEACwEBAEHIhsEACwEBAEGIh8EACwEBAEHIh8EACwEBAEGIiMEACwEBAEHIiMEACwEBAEGIicEACwEBAEH\n IicEACwEBAEGIisEACwEBAEHIisEACwEBAEGIi8EACwEBAEHIi8EACwEBAEGIjMEACwEBAEHIjMEACwEBAEGIjcEACwEB\n AEHIjcEACwEBAEGIjsEACwEBAEHIjsEACwEBAEGIj8EACwEBAEHIj8EACwEBAEGIkMEACwEBAEHIkMEACwEBAEGIkcEAC\n wEBAEHIkcEACwEBAEGIksEACwEBAEHIksEACwEBAEGIk8EACwEBAEHIk8EACwEBAEGIlMEACwEBAEHIlMEACwEBAEGIlc\n EACwEBAEHIlcEACwEBAEGIlsEACwEBAEHIlsEACwEBAEGIl8EACwEBAEHIl8EACwEBAEGImMEACwEBAEHImMEACwEBAEG\n ImcEACwEBAEHImcEACwEBAEGImsEACwEBAEHImsEACwEBAEGIm8EACwEBAEHIm8EACwEBAEGInMEACwEBAEHInMEACwEB\n AEGIncEACwEBAEHIncEACwEBAEGInsEACwEBAEHInsEACwEBAEGIn8EACwEBAEHIn8EACwEBAEGIoMEACwEBAEHIoMEAC\n wEBAEGIocEACwEBAEHIocEACwEBAEGIosEACwEBAEHIosEACwEBAEGIo8EACwEBAEHIo8EACwEBAEGIpMEACwEBAEHIpM\n EACwEBAEGIpcEACwEBAEHIpcEACwEBAEGIpsEACwEBAEHIpsEACwEBAEGIp8EACwEBAEHIp8EACwEBAEGIqMEACwEBAEH\n IqMEACwEBAEGIqcEACwEBAEHIqcEACwEBAEGIqsEACwEBAEHIqsEACwEBAEGIq8EACwEBAEHIq8EACwEBAEGIrMEACwEB\n AEHIrMEACwEBAEGIrcEACwEBAEHIrcEACwEBAEGIrsEACwEBAEHIrsEACwEBAEGIr8EACwEBAEHIr8EACwEBAEGIsMEAC\n wEBAEHIsMEACwEBAEGIscEACwEBAEHIscEACwEBAEGIssEACwEBAEHIssEACwEBAEGIs8EACwEBAEHIs8EACwEBAEGItM\n EACwEBAEHItMEACwEBAEGItcEACwEBAEHItcEACwEBAHsJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2V\n kLWJ5AwVydXN0Yx0xLjQ5LjAgKGUxODg0YThlMyAyMDIwLTEyLTI5KQZ3YWxydXMGMC4xOC4wDHdhc20tYmluZGdlbhIw\n LjIuNzAgKGI2MzU1YzI3MCk=\n`.replace(/[^0-9a-zA-Z/+]/g, '');\nconst wasmBytes = base64Arraybuffer.decode(wasmBytesBase64);\n/**\n * @returns {number}\n */\nfunction bls_init() {\n let ret = wasm.bls_init();\n return ret;\n}\nexports.bls_init = bls_init;\nlet cachegetUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1);\n getUint8Memory0().set(arg, ptr / 1);\n return [ptr, arg.length];\n}\n/**\n * @param {Uint8Array} sig\n * @param {Uint8Array} m\n * @param {Uint8Array} w\n * @returns {number}\n */\nfunction bls_verify(sig, m, w) {\n const [ptr0, len0] = passArray8ToWasm0(sig, wasm.__wbindgen_malloc);\n const [ptr1, len1] = passArray8ToWasm0(m, wasm.__wbindgen_malloc);\n const [ptr2, len2] = passArray8ToWasm0(w, wasm.__wbindgen_malloc);\n const ret = wasm.bls_verify(ptr0, len0, ptr1, len1, ptr2, len2);\n return ret;\n}\nexports.bls_verify = bls_verify;\nasync function load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n }\n else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n }\n else {\n return instance;\n }\n }\n}\nasync function init() {\n const imports = {};\n const { instance, module } = await load(wasmBytes, imports);\n wasm = instance.exports;\n init.__wbindgen_wasm_module = module;\n return wasm;\n}\n/**\n * If `module_or_path` is {RequestInfo} or {URL}, makes a request and\n * for everything else, calls `WebAssembly.instantiate` directly.\n *\n * @param {InitInput | Promise} module_or_path\n *\n * @returns {Promise}\n */\nexports.default = init;\n//# sourceMappingURL=bls.js.map","import Pipe from 'buffer-pipe';\nimport { Buffer } from 'buffer/';\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param num number\n * @returns Buffer\n */\nexport function safeRead(pipe, num) {\n if (pipe.buffer.length < num) {\n throw new Error('unexpected end of buffer');\n }\n return pipe.read(num);\n}\n/**\n * Encode a positive number (or bigint) into a Buffer. The number will be floored to the\n * nearest integer.\n * @param value The number to encode.\n */\nexport function lebEncode(value) {\n if (typeof value === 'number') {\n value = BigInt(value);\n }\n if (value < BigInt(0)) {\n throw new Error('Cannot leb encode negative values.');\n }\n const pipe = new Pipe();\n while (true) {\n const i = Number(value & BigInt(0x7f));\n value /= BigInt(0x80);\n if (value === BigInt(0)) {\n pipe.write([i]);\n break;\n }\n else {\n pipe.write([i | 0x80]);\n }\n }\n return new Buffer(pipe.buffer);\n}\n/**\n * Decode a leb encoded buffer into a bigint. The number will always be positive (does not\n * support signed leb encoding).\n * @param pipe A Buffer containing the leb encoded bits.\n */\nexport function lebDecode(pipe) {\n let weight = BigInt(1);\n let value = BigInt(0);\n let byte;\n do {\n byte = safeRead(pipe, 1)[0];\n value += BigInt(byte & 0x7f).valueOf() * weight;\n weight *= BigInt(128);\n } while (byte >= 0x80);\n return value;\n}\n/**\n * Encode a number (or bigint) into a Buffer, with support for negative numbers. The number\n * will be floored to the nearest integer.\n * @param value The number to encode.\n */\nexport function slebEncode(value) {\n if (typeof value === 'number') {\n value = BigInt(value);\n }\n const isNeg = value < BigInt(0);\n if (isNeg) {\n value = -value - BigInt(1);\n }\n const pipe = new Pipe();\n while (true) {\n const i = getLowerBytes(value);\n value /= BigInt(0x80);\n // prettier-ignore\n if ((isNeg && value === BigInt(0) && (i & 0x40) !== 0)\n || (!isNeg && value === BigInt(0) && (i & 0x40) === 0)) {\n pipe.write([i]);\n break;\n }\n else {\n pipe.write([i | 0x80]);\n }\n }\n function getLowerBytes(num) {\n const bytes = num % BigInt(0x80);\n if (isNeg) {\n // We swap the bits here again, and remove 1 to do two's complement.\n return Number(BigInt(0x80) - bytes - BigInt(1));\n }\n else {\n return Number(bytes);\n }\n }\n return new Buffer(pipe.buffer);\n}\n/**\n * Decode a leb encoded buffer into a bigint. The number is decoded with support for negative\n * signed-leb encoding.\n * @param pipe A Buffer containing the signed leb encoded bits.\n */\nexport function slebDecode(pipe) {\n // Get the size of the buffer, then cut a buffer of that size.\n const pipeView = new Uint8Array(pipe.buffer);\n let len = 0;\n for (; len < pipeView.byteLength; len++) {\n if (pipeView[len] < 0x80) {\n // If it's a positive number, we reuse lebDecode.\n if ((pipeView[len] & 0x40) === 0) {\n return lebDecode(pipe);\n }\n break;\n }\n }\n const bytes = new Uint8Array(safeRead(pipe, len + 1));\n let value = BigInt(0);\n for (let i = bytes.byteLength - 1; i >= 0; i--) {\n value = value * BigInt(0x80) + BigInt(0x80 - (bytes[i] & 0x7f) - 1);\n }\n return -value - BigInt(1);\n}\n/**\n *\n * @param value bigint or number\n * @param byteLength number\n * @returns Buffer\n */\nexport function writeUIntLE(value, byteLength) {\n if (BigInt(value) < BigInt(0)) {\n throw new Error('Cannot write negative values.');\n }\n return writeIntLE(value, byteLength);\n}\n/**\n *\n * @param value bigint | number\n * @param byteLength number\n * @returns Buffer\n */\nexport function writeIntLE(value, byteLength) {\n value = BigInt(value);\n const pipe = new Pipe();\n let i = 0;\n let mul = BigInt(256);\n let sub = BigInt(0);\n let byte = Number(value % mul);\n pipe.write([byte]);\n while (++i < byteLength) {\n if (value < 0 && sub === BigInt(0) && byte !== 0) {\n sub = BigInt(1);\n }\n byte = Number((value / mul - sub) % BigInt(256));\n pipe.write([byte]);\n mul *= BigInt(256);\n }\n return new Buffer(pipe.buffer);\n}\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param byteLength number\n * @returns bigint\n */\nexport function readUIntLE(pipe, byteLength) {\n let val = BigInt(safeRead(pipe, 1)[0]);\n let mul = BigInt(1);\n let i = 0;\n while (++i < byteLength) {\n mul *= BigInt(256);\n const byte = BigInt(safeRead(pipe, 1)[0]);\n val = val + mul * byte;\n }\n return val;\n}\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param byteLength number\n * @returns bigint\n */\nexport function readIntLE(pipe, byteLength) {\n let val = readUIntLE(pipe, byteLength);\n const mul = BigInt(2) ** (BigInt(8) * BigInt(byteLength - 1) + BigInt(7));\n if (val >= mul) {\n val -= mul * BigInt(2);\n }\n return val;\n}\n//# sourceMappingURL=leb128.js.map","/* eslint-disable @typescript-eslint/no-empty-interface */\n/* eslint-disable jsdoc/require-jsdoc */\nimport { Buffer } from 'buffer/';\nimport { lebEncode } from './utils/leb128';\nexport function blobFromBuffer(b) {\n return b;\n}\nexport function blobFromUint8Array(arr) {\n return Buffer.from(arr);\n}\nexport function blobFromText(text) {\n return Buffer.from(text);\n}\nexport function blobFromUint32Array(arr) {\n return Buffer.from(arr);\n}\nexport function derBlobFromBlob(blob) {\n return blob;\n}\nexport function blobFromHex(hex) {\n return Buffer.from(hex, 'hex');\n}\nexport function blobToHex(blob) {\n return blob.toString('hex');\n}\nexport function blobToUint8Array(blob) {\n return new Uint8Array(blob.slice(0, blob.byteLength));\n}\n/**\n * Create a random Nonce, based on date and a random suffix.\n */\nexport function makeNonce() {\n return lebEncode(BigInt(+Date.now()) * BigInt(100000) + BigInt(Math.floor(Math.random() * 100000)));\n}\n//# sourceMappingURL=types.js.map","/**\n * Hashes a string to a number. Algorithm can be found here:\n * https://caml.inria.fr/pub/papers/garrigue-polymorphic_variants-ml98.pdf\n * @param s\n */\nfunction idlHash(s) {\n const utf8encoder = new TextEncoder();\n const array = utf8encoder.encode(s);\n let h = 0;\n for (const c of array) {\n h = (h * 223 + c) % 2 ** 32;\n }\n return h;\n}\n/**\n *\n * @param label string\n * @returns number representing hashed label\n */\nexport function idlLabelToId(label) {\n if (/^_\\d+_$/.test(label) || /^_0x[0-9a-fA-F]+_$/.test(label)) {\n const num = +label.slice(1, -1);\n if (Number.isSafeInteger(num) && num >= 0 && num < 2 ** 32) {\n return num;\n }\n }\n return idlHash(label);\n}\n//# sourceMappingURL=hash.js.map","// tslint:disable:max-classes-per-file\nimport Pipe from 'buffer-pipe';\nimport { Buffer } from 'buffer/';\nimport { Principal as PrincipalId } from '@dfinity/principal';\nimport { blobFromBuffer } from './types';\nimport { idlLabelToId } from './utils/hash';\nimport { lebDecode, lebEncode, safeRead, slebDecode, slebEncode } from './utils/leb128';\nimport { readIntLE, readUIntLE, writeIntLE, writeUIntLE } from './utils/leb128';\nconst magicNumber = 'DIDL';\nfunction zipWith(xs, ys, f) {\n return xs.map((x, i) => f(x, ys[i]));\n}\n/**\n * An IDL Type Table, which precedes the data in the stream.\n */\nclass TypeTable {\n constructor() {\n // List of types. Needs to be an array as the index needs to be stable.\n this._typs = [];\n this._idx = new Map();\n }\n has(obj) {\n return this._idx.has(obj.name);\n }\n add(type, buf) {\n const idx = this._typs.length;\n this._idx.set(type.name, idx);\n this._typs.push(buf);\n }\n merge(obj, knot) {\n const idx = this._idx.get(obj.name);\n const knotIdx = this._idx.get(knot);\n if (idx === undefined) {\n throw new Error('Missing type index for ' + obj);\n }\n if (knotIdx === undefined) {\n throw new Error('Missing type index for ' + knot);\n }\n this._typs[idx] = this._typs[knotIdx];\n // Delete the type.\n this._typs.splice(knotIdx, 1);\n this._idx.delete(knot);\n }\n encode() {\n const len = lebEncode(this._typs.length);\n const buf = Buffer.concat(this._typs);\n return Buffer.concat([len, buf]);\n }\n indexOf(typeName) {\n if (!this._idx.has(typeName)) {\n throw new Error('Missing type index for ' + typeName);\n }\n return slebEncode(this._idx.get(typeName) || 0);\n }\n}\nexport class Visitor {\n visitType(t, data) {\n throw new Error('Not implemented');\n }\n visitPrimitive(t, data) {\n return this.visitType(t, data);\n }\n visitEmpty(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitBool(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitNull(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitReserved(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitText(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitNumber(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitInt(t, data) {\n return this.visitNumber(t, data);\n }\n visitNat(t, data) {\n return this.visitNumber(t, data);\n }\n visitFloat(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitFixedInt(t, data) {\n return this.visitNumber(t, data);\n }\n visitFixedNat(t, data) {\n return this.visitNumber(t, data);\n }\n visitPrincipal(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitConstruct(t, data) {\n return this.visitType(t, data);\n }\n visitVec(t, ty, data) {\n return this.visitConstruct(t, data);\n }\n visitOpt(t, ty, data) {\n return this.visitConstruct(t, data);\n }\n visitRecord(t, fields, data) {\n return this.visitConstruct(t, data);\n }\n visitTuple(t, components, data) {\n const fields = components.map((ty, i) => [`_${i}_`, ty]);\n return this.visitRecord(t, fields, data);\n }\n visitVariant(t, fields, data) {\n return this.visitConstruct(t, data);\n }\n visitRec(t, ty, data) {\n return this.visitConstruct(ty, data);\n }\n visitFunc(t, data) {\n return this.visitConstruct(t, data);\n }\n visitService(t, data) {\n return this.visitConstruct(t, data);\n }\n}\n/**\n * Represents an IDL type.\n */\nexport class Type {\n /* Display type name */\n display() {\n return this.name;\n }\n valueToString(x) {\n return JSON.stringify(x);\n }\n /* Implement `T` in the IDL spec, only needed for non-primitive types */\n buildTypeTable(typeTable) {\n if (!typeTable.has(this)) {\n this._buildTypeTableImpl(typeTable);\n }\n }\n}\nexport class PrimitiveType extends Type {\n checkType(t) {\n if (this.name !== t.name) {\n throw new Error(`type mismatch: type on the wire ${t.name}, expect type ${this.name}`);\n }\n return t;\n }\n _buildTypeTableImpl(typeTable) {\n // No type table encoding for Primitive types.\n return;\n }\n}\nexport class ConstructType extends Type {\n checkType(t) {\n if (t instanceof RecClass) {\n const ty = t.getType();\n if (typeof ty === 'undefined') {\n throw new Error('type mismatch with uninitialized type');\n }\n return ty;\n }\n throw new Error(`type mismatch: type on the wire ${t.name}, expect type ${this.name}`);\n }\n encodeType(typeTable) {\n return typeTable.indexOf(this.name);\n }\n}\n/**\n * Represents an IDL Empty, a type which has no inhabitants.\n * Since no values exist for this type, it cannot be serialised or deserialised.\n * Result types like `Result` should always succeed.\n */\nexport class EmptyClass extends PrimitiveType {\n accept(v, d) {\n return v.visitEmpty(this, d);\n }\n covariant(x) {\n return false;\n }\n encodeValue() {\n throw new Error('Empty cannot appear as a function argument');\n }\n valueToString() {\n throw new Error('Empty cannot appear as a value');\n }\n encodeType() {\n return slebEncode(-17 /* Empty */);\n }\n decodeValue() {\n throw new Error('Empty cannot appear as an output');\n }\n get name() {\n return 'empty';\n }\n}\n/**\n * Represents an IDL Bool\n */\nexport class BoolClass extends PrimitiveType {\n accept(v, d) {\n return v.visitBool(this, d);\n }\n covariant(x) {\n return typeof x === 'boolean';\n }\n encodeValue(x) {\n const buf = Buffer.alloc(1);\n buf.writeInt8(x ? 1 : 0, 0);\n return buf;\n }\n encodeType() {\n return slebEncode(-2 /* Bool */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const x = safeRead(b, 1).toString('hex');\n if (x === '00') {\n return false;\n }\n else if (x === '01') {\n return true;\n }\n else {\n throw new Error('Boolean value out of range');\n }\n }\n get name() {\n return 'bool';\n }\n}\n/**\n * Represents an IDL Null\n */\nexport class NullClass extends PrimitiveType {\n accept(v, d) {\n return v.visitNull(this, d);\n }\n covariant(x) {\n return x === null;\n }\n encodeValue() {\n return Buffer.alloc(0);\n }\n encodeType() {\n return slebEncode(-1 /* Null */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return null;\n }\n get name() {\n return 'null';\n }\n}\n/**\n * Represents an IDL Reserved\n */\nexport class ReservedClass extends PrimitiveType {\n accept(v, d) {\n return v.visitReserved(this, d);\n }\n covariant(x) {\n return true;\n }\n encodeValue() {\n return Buffer.alloc(0);\n }\n encodeType() {\n return slebEncode(-16 /* Reserved */);\n }\n decodeValue(b, t) {\n if (t.name !== this.name) {\n t.decodeValue(b, t);\n }\n return null;\n }\n get name() {\n return 'reserved';\n }\n}\nfunction isValidUTF8(buf) {\n return Buffer.compare(new Buffer(buf.toString(), 'utf8'), buf) === 0;\n}\n/**\n * Represents an IDL Text\n */\nexport class TextClass extends PrimitiveType {\n accept(v, d) {\n return v.visitText(this, d);\n }\n covariant(x) {\n return typeof x === 'string';\n }\n encodeValue(x) {\n const buf = Buffer.from(x, 'utf8');\n const len = lebEncode(buf.length);\n return Buffer.concat([len, buf]);\n }\n encodeType() {\n return slebEncode(-15 /* Text */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const len = lebDecode(b);\n const buf = safeRead(b, Number(len));\n if (!isValidUTF8(buf)) {\n throw new Error('Not valid UTF8 text');\n }\n return buf.toString('utf8');\n }\n get name() {\n return 'text';\n }\n valueToString(x) {\n return '\"' + x + '\"';\n }\n}\n/**\n * Represents an IDL Int\n */\nexport class IntClass extends PrimitiveType {\n accept(v, d) {\n return v.visitInt(this, d);\n }\n covariant(x) {\n // We allow encoding of JavaScript plain numbers.\n // But we will always decode to bigint.\n return typeof x === 'bigint' || Number.isInteger(x);\n }\n encodeValue(x) {\n return slebEncode(x);\n }\n encodeType() {\n return slebEncode(-4 /* Int */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return slebDecode(b);\n }\n get name() {\n return 'int';\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL Nat\n */\nexport class NatClass extends PrimitiveType {\n accept(v, d) {\n return v.visitNat(this, d);\n }\n covariant(x) {\n // We allow encoding of JavaScript plain numbers.\n // But we will always decode to bigint.\n return (typeof x === 'bigint' && x >= BigInt(0)) || (Number.isInteger(x) && x >= 0);\n }\n encodeValue(x) {\n return lebEncode(x);\n }\n encodeType() {\n return slebEncode(-3 /* Nat */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return lebDecode(b);\n }\n get name() {\n return 'nat';\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL Float\n */\nexport class FloatClass extends PrimitiveType {\n constructor(_bits) {\n super();\n this._bits = _bits;\n if (_bits !== 32 && _bits !== 64) {\n throw new Error('not a valid float type');\n }\n }\n accept(v, d) {\n return v.visitFloat(this, d);\n }\n covariant(x) {\n return typeof x === 'number' || x instanceof Number;\n }\n encodeValue(x) {\n const buf = Buffer.allocUnsafe(this._bits / 8);\n if (this._bits === 32) {\n buf.writeFloatLE(x, 0);\n }\n else {\n buf.writeDoubleLE(x, 0);\n }\n return buf;\n }\n encodeType() {\n const opcode = this._bits === 32 ? -13 /* Float32 */ : -14 /* Float64 */;\n return slebEncode(opcode);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const x = safeRead(b, this._bits / 8);\n if (this._bits === 32) {\n return x.readFloatLE(0);\n }\n else {\n return x.readDoubleLE(0);\n }\n }\n get name() {\n return 'float' + this._bits;\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL fixed-width Int(n)\n */\nexport class FixedIntClass extends PrimitiveType {\n constructor(_bits) {\n super();\n this._bits = _bits;\n }\n accept(v, d) {\n return v.visitFixedInt(this, d);\n }\n covariant(x) {\n const min = BigInt(2) ** BigInt(this._bits - 1) * BigInt(-1);\n const max = BigInt(2) ** BigInt(this._bits - 1) - BigInt(1);\n if (typeof x === 'bigint') {\n return x >= min && x <= max;\n }\n else if (Number.isInteger(x)) {\n const v = BigInt(x);\n return v >= min && v <= max;\n }\n else {\n return false;\n }\n }\n encodeValue(x) {\n return writeIntLE(x, this._bits / 8);\n }\n encodeType() {\n const offset = Math.log2(this._bits) - 3;\n return slebEncode(-9 - offset);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const num = readIntLE(b, this._bits / 8);\n if (this._bits <= 32) {\n return Number(num);\n }\n else {\n return num;\n }\n }\n get name() {\n return `int${this._bits}`;\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL fixed-width Nat(n)\n */\nexport class FixedNatClass extends PrimitiveType {\n constructor(bits) {\n super();\n this.bits = bits;\n }\n accept(v, d) {\n return v.visitFixedNat(this, d);\n }\n covariant(x) {\n const max = BigInt(2) ** BigInt(this.bits);\n if (typeof x === 'bigint' && x >= BigInt(0)) {\n return x < max;\n }\n else if (Number.isInteger(x) && x >= 0) {\n const v = BigInt(x);\n return v < max;\n }\n else {\n return false;\n }\n }\n encodeValue(x) {\n return writeUIntLE(x, this.bits / 8);\n }\n encodeType() {\n const offset = Math.log2(this.bits) - 3;\n return slebEncode(-5 - offset);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const num = readUIntLE(b, this.bits / 8);\n if (this.bits <= 32) {\n return Number(num);\n }\n else {\n return num;\n }\n }\n get name() {\n return `nat${this.bits}`;\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL Array\n * @param {Type} t\n */\nexport class VecClass extends ConstructType {\n constructor(_type) {\n super();\n this._type = _type;\n // If true, this vector is really a blob and we can just use memcpy.\n this._blobOptimization = false;\n if (_type instanceof FixedNatClass && _type.bits === 8) {\n this._blobOptimization = true;\n }\n }\n accept(v, d) {\n return v.visitVec(this, this._type, d);\n }\n covariant(x) {\n return Array.isArray(x) && x.every(v => this._type.covariant(v));\n }\n encodeValue(x) {\n const len = lebEncode(x.length);\n if (this._blobOptimization) {\n return Buffer.concat([len, Buffer.from(x)]);\n }\n return Buffer.concat([len, ...x.map(d => this._type.encodeValue(d))]);\n }\n _buildTypeTableImpl(typeTable) {\n this._type.buildTypeTable(typeTable);\n const opCode = slebEncode(-19 /* Vector */);\n const buffer = this._type.encodeType(typeTable);\n typeTable.add(this, Buffer.concat([opCode, buffer]));\n }\n decodeValue(b, t) {\n const vec = this.checkType(t);\n if (!(vec instanceof VecClass)) {\n throw new Error('Not a vector type');\n }\n const len = Number(lebDecode(b));\n if (this._blobOptimization) {\n return [...new Uint8Array(b.read(len))];\n }\n const rets = [];\n for (let i = 0; i < len; i++) {\n rets.push(this._type.decodeValue(b, vec._type));\n }\n return rets;\n }\n get name() {\n return `vec ${this._type.name}`;\n }\n display() {\n return `vec ${this._type.display()}`;\n }\n valueToString(x) {\n const elements = x.map(e => this._type.valueToString(e));\n return 'vec {' + elements.join('; ') + '}';\n }\n}\n/**\n * Represents an IDL Option\n * @param {Type} t\n */\nexport class OptClass extends ConstructType {\n constructor(_type) {\n super();\n this._type = _type;\n }\n accept(v, d) {\n return v.visitOpt(this, this._type, d);\n }\n covariant(x) {\n return Array.isArray(x) && (x.length === 0 || (x.length === 1 && this._type.covariant(x[0])));\n }\n encodeValue(x) {\n if (x.length === 0) {\n return Buffer.from([0]);\n }\n else {\n return Buffer.concat([Buffer.from([1]), this._type.encodeValue(x[0])]);\n }\n }\n _buildTypeTableImpl(typeTable) {\n this._type.buildTypeTable(typeTable);\n const opCode = slebEncode(-18 /* Opt */);\n const buffer = this._type.encodeType(typeTable);\n typeTable.add(this, Buffer.concat([opCode, buffer]));\n }\n decodeValue(b, t) {\n const opt = this.checkType(t);\n if (!(opt instanceof OptClass)) {\n throw new Error('Not an option type');\n }\n const len = safeRead(b, 1).toString('hex');\n if (len === '00') {\n return [];\n }\n else if (len === '01') {\n return [this._type.decodeValue(b, opt._type)];\n }\n else {\n throw new Error('Not an option value');\n }\n }\n get name() {\n return `opt ${this._type.name}`;\n }\n display() {\n return `opt ${this._type.display()}`;\n }\n valueToString(x) {\n if (x.length === 0) {\n return 'null';\n }\n else {\n return `opt ${this._type.valueToString(x[0])}`;\n }\n }\n}\n/**\n * Represents an IDL Record\n * @param {Object} [fields] - mapping of function name to Type\n */\nexport class RecordClass extends ConstructType {\n constructor(fields = {}) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n accept(v, d) {\n return v.visitRecord(this, this._fields, d);\n }\n tryAsTuple() {\n const res = [];\n for (let i = 0; i < this._fields.length; i++) {\n const [key, type] = this._fields[i];\n if (key !== `_${i}_`) {\n return null;\n }\n res.push(type);\n }\n return res;\n }\n covariant(x) {\n return (typeof x === 'object' &&\n this._fields.every(([k, t]) => {\n // eslint-disable-next-line\n if (!x.hasOwnProperty(k)) {\n throw new Error(`Record is missing key \"${k}\".`);\n }\n return t.covariant(x[k]);\n }));\n }\n encodeValue(x) {\n const values = this._fields.map(([key]) => x[key]);\n const bufs = zipWith(this._fields, values, ([, c], d) => c.encodeValue(d));\n return Buffer.concat(bufs);\n }\n _buildTypeTableImpl(T) {\n this._fields.forEach(([_, value]) => value.buildTypeTable(T));\n const opCode = slebEncode(-20 /* Record */);\n const len = lebEncode(this._fields.length);\n const fields = this._fields.map(([key, value]) => Buffer.concat([lebEncode(idlLabelToId(key)), value.encodeType(T)]));\n T.add(this, Buffer.concat([opCode, len, Buffer.concat(fields)]));\n }\n decodeValue(b, t) {\n const record = this.checkType(t);\n if (!(record instanceof RecordClass)) {\n throw new Error('Not a record type');\n }\n const x = {};\n let idx = 0;\n for (const [hash, type] of record._fields) {\n if (idx >= this._fields.length || idlLabelToId(this._fields[idx][0]) !== idlLabelToId(hash)) {\n // skip field\n type.decodeValue(b, type);\n continue;\n }\n const [expectKey, expectType] = this._fields[idx];\n x[expectKey] = expectType.decodeValue(b, type);\n idx++;\n }\n if (idx < this._fields.length) {\n throw new Error('Cannot find field ' + this._fields[idx][0]);\n }\n return x;\n }\n get name() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.name);\n return `record {${fields.join('; ')}}`;\n }\n display() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.display());\n return `record {${fields.join('; ')}}`;\n }\n valueToString(x) {\n const values = this._fields.map(([key]) => x[key]);\n const fields = zipWith(this._fields, values, ([k, c], d) => k + '=' + c.valueToString(d));\n return `record {${fields.join('; ')}}`;\n }\n}\n/**\n * Represents Tuple, a syntactic sugar for Record.\n * @param {Type} components\n */\nexport class TupleClass extends RecordClass {\n constructor(_components) {\n const x = {};\n _components.forEach((e, i) => (x['_' + i + '_'] = e));\n super(x);\n this._components = _components;\n }\n accept(v, d) {\n return v.visitTuple(this, this._components, d);\n }\n covariant(x) {\n // `>=` because tuples can be covariant when encoded.\n return (Array.isArray(x) &&\n x.length >= this._fields.length &&\n this._components.every((t, i) => t.covariant(x[i])));\n }\n encodeValue(x) {\n const bufs = zipWith(this._components, x, (c, d) => c.encodeValue(d));\n return Buffer.concat(bufs);\n }\n decodeValue(b, t) {\n const tuple = this.checkType(t);\n if (!(tuple instanceof TupleClass)) {\n throw new Error('not a tuple type');\n }\n if (tuple._components.length < this._components.length) {\n throw new Error('tuple mismatch');\n }\n const res = [];\n for (const [i, wireType] of tuple._components.entries()) {\n if (i >= this._components.length) {\n // skip value\n wireType.decodeValue(b, wireType);\n }\n else {\n res.push(this._components[i].decodeValue(b, wireType));\n }\n }\n return res;\n }\n display() {\n const fields = this._components.map(value => value.display());\n return `record {${fields.join('; ')}}`;\n }\n valueToString(values) {\n const fields = zipWith(this._components, values, (c, d) => c.valueToString(d));\n return `record {${fields.join('; ')}}`;\n }\n}\n/**\n * Represents an IDL Variant\n * @param {Object} [fields] - mapping of function name to Type\n */\nexport class VariantClass extends ConstructType {\n constructor(fields = {}) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n accept(v, d) {\n return v.visitVariant(this, this._fields, d);\n }\n covariant(x) {\n return (typeof x === 'object' &&\n Object.entries(x).length === 1 &&\n this._fields.every(([k, v]) => {\n // eslint-disable-next-line\n return !x.hasOwnProperty(k) || v.covariant(x[k]);\n }));\n }\n encodeValue(x) {\n for (let i = 0; i < this._fields.length; i++) {\n const [name, type] = this._fields[i];\n // eslint-disable-next-line\n if (x.hasOwnProperty(name)) {\n const idx = lebEncode(i);\n const buf = type.encodeValue(x[name]);\n return Buffer.concat([idx, buf]);\n }\n }\n throw Error('Variant has no data: ' + x);\n }\n _buildTypeTableImpl(typeTable) {\n this._fields.forEach(([, type]) => {\n type.buildTypeTable(typeTable);\n });\n const opCode = slebEncode(-21 /* Variant */);\n const len = lebEncode(this._fields.length);\n const fields = this._fields.map(([key, value]) => Buffer.concat([lebEncode(idlLabelToId(key)), value.encodeType(typeTable)]));\n typeTable.add(this, Buffer.concat([opCode, len, ...fields]));\n }\n decodeValue(b, t) {\n const variant = this.checkType(t);\n if (!(variant instanceof VariantClass)) {\n throw new Error('Not a variant type');\n }\n const idx = Number(lebDecode(b));\n if (idx >= variant._fields.length) {\n throw Error('Invalid variant index: ' + idx);\n }\n const [wireHash, wireType] = variant._fields[idx];\n for (const [key, expectType] of this._fields) {\n if (idlLabelToId(wireHash) === idlLabelToId(key)) {\n const value = expectType.decodeValue(b, wireType);\n return { [key]: value };\n }\n }\n throw new Error('Cannot find field hash ' + wireHash);\n }\n get name() {\n const fields = this._fields.map(([key, type]) => key + ':' + type.name);\n return `variant {${fields.join('; ')}}`;\n }\n display() {\n const fields = this._fields.map(([key, type]) => key + (type.name === 'null' ? '' : `:${type.display()}`));\n return `variant {${fields.join('; ')}}`;\n }\n valueToString(x) {\n for (const [name, type] of this._fields) {\n // eslint-disable-next-line\n if (x.hasOwnProperty(name)) {\n const value = type.valueToString(x[name]);\n if (value === 'null') {\n return `variant {${name}}`;\n }\n else {\n return `variant {${name}=${value}}`;\n }\n }\n }\n throw new Error('Variant has no data: ' + x);\n }\n}\n/**\n * Represents a reference to an IDL type, used for defining recursive data\n * types.\n */\nexport class RecClass extends ConstructType {\n constructor() {\n super(...arguments);\n this._id = RecClass._counter++;\n this._type = undefined;\n }\n accept(v, d) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return v.visitRec(this, this._type, d);\n }\n fill(t) {\n this._type = t;\n }\n getType() {\n return this._type;\n }\n covariant(x) {\n return this._type ? this._type.covariant(x) : false;\n }\n encodeValue(x) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.encodeValue(x);\n }\n _buildTypeTableImpl(typeTable) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n typeTable.add(this, Buffer.alloc(0));\n this._type.buildTypeTable(typeTable);\n typeTable.merge(this, this._type.name);\n }\n decodeValue(b, t) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.decodeValue(b, t);\n }\n get name() {\n return `rec_${this._id}`;\n }\n display() {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return `μ${this.name}.${this._type.name}`;\n }\n valueToString(x) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.valueToString(x);\n }\n}\nRecClass._counter = 0;\nfunction decodePrincipalId(b) {\n const x = safeRead(b, 1).toString('hex');\n if (x !== '01') {\n throw new Error('Cannot decode principal');\n }\n const len = Number(lebDecode(b));\n const hex = safeRead(b, len).toString('hex').toUpperCase();\n return PrincipalId.fromHex(hex);\n}\n/**\n * Represents an IDL principal reference\n */\nexport class PrincipalClass extends PrimitiveType {\n accept(v, d) {\n return v.visitPrincipal(this, d);\n }\n covariant(x) {\n return x && x._isPrincipal;\n }\n encodeValue(x) {\n const hex = x.toHex();\n const buf = Buffer.from(hex, 'hex');\n const len = lebEncode(buf.length);\n return Buffer.concat([Buffer.from([1]), len, buf]);\n }\n encodeType() {\n return slebEncode(-24 /* Principal */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return decodePrincipalId(b);\n }\n get name() {\n return 'principal';\n }\n valueToString(x) {\n return `${this.name} \"${x.toText()}\"`;\n }\n}\n/**\n * Represents an IDL function reference.\n * @param argTypes Argument types.\n * @param retTypes Return types.\n * @param annotations Function annotations.\n */\nexport class FuncClass extends ConstructType {\n constructor(argTypes, retTypes, annotations = []) {\n super();\n this.argTypes = argTypes;\n this.retTypes = retTypes;\n this.annotations = annotations;\n }\n static argsToString(types, v) {\n if (types.length !== v.length) {\n throw new Error('arity mismatch');\n }\n return '(' + types.map((t, i) => t.valueToString(v[i])).join(', ') + ')';\n }\n accept(v, d) {\n return v.visitFunc(this, d);\n }\n covariant(x) {\n return (Array.isArray(x) && x.length === 2 && x[0] && x[0]._isPrincipal && typeof x[1] === 'string');\n }\n encodeValue(x) {\n const hex = x[0].toHex();\n const buf = Buffer.from(hex, 'hex');\n const len = lebEncode(buf.length);\n const canister = Buffer.concat([Buffer.from([1]), len, buf]);\n const method = Buffer.from(x[1], 'utf8');\n const methodLen = lebEncode(method.length);\n return Buffer.concat([Buffer.from([1]), canister, methodLen, method]);\n }\n _buildTypeTableImpl(T) {\n this.argTypes.forEach(arg => arg.buildTypeTable(T));\n this.retTypes.forEach(arg => arg.buildTypeTable(T));\n const opCode = slebEncode(-22 /* Func */);\n const argLen = lebEncode(this.argTypes.length);\n const args = Buffer.concat(this.argTypes.map(arg => arg.encodeType(T)));\n const retLen = lebEncode(this.retTypes.length);\n const rets = Buffer.concat(this.retTypes.map(arg => arg.encodeType(T)));\n const annLen = lebEncode(this.annotations.length);\n const anns = Buffer.concat(this.annotations.map(a => this.encodeAnnotation(a)));\n T.add(this, Buffer.concat([opCode, argLen, args, retLen, rets, annLen, anns]));\n }\n decodeValue(b) {\n const x = safeRead(b, 1).toString('hex');\n if (x !== '01') {\n throw new Error('Cannot decode function reference');\n }\n const canister = decodePrincipalId(b);\n const mLen = Number(lebDecode(b));\n const buf = safeRead(b, mLen);\n if (!isValidUTF8(buf)) {\n throw new Error('Not valid UTF8 method name');\n }\n const method = buf.toString('utf8');\n return [canister, method];\n }\n get name() {\n const args = this.argTypes.map(arg => arg.name).join(', ');\n const rets = this.retTypes.map(arg => arg.name).join(', ');\n const annon = ' ' + this.annotations.join(' ');\n return `(${args}) -> (${rets})${annon}`;\n }\n valueToString([principal, str]) {\n return `func \"${principal.toText()}\".${str}`;\n }\n display() {\n const args = this.argTypes.map(arg => arg.display()).join(', ');\n const rets = this.retTypes.map(arg => arg.display()).join(', ');\n const annon = ' ' + this.annotations.join(' ');\n return `(${args}) → (${rets})${annon}`;\n }\n encodeAnnotation(ann) {\n if (ann === 'query') {\n return Buffer.from([1]);\n }\n else if (ann === 'oneway') {\n return Buffer.from([2]);\n }\n else {\n throw new Error('Illeagal function annotation');\n }\n }\n}\nexport class ServiceClass extends ConstructType {\n constructor(fields) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n accept(v, d) {\n return v.visitService(this, d);\n }\n covariant(x) {\n return x && x._isPrincipal;\n }\n encodeValue(x) {\n const hex = x.toHex();\n const buf = Buffer.from(hex, 'hex');\n const len = lebEncode(buf.length);\n return Buffer.concat([Buffer.from([1]), len, buf]);\n }\n _buildTypeTableImpl(T) {\n this._fields.forEach(([_, func]) => func.buildTypeTable(T));\n const opCode = slebEncode(-23 /* Service */);\n const len = lebEncode(this._fields.length);\n const meths = this._fields.map(([label, func]) => {\n const labelBuf = Buffer.from(label, 'utf8');\n const labelLen = lebEncode(labelBuf.length);\n return Buffer.concat([labelLen, labelBuf, func.encodeType(T)]);\n });\n T.add(this, Buffer.concat([opCode, len, Buffer.concat(meths)]));\n }\n decodeValue(b) {\n return decodePrincipalId(b);\n }\n get name() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.name);\n return `service {${fields.join('; ')}}`;\n }\n valueToString(x) {\n return `service \"${x.toText()}\"`;\n }\n}\n/**\n *\n * @param x\n * @returns {string}\n */\nfunction toReadableString(x) {\n if (typeof x === 'bigint') {\n return `BigInt(${x})`;\n }\n else {\n return JSON.stringify(x);\n }\n}\n/**\n * Encode a array of values\n * @returns {Buffer} serialised value\n */\nexport function encode(argTypes, args) {\n if (args.length < argTypes.length) {\n throw Error('Wrong number of message arguments');\n }\n const typeTable = new TypeTable();\n argTypes.forEach(t => t.buildTypeTable(typeTable));\n const magic = Buffer.from(magicNumber, 'utf8');\n const table = typeTable.encode();\n const len = lebEncode(args.length);\n const typs = Buffer.concat(argTypes.map(t => t.encodeType(typeTable)));\n const vals = Buffer.concat(zipWith(argTypes, args, (t, x) => {\n if (!t.covariant(x)) {\n throw new Error(`Invalid ${t.display()} argument: ${toReadableString(x)}`);\n }\n return t.encodeValue(x);\n }));\n return blobFromBuffer(Buffer.concat([magic, table, len, typs, vals]));\n}\n/**\n * Decode a binary value\n * @param retTypes - Types expected in the buffer.\n * @param bytes - hex-encoded string, or buffer.\n * @returns Value deserialised to JS type\n */\nexport function decode(retTypes, bytes) {\n const b = new Pipe(bytes);\n if (bytes.byteLength < magicNumber.length) {\n throw new Error('Message length smaller than magic number');\n }\n const magic = safeRead(b, magicNumber.length).toString();\n if (magic !== magicNumber) {\n throw new Error('Wrong magic number: ' + magic);\n }\n function readTypeTable(pipe) {\n const typeTable = [];\n const len = Number(lebDecode(pipe));\n for (let i = 0; i < len; i++) {\n const ty = Number(slebDecode(pipe));\n switch (ty) {\n case -18 /* Opt */:\n case -19 /* Vector */: {\n const t = Number(slebDecode(pipe));\n typeTable.push([ty, t]);\n break;\n }\n case -20 /* Record */:\n case -21 /* Variant */: {\n const fields = [];\n let objectLength = Number(lebDecode(pipe));\n let prevHash;\n while (objectLength--) {\n const hash = Number(lebDecode(pipe));\n if (hash >= Math.pow(2, 32)) {\n throw new Error('field id out of 32-bit range');\n }\n if (typeof prevHash === 'number' && prevHash >= hash) {\n throw new Error('field id collision or not sorted');\n }\n prevHash = hash;\n const t = Number(slebDecode(pipe));\n fields.push([hash, t]);\n }\n typeTable.push([ty, fields]);\n break;\n }\n case -22 /* Func */: {\n for (let k = 0; k < 2; k++) {\n let funcLength = Number(lebDecode(pipe));\n while (funcLength--) {\n slebDecode(pipe);\n }\n }\n const annLen = Number(lebDecode(pipe));\n safeRead(pipe, annLen);\n typeTable.push([ty, undefined]);\n break;\n }\n case -23 /* Service */: {\n let servLength = Number(lebDecode(pipe));\n while (servLength--) {\n const l = Number(lebDecode(pipe));\n safeRead(pipe, l);\n slebDecode(pipe);\n }\n typeTable.push([ty, undefined]);\n break;\n }\n default:\n throw new Error('Illegal op_code: ' + ty);\n }\n }\n const rawList = [];\n const length = Number(lebDecode(pipe));\n for (let i = 0; i < length; i++) {\n rawList.push(Number(slebDecode(pipe)));\n }\n return [typeTable, rawList];\n }\n const [rawTable, rawTypes] = readTypeTable(b);\n if (rawTypes.length < retTypes.length) {\n throw new Error('Wrong number of return values');\n }\n const table = rawTable.map(_ => Rec());\n function getType(t) {\n if (t < -24) {\n throw new Error('future value not supported');\n }\n if (t < 0) {\n switch (t) {\n case -1:\n return Null;\n case -2:\n return Bool;\n case -3:\n return Nat;\n case -4:\n return Int;\n case -5:\n return Nat8;\n case -6:\n return Nat16;\n case -7:\n return Nat32;\n case -8:\n return Nat64;\n case -9:\n return Int8;\n case -10:\n return Int16;\n case -11:\n return Int32;\n case -12:\n return Int64;\n case -13:\n return Float32;\n case -14:\n return Float64;\n case -15:\n return Text;\n case -16:\n return Reserved;\n case -17:\n return Empty;\n case -24:\n return Principal;\n default:\n throw new Error('Illegal op_code: ' + t);\n }\n }\n if (t >= rawTable.length) {\n throw new Error('type index out of range');\n }\n return table[t];\n }\n function buildType(entry) {\n switch (entry[0]) {\n case -19 /* Vector */: {\n const ty = getType(entry[1]);\n return Vec(ty);\n }\n case -18 /* Opt */: {\n const ty = getType(entry[1]);\n return Opt(ty);\n }\n case -20 /* Record */: {\n const fields = {};\n for (const [hash, ty] of entry[1]) {\n const name = `_${hash}_`;\n fields[name] = getType(ty);\n }\n const record = Record(fields);\n const tuple = record.tryAsTuple();\n if (Array.isArray(tuple)) {\n return Tuple(...tuple);\n }\n else {\n return record;\n }\n }\n case -21 /* Variant */: {\n const fields = {};\n for (const [hash, ty] of entry[1]) {\n const name = `_${hash}_`;\n fields[name] = getType(ty);\n }\n return Variant(fields);\n }\n case -22 /* Func */: {\n return Func([], [], []);\n }\n case -23 /* Service */: {\n return Service({});\n }\n default:\n throw new Error('Illegal op_code: ' + entry[0]);\n }\n }\n rawTable.forEach((entry, i) => {\n const t = buildType(entry);\n table[i].fill(t);\n });\n const types = rawTypes.map(t => getType(t));\n const output = retTypes.map((t, i) => {\n return t.decodeValue(b, types[i]);\n });\n // skip unused values\n for (let ind = retTypes.length; ind < types.length; ind++) {\n types[ind].decodeValue(b, types[ind]);\n }\n if (b.buffer.length > 0) {\n throw new Error('decode: Left-over bytes');\n }\n return output;\n}\n// Export Types instances.\nexport const Empty = new EmptyClass();\nexport const Reserved = new ReservedClass();\nexport const Bool = new BoolClass();\nexport const Null = new NullClass();\nexport const Text = new TextClass();\nexport const Int = new IntClass();\nexport const Nat = new NatClass();\nexport const Float32 = new FloatClass(32);\nexport const Float64 = new FloatClass(64);\nexport const Int8 = new FixedIntClass(8);\nexport const Int16 = new FixedIntClass(16);\nexport const Int32 = new FixedIntClass(32);\nexport const Int64 = new FixedIntClass(64);\nexport const Nat8 = new FixedNatClass(8);\nexport const Nat16 = new FixedNatClass(16);\nexport const Nat32 = new FixedNatClass(32);\nexport const Nat64 = new FixedNatClass(64);\nexport const Principal = new PrincipalClass();\n/**\n *\n * @param types array of any types\n * @returns TupleClass from those types\n */\nexport function Tuple(...types) {\n return new TupleClass(types);\n}\n/**\n *\n * @param t IDL Type\n * @returns VecClass from that type\n */\nexport function Vec(t) {\n return new VecClass(t);\n}\n/**\n *\n * @param t IDL Type\n * @returns OptClass of Type\n */\nexport function Opt(t) {\n return new OptClass(t);\n}\n/**\n *\n * @param t Record of string and IDL Type\n * @returns RecordClass of string and Type\n */\nexport function Record(t) {\n return new RecordClass(t);\n}\n/**\n *\n * @param fields Record of string and IDL Type\n * @returns VariantClass\n */\nexport function Variant(fields) {\n return new VariantClass(fields);\n}\n/**\n *\n * @returns new RecClass\n */\nexport function Rec() {\n return new RecClass();\n}\n/**\n *\n * @param args array of IDL Types\n * @param ret array of IDL Types\n * @param annotations array of strings, [] by default\n * @returns new FuncClass\n */\nexport function Func(args, ret, annotations = []) {\n return new FuncClass(args, ret, annotations);\n}\n/**\n *\n * @param t Record of string and FuncClass\n * @returns ServiceClass\n */\nexport function Service(t) {\n return new ServiceClass(t);\n}\n//# sourceMappingURL=idl.js.map","export class InputBox {\n constructor(idl, ui) {\n this.idl = idl;\n this.ui = ui;\n this.label = null;\n this.value = undefined;\n const status = document.createElement('span');\n status.className = 'status';\n this.status = status;\n if (ui.input) {\n ui.input.addEventListener('blur', () => {\n if (ui.input.value === '') {\n return;\n }\n this.parse();\n });\n ui.input.addEventListener('input', () => {\n status.style.display = 'none';\n ui.input.classList.remove('reject');\n });\n }\n }\n isRejected() {\n return this.value === undefined;\n }\n parse(config = {}) {\n if (this.ui.form) {\n const value = this.ui.form.parse(config);\n this.value = value;\n return value;\n }\n if (this.ui.input) {\n const input = this.ui.input;\n try {\n const value = this.ui.parse(this.idl, config, input.value);\n if (!this.idl.covariant(value)) {\n throw new Error(`${input.value} is not of type ${this.idl.display()}`);\n }\n this.status.style.display = 'none';\n this.value = value;\n return value;\n }\n catch (err) {\n input.classList.add('reject');\n this.status.style.display = 'block';\n this.status.innerHTML = 'InputError: ' + err.message;\n this.value = undefined;\n return undefined;\n }\n }\n return null;\n }\n render(dom) {\n const container = document.createElement('span');\n if (this.label) {\n const label = document.createElement('label');\n label.innerText = this.label;\n container.appendChild(label);\n }\n if (this.ui.input) {\n container.appendChild(this.ui.input);\n container.appendChild(this.status);\n }\n if (this.ui.form) {\n this.ui.form.render(container);\n }\n dom.appendChild(container);\n }\n}\nexport class InputForm {\n constructor(ui) {\n this.ui = ui;\n this.form = [];\n }\n renderForm(dom) {\n if (this.ui.container) {\n this.form.forEach(e => e.render(this.ui.container));\n dom.appendChild(this.ui.container);\n }\n else {\n this.form.forEach(e => e.render(dom));\n }\n }\n render(dom) {\n if (this.ui.open && this.ui.event) {\n dom.appendChild(this.ui.open);\n const form = this;\n // eslint-disable-next-line\n form.ui.open.addEventListener(form.ui.event, () => {\n // Remove old form\n if (form.ui.container) {\n form.ui.container.innerHTML = '';\n }\n else {\n const oldContainer = form.ui.open.nextElementSibling;\n if (oldContainer) {\n oldContainer.parentNode.removeChild(oldContainer);\n }\n }\n // Render form\n form.generateForm();\n form.renderForm(dom);\n });\n }\n else {\n this.generateForm();\n this.renderForm(dom);\n }\n }\n}\nexport class RecordForm extends InputForm {\n constructor(fields, ui) {\n super(ui);\n this.fields = fields;\n this.ui = ui;\n }\n generateForm() {\n this.form = this.fields.map(([key, type]) => {\n const input = this.ui.render(type);\n // eslint-disable-next-line\n if (this.ui.labelMap && this.ui.labelMap.hasOwnProperty(key)) {\n input.label = this.ui.labelMap[key] + ' ';\n }\n else {\n input.label = key + ' ';\n }\n return input;\n });\n }\n parse(config) {\n const v = {};\n this.fields.forEach(([key, _], i) => {\n const value = this.form[i].parse(config);\n v[key] = value;\n });\n if (this.form.some(input => input.isRejected())) {\n return undefined;\n }\n return v;\n }\n}\nexport class TupleForm extends InputForm {\n constructor(components, ui) {\n super(ui);\n this.components = components;\n this.ui = ui;\n }\n generateForm() {\n this.form = this.components.map(type => {\n const input = this.ui.render(type);\n return input;\n });\n }\n parse(config) {\n const v = [];\n this.components.forEach((_, i) => {\n const value = this.form[i].parse(config);\n v.push(value);\n });\n if (this.form.some(input => input.isRejected())) {\n return undefined;\n }\n return v;\n }\n}\nexport class VariantForm extends InputForm {\n constructor(fields, ui) {\n super(ui);\n this.fields = fields;\n this.ui = ui;\n }\n generateForm() {\n const index = this.ui.open.selectedIndex;\n const [_, type] = this.fields[index];\n const variant = this.ui.render(type);\n this.form = [variant];\n }\n parse(config) {\n const select = this.ui.open;\n const selected = select.options[select.selectedIndex].value;\n const value = this.form[0].parse(config);\n if (value === undefined) {\n return undefined;\n }\n const v = {};\n v[selected] = value;\n return v;\n }\n}\nexport class OptionForm extends InputForm {\n constructor(ty, ui) {\n super(ui);\n this.ty = ty;\n this.ui = ui;\n }\n generateForm() {\n if (this.ui.open.checked) {\n const opt = this.ui.render(this.ty);\n this.form = [opt];\n }\n else {\n this.form = [];\n }\n }\n parse(config) {\n if (this.form.length === 0) {\n return [];\n }\n else {\n const value = this.form[0].parse(config);\n if (value === undefined) {\n return undefined;\n }\n return [value];\n }\n }\n}\nexport class VecForm extends InputForm {\n constructor(ty, ui) {\n super(ui);\n this.ty = ty;\n this.ui = ui;\n }\n generateForm() {\n const len = +this.ui.open.value;\n this.form = [];\n for (let i = 0; i < len; i++) {\n const t = this.ui.render(this.ty);\n this.form.push(t);\n }\n }\n parse(config) {\n const value = this.form.map(input => {\n return input.parse(config);\n });\n if (this.form.some(input => input.isRejected())) {\n return undefined;\n }\n return value;\n }\n}\n//# sourceMappingURL=candid-core.js.map","import * as IDL from './idl';\nimport { Principal } from '@dfinity/principal';\nimport * as UI from './candid-core';\nconst InputConfig = { parse: parsePrimitive };\nconst FormConfig = { render: renderInput };\nexport const inputBox = (t, config) => {\n return new UI.InputBox(t, Object.assign(Object.assign({}, InputConfig), config));\n};\nexport const recordForm = (fields, config) => {\n return new UI.RecordForm(fields, Object.assign(Object.assign({}, FormConfig), config));\n};\nexport const tupleForm = (components, config) => {\n return new UI.TupleForm(components, Object.assign(Object.assign({}, FormConfig), config));\n};\nexport const variantForm = (fields, config) => {\n return new UI.VariantForm(fields, Object.assign(Object.assign({}, FormConfig), config));\n};\nexport const optForm = (ty, config) => {\n return new UI.OptionForm(ty, Object.assign(Object.assign({}, FormConfig), config));\n};\nexport const vecForm = (ty, config) => {\n return new UI.VecForm(ty, Object.assign(Object.assign({}, FormConfig), config));\n};\nexport class Render extends IDL.Visitor {\n visitType(t, d) {\n const input = document.createElement('input');\n input.classList.add('argument');\n input.placeholder = t.display();\n return inputBox(t, { input });\n }\n visitNull(t, d) {\n return inputBox(t, {});\n }\n visitRecord(t, fields, d) {\n let config = {};\n if (fields.length > 1) {\n const container = document.createElement('div');\n container.classList.add('popup-form');\n config = { container };\n }\n const form = recordForm(fields, config);\n return inputBox(t, { form });\n }\n visitTuple(t, components, d) {\n let config = {};\n if (components.length > 1) {\n const container = document.createElement('div');\n container.classList.add('popup-form');\n config = { container };\n }\n const form = tupleForm(components, config);\n return inputBox(t, { form });\n }\n visitVariant(t, fields, d) {\n const select = document.createElement('select');\n for (const [key, type] of fields) {\n const option = new Option(key);\n select.add(option);\n }\n select.selectedIndex = -1;\n select.classList.add('open');\n const config = { open: select, event: 'change' };\n const form = variantForm(fields, config);\n return inputBox(t, { form });\n }\n visitOpt(t, ty, d) {\n const checkbox = document.createElement('input');\n checkbox.type = 'checkbox';\n checkbox.classList.add('open');\n const form = optForm(ty, { open: checkbox, event: 'change' });\n return inputBox(t, { form });\n }\n visitVec(t, ty, d) {\n const len = document.createElement('input');\n len.type = 'number';\n len.min = '0';\n len.max = '100';\n len.style.width = '8rem';\n len.placeholder = 'len';\n len.classList.add('open');\n const container = document.createElement('div');\n container.classList.add('popup-form');\n const form = vecForm(ty, { open: len, event: 'change', container });\n return inputBox(t, { form });\n }\n visitRec(t, ty, d) {\n return renderInput(ty);\n }\n}\nclass Parse extends IDL.Visitor {\n visitNull(t, v) {\n return null;\n }\n visitBool(t, v) {\n if (v === 'true') {\n return true;\n }\n if (v === 'false') {\n return false;\n }\n throw new Error(`Cannot parse ${v} as boolean`);\n }\n visitText(t, v) {\n return v;\n }\n visitFloat(t, v) {\n return parseFloat(v);\n }\n visitNumber(t, v) {\n return BigInt(v);\n }\n visitPrincipal(t, v) {\n return Principal.fromText(v);\n }\n visitService(t, v) {\n return Principal.fromText(v);\n }\n visitFunc(t, v) {\n const x = v.split('.', 2);\n return [Principal.fromText(x[0]), x[1]];\n }\n}\nclass Random extends IDL.Visitor {\n visitNull(t, v) {\n return null;\n }\n visitBool(t, v) {\n return Math.random() < 0.5;\n }\n visitText(t, v) {\n return Math.random().toString(36).substring(6);\n }\n visitFloat(t, v) {\n return Math.random();\n }\n visitInt(t, v) {\n return BigInt(this.generateNumber(true));\n }\n visitNat(t, v) {\n return BigInt(this.generateNumber(false));\n }\n visitFixedInt(t, v) {\n return BigInt(this.generateNumber(true));\n }\n visitFixedNat(t, v) {\n return BigInt(this.generateNumber(false));\n }\n generateNumber(signed) {\n const num = Math.floor(Math.random() * 100);\n if (signed && Math.random() < 0.5) {\n return -num;\n }\n else {\n return num;\n }\n }\n}\nfunction parsePrimitive(t, config, d) {\n if (config.random && d === '') {\n return t.accept(new Random(), d);\n }\n else {\n return t.accept(new Parse(), d);\n }\n}\n/**\n *\n * @param t an IDL type\n * @returns an input for that type\n */\nexport function renderInput(t) {\n return t.accept(new Render(), null);\n}\n/**\n *\n * @param t an IDL Type\n * @param input an InputBox\n * @param value any\n * @returns rendering that value to the provided input\n */\nexport function renderValue(t, input, value) {\n return t.accept(new RenderValue(), { input, value });\n}\nclass RenderValue extends IDL.Visitor {\n visitType(t, d) {\n d.input.ui.input.value = t.valueToString(d.value);\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n visitNull(t, d) { }\n visitText(t, d) {\n d.input.ui.input.value = d.value;\n }\n visitRec(t, ty, d) {\n renderValue(ty, d.input, d.value);\n }\n visitOpt(t, ty, d) {\n if (d.value.length === 0) {\n return;\n }\n else {\n const form = d.input.ui.form;\n const open = form.ui.open;\n open.checked = true;\n open.dispatchEvent(new Event(form.ui.event));\n renderValue(ty, form.form[0], d.value[0]);\n }\n }\n visitRecord(t, fields, d) {\n const form = d.input.ui.form;\n fields.forEach(([key, type], i) => {\n renderValue(type, form.form[i], d.value[key]);\n });\n }\n visitTuple(t, components, d) {\n const form = d.input.ui.form;\n components.forEach((type, i) => {\n renderValue(type, form.form[i], d.value[i]);\n });\n }\n visitVariant(t, fields, d) {\n const form = d.input.ui.form;\n const selected = Object.entries(d.value)[0];\n fields.forEach(([key, type], i) => {\n if (key === selected[0]) {\n const open = form.ui.open;\n open.selectedIndex = i;\n open.dispatchEvent(new Event(form.ui.event));\n renderValue(type, form.form[0], selected[1]);\n }\n });\n }\n visitVec(t, ty, d) {\n const form = d.input.ui.form;\n const len = d.value.length;\n const open = form.ui.open;\n open.value = len;\n open.dispatchEvent(new Event(form.ui.event));\n d.value.forEach((v, i) => {\n renderValue(ty, form.form[i], v);\n });\n }\n}\n//# sourceMappingURL=candid-ui.js.map","// tslint:disable:no-bitwise\nconst alphabet = 'abcdefghijklmnopqrstuvwxyz234567';\n// Build a lookup table for decoding.\nconst lookupTable = Object.create(null);\nfor (let i = 0; i < alphabet.length; i++) {\n lookupTable[alphabet[i]] = i;\n}\n// Add aliases for rfc4648.\nlookupTable['0'] = lookupTable.o;\nlookupTable['1'] = lookupTable.i;\n/**\n * @param input The input array to encode.\n * @returns A Base32 string encoding the input.\n */\nexport function encode(input) {\n // How many bits will we skip from the first byte.\n let skip = 0;\n // 5 high bits, carry from one byte to the next.\n let bits = 0;\n // The output string in base32.\n let output = '';\n function encodeByte(byte) {\n if (skip < 0) {\n // we have a carry from the previous byte\n bits |= byte >> -skip;\n }\n else {\n // no carry\n bits = (byte << skip) & 248;\n }\n if (skip > 3) {\n // Not enough data to produce a character, get us another one\n skip -= 8;\n return 1;\n }\n if (skip < 4) {\n // produce a character\n output += alphabet[bits >> 3];\n skip += 5;\n }\n return 0;\n }\n for (let i = 0; i < input.length;) {\n i += encodeByte(input[i]);\n }\n return output + (skip < 0 ? alphabet[bits >> 3] : '');\n}\n/**\n * @param input The base32 encoded string to decode.\n */\nexport function decode(input) {\n // how many bits we have from the previous character.\n let skip = 0;\n // current byte we're producing.\n let byte = 0;\n const output = new Uint8Array(((input.length * 4) / 3) | 0);\n let o = 0;\n function decodeChar(char) {\n // Consume a character from the stream, store\n // the output in this.output. As before, better\n // to use update().\n let val = lookupTable[char.toLowerCase()];\n if (val === undefined) {\n throw new Error(`Invalid character: ${JSON.stringify(char)}`);\n }\n // move to the high bits\n val <<= 3;\n byte |= val >>> skip;\n skip += 5;\n if (skip >= 8) {\n // We have enough bytes to produce an output\n output[o++] = byte;\n skip -= 8;\n if (skip > 0) {\n byte = (val << (5 - skip)) & 255;\n }\n else {\n byte = 0;\n }\n }\n }\n for (const c of input) {\n decodeChar(c);\n }\n return output.slice(0, o);\n}\n//# sourceMappingURL=base32.js.map","// tslint:disable:no-bitwise\n// This file is translated to JavaScript from\n// https://lxp32.github.io/docs/a-simple-example-crc32-calculation/\nconst lookUpTable = new Uint32Array([\n 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,\n 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,\n 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,\n 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,\n 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,\n 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,\n 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,\n 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,\n 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,\n 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,\n 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,\n 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,\n 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,\n 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,\n 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,\n 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,\n 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,\n 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,\n 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,\n 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,\n 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,\n 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,\n 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,\n 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,\n 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,\n 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,\n 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,\n 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,\n 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,\n 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,\n]);\n/**\n * Calculate the CRC32 of an ArrayBufferLike.\n * @param buf The BufferLike to calculate the CRC32 of.\n */\nexport function getCrc32(buf) {\n const b = new Uint8Array(buf);\n let crc = -1;\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < b.length; i++) {\n const byte = b[i];\n const t = (byte ^ crc) & 0xff;\n crc = lookUpTable[t] ^ (crc >>> 8);\n }\n return (crc ^ -1) >>> 0;\n}\n//# sourceMappingURL=getCrc.js.map","import { decode, encode } from './utils/base32';\nimport { getCrc32 } from './utils/getCrc';\nimport { sha224 } from './utils/sha224';\nconst SELF_AUTHENTICATING_SUFFIX = 2;\nconst ANONYMOUS_SUFFIX = 4;\nconst fromHexString = (hexString) => { var _a; return new Uint8Array(((_a = hexString.match(/.{1,2}/g)) !== null && _a !== void 0 ? _a : []).map(byte => parseInt(byte, 16))); };\nconst toHexString = (bytes) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\nexport class Principal {\n constructor(_arr) {\n this._arr = _arr;\n this._isPrincipal = true;\n }\n static anonymous() {\n return new this(new Uint8Array([ANONYMOUS_SUFFIX]));\n }\n static selfAuthenticating(publicKey) {\n const sha = sha224(publicKey);\n return new this(new Uint8Array([...sha, SELF_AUTHENTICATING_SUFFIX]));\n }\n static from(other) {\n if (typeof other === 'string') {\n return Principal.fromText(other);\n }\n else if (typeof other === 'object' &&\n other !== null &&\n other._isPrincipal === true) {\n return new Principal(other._arr);\n }\n throw new Error(`Impossible to convert ${JSON.stringify(other)} to Principal.`);\n }\n static fromHex(hex) {\n return new this(fromHexString(hex));\n }\n static fromText(text) {\n const canisterIdNoDash = text.toLowerCase().replace(/-/g, '');\n let arr = decode(canisterIdNoDash);\n arr = arr.slice(4, arr.length);\n const principal = new this(arr);\n if (principal.toText() !== text) {\n throw new Error(`Principal \"${principal.toText()}\" does not have a valid checksum.`);\n }\n return principal;\n }\n static fromUint8Array(arr) {\n return new this(arr);\n }\n isAnonymous() {\n return this._arr.byteLength === 1 && this._arr[0] === ANONYMOUS_SUFFIX;\n }\n toUint8Array() {\n return this._arr;\n }\n toHex() {\n return toHexString(this._arr).toUpperCase();\n }\n toText() {\n const checksumArrayBuf = new ArrayBuffer(4);\n const view = new DataView(checksumArrayBuf);\n view.setUint32(0, getCrc32(this._arr));\n const checksum = Uint8Array.from(Buffer.from(checksumArrayBuf));\n const bytes = Uint8Array.from(this._arr);\n const array = new Uint8Array([...checksum, ...bytes]);\n const result = encode(array);\n const matches = result.match(/.{1,5}/g);\n if (!matches) {\n // This should only happen if there's no character, which is unreachable.\n throw new Error();\n }\n return matches.join('-');\n }\n toString() {\n return this.toText();\n }\n}\n//# sourceMappingURL=index.js.map","import { sha224 as jsSha224 } from 'js-sha256';\n/**\n *\n * @param data Arraybuffer to encode\n * @returns sha244-encoded BinaryBlob\n */\nexport function sha224(data) {\n const shaObj = jsSha224.create();\n shaObj.update(data);\n return new Uint8Array(shaObj.array());\n}\n//# sourceMappingURL=sha224.js.map","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n \"use strict\";\n\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n // Use a lookup table to find the index.\n var lookup = new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i+1)];\n encoded3 = lookup[base64.charCodeAt(i+2)];\n encoded4 = lookup[base64.charCodeAt(i+3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})();\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.0.1\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2020 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz';\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, P.lt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, P.gt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin(args, method) {\r\n var n,\r\n i = 1,\r\n m = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n n = new BigNumber(args[i]);\r\n\r\n // If any number is NaN, return NaN.\r\n if (!n.s) {\r\n m = n;\r\n break;\r\n } else if (method.call(m, n)) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[d - j - 1] % 10 | 0;\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s;\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) t = yc, yc = xc, xc = t, b = a;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) i = g1, g1 = g2, g2 = i, len -= i;\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","'use strict'\n\nconst Bignumber = require('bignumber.js').BigNumber\n\nexports.MT = {\n POS_INT: 0,\n NEG_INT: 1,\n BYTE_STRING: 2,\n UTF8_STRING: 3,\n ARRAY: 4,\n MAP: 5,\n TAG: 6,\n SIMPLE_FLOAT: 7\n}\n\nexports.TAG = {\n DATE_STRING: 0,\n DATE_EPOCH: 1,\n POS_BIGINT: 2,\n NEG_BIGINT: 3,\n DECIMAL_FRAC: 4,\n BIGFLOAT: 5,\n BASE64URL_EXPECTED: 21,\n BASE64_EXPECTED: 22,\n BASE16_EXPECTED: 23,\n CBOR: 24,\n URI: 32,\n BASE64URL: 33,\n BASE64: 34,\n REGEXP: 35,\n MIME: 36\n}\n\nexports.NUMBYTES = {\n ZERO: 0,\n ONE: 24,\n TWO: 25,\n FOUR: 26,\n EIGHT: 27,\n INDEFINITE: 31\n}\n\nexports.SIMPLE = {\n FALSE: 20,\n TRUE: 21,\n NULL: 22,\n UNDEFINED: 23\n}\n\nexports.SYMS = {\n NULL: Symbol('null'),\n UNDEFINED: Symbol('undef'),\n PARENT: Symbol('parent'),\n BREAK: Symbol('break'),\n STREAM: Symbol('stream')\n}\n\nexports.SHIFT32 = Math.pow(2, 32)\nexports.SHIFT16 = Math.pow(2, 16)\n\nexports.MAX_SAFE_HIGH = 0x1fffff\nexports.NEG_ONE = new Bignumber(-1)\nexports.TEN = new Bignumber(10)\nexports.TWO = new Bignumber(2)\n\nexports.PARENT = {\n ARRAY: 0,\n OBJECT: 1,\n MAP: 2,\n TAG: 3,\n BYTE_STRING: 4,\n UTF8_STRING: 5\n}\n","/* eslint-disable */\n\nmodule.exports = function decodeAsm (stdlib, foreign, buffer) {\n 'use asm'\n\n // -- Imports\n\n var heap = new stdlib.Uint8Array(buffer)\n // var log = foreign.log\n var pushInt = foreign.pushInt\n var pushInt32 = foreign.pushInt32\n var pushInt32Neg = foreign.pushInt32Neg\n var pushInt64 = foreign.pushInt64\n var pushInt64Neg = foreign.pushInt64Neg\n var pushFloat = foreign.pushFloat\n var pushFloatSingle = foreign.pushFloatSingle\n var pushFloatDouble = foreign.pushFloatDouble\n var pushTrue = foreign.pushTrue\n var pushFalse = foreign.pushFalse\n var pushUndefined = foreign.pushUndefined\n var pushNull = foreign.pushNull\n var pushInfinity = foreign.pushInfinity\n var pushInfinityNeg = foreign.pushInfinityNeg\n var pushNaN = foreign.pushNaN\n var pushNaNNeg = foreign.pushNaNNeg\n\n var pushArrayStart = foreign.pushArrayStart\n var pushArrayStartFixed = foreign.pushArrayStartFixed\n var pushArrayStartFixed32 = foreign.pushArrayStartFixed32\n var pushArrayStartFixed64 = foreign.pushArrayStartFixed64\n var pushObjectStart = foreign.pushObjectStart\n var pushObjectStartFixed = foreign.pushObjectStartFixed\n var pushObjectStartFixed32 = foreign.pushObjectStartFixed32\n var pushObjectStartFixed64 = foreign.pushObjectStartFixed64\n\n var pushByteString = foreign.pushByteString\n var pushByteStringStart = foreign.pushByteStringStart\n var pushUtf8String = foreign.pushUtf8String\n var pushUtf8StringStart = foreign.pushUtf8StringStart\n\n var pushSimpleUnassigned = foreign.pushSimpleUnassigned\n\n var pushTagStart = foreign.pushTagStart\n var pushTagStart4 = foreign.pushTagStart4\n var pushTagStart8 = foreign.pushTagStart8\n var pushTagUnassigned = foreign.pushTagUnassigned\n\n var pushBreak = foreign.pushBreak\n\n var pow = stdlib.Math.pow\n\n // -- Constants\n\n\n // -- Mutable Variables\n\n var offset = 0\n var inputLength = 0\n var code = 0\n\n // Decode a cbor string represented as Uint8Array\n // which is allocated on the heap from 0 to inputLength\n //\n // input - Int\n //\n // Returns Code - Int,\n // Success = 0\n // Error > 0\n function parse (input) {\n input = input | 0\n\n offset = 0\n inputLength = input\n\n while ((offset | 0) < (inputLength | 0)) {\n code = jumpTable[heap[offset] & 255](heap[offset] | 0) | 0\n\n if ((code | 0) > 0) {\n break\n }\n }\n\n return code | 0\n }\n\n // -- Helper Function\n\n function checkOffset (n) {\n n = n | 0\n\n if ((((offset | 0) + (n | 0)) | 0) < (inputLength | 0)) {\n return 0\n }\n\n return 1\n }\n\n function readUInt16 (n) {\n n = n | 0\n\n return (\n (heap[n | 0] << 8) | heap[(n + 1) | 0]\n ) | 0\n }\n\n function readUInt32 (n) {\n n = n | 0\n\n return (\n (heap[n | 0] << 24) | (heap[(n + 1) | 0] << 16) | (heap[(n + 2) | 0] << 8) | heap[(n + 3) | 0]\n ) | 0\n }\n\n // -- Initial Byte Handlers\n\n function INT_P (octet) {\n octet = octet | 0\n\n pushInt(octet | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UINT_P_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushInt(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function UINT_P_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushInt(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function UINT_P_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushInt32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function UINT_P_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushInt64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function INT_N (octet) {\n octet = octet | 0\n\n pushInt((-1 - ((octet - 32) | 0)) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UINT_N_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushInt(\n (-1 - (heap[(offset + 1) | 0] | 0)) | 0\n )\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function UINT_N_16 (octet) {\n octet = octet | 0\n\n var val = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n val = readUInt16((offset + 1) | 0) | 0\n pushInt((-1 - (val | 0)) | 0)\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function UINT_N_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushInt32Neg(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function UINT_N_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushInt64Neg(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function BYTE_STRING (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var step = 0\n\n step = (octet - 64) | 0\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n start = (offset + 1) | 0\n end = (((offset + 1) | 0) + (step | 0)) | 0\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_8 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n length = heap[(offset + 1) | 0] | 0\n start = (offset + 2) | 0\n end = (((offset + 2) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 1) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_16 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n length = readUInt16((offset + 1) | 0) | 0\n start = (offset + 3) | 0\n end = (((offset + 3) | 0) + (length | 0)) | 0\n\n\n if (checkOffset((length + 2) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_32 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n length = readUInt32((offset + 1) | 0) | 0\n start = (offset + 5) | 0\n end = (((offset + 5) | 0) + (length | 0)) | 0\n\n\n if (checkOffset((length + 4) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_64 (octet) {\n // NOT IMPLEMENTED\n octet = octet | 0\n\n return 1\n }\n\n function BYTE_STRING_BREAK (octet) {\n octet = octet | 0\n\n pushByteStringStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UTF8_STRING (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var step = 0\n\n step = (octet - 96) | 0\n\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n start = (offset + 1) | 0\n end = (((offset + 1) | 0) + (step | 0)) | 0\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_8 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n length = heap[(offset + 1) | 0] | 0\n start = (offset + 2) | 0\n end = (((offset + 2) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 1) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_16 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n length = readUInt16((offset + 1) | 0) | 0\n start = (offset + 3) | 0\n end = (((offset + 3) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 2) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_32 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n length = readUInt32((offset + 1) | 0) | 0\n start = (offset + 5) | 0\n end = (((offset + 5) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 4) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_64 (octet) {\n // NOT IMPLEMENTED\n octet = octet | 0\n\n return 1\n }\n\n function UTF8_STRING_BREAK (octet) {\n octet = octet | 0\n\n pushUtf8StringStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function ARRAY (octet) {\n octet = octet | 0\n\n pushArrayStartFixed((octet - 128) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function ARRAY_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushArrayStartFixed(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function ARRAY_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushArrayStartFixed(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function ARRAY_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushArrayStartFixed32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function ARRAY_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushArrayStartFixed64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function ARRAY_BREAK (octet) {\n octet = octet | 0\n\n pushArrayStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function MAP (octet) {\n octet = octet | 0\n\n var step = 0\n\n step = (octet - 160) | 0\n\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n pushObjectStartFixed(step | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function MAP_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushObjectStartFixed(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function MAP_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushObjectStartFixed(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function MAP_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushObjectStartFixed32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function MAP_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushObjectStartFixed64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function MAP_BREAK (octet) {\n octet = octet | 0\n\n pushObjectStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function TAG_KNOWN (octet) {\n octet = octet | 0\n\n pushTagStart((octet - 192| 0) | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_POS (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_NEG (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_FRAC (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_FLOAT (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_UNASSIGNED (octet) {\n octet = octet | 0\n\n pushTagStart((octet - 192| 0) | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE64_URL (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE64 (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE16 (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_MORE_1 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushTagStart(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2 | 0)\n\n return 0\n }\n\n function TAG_MORE_2 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushTagStart(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3 | 0)\n\n return 0\n }\n\n function TAG_MORE_4 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushTagStart4(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5 | 0)\n\n return 0\n }\n\n function TAG_MORE_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushTagStart8(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9 | 0)\n\n return 0\n }\n\n function SIMPLE_UNASSIGNED (octet) {\n octet = octet | 0\n\n pushSimpleUnassigned(((octet | 0) - 224) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_FALSE (octet) {\n octet = octet | 0\n\n pushFalse()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_TRUE (octet) {\n octet = octet | 0\n\n pushTrue()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_NULL (octet) {\n octet = octet | 0\n\n pushNull()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_UNDEFINED (octet) {\n octet = octet | 0\n\n pushUndefined()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_BYTE (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushSimpleUnassigned(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_HALF (octet) {\n octet = octet | 0\n\n var f = 0\n var g = 0\n var sign = 1.0\n var exp = 0.0\n var mant = 0.0\n var r = 0.0\n if (checkOffset(2) | 0) {\n return 1\n }\n\n f = heap[(offset + 1) | 0] | 0\n g = heap[(offset + 2) | 0] | 0\n\n if ((f | 0) & 0x80) {\n sign = -1.0\n }\n\n exp = +(((f | 0) & 0x7C) >> 2)\n mant = +((((f | 0) & 0x03) << 8) | g)\n\n if (+exp == 0.0) {\n pushFloat(+(\n (+sign) * +5.9604644775390625e-8 * (+mant)\n ))\n } else if (+exp == 31.0) {\n if (+sign == 1.0) {\n if (+mant > 0.0) {\n pushNaN()\n } else {\n pushInfinity()\n }\n } else {\n if (+mant > 0.0) {\n pushNaNNeg()\n } else {\n pushInfinityNeg()\n }\n }\n } else {\n pushFloat(+(\n +sign * pow(+2, +(+exp - 25.0)) * +(1024.0 + mant)\n ))\n }\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_SINGLE (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushFloatSingle(\n heap[(offset + 1) | 0] | 0,\n heap[(offset + 2) | 0] | 0,\n heap[(offset + 3) | 0] | 0,\n heap[(offset + 4) | 0] | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_DOUBLE (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushFloatDouble(\n heap[(offset + 1) | 0] | 0,\n heap[(offset + 2) | 0] | 0,\n heap[(offset + 3) | 0] | 0,\n heap[(offset + 4) | 0] | 0,\n heap[(offset + 5) | 0] | 0,\n heap[(offset + 6) | 0] | 0,\n heap[(offset + 7) | 0] | 0,\n heap[(offset + 8) | 0] | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function ERROR (octet) {\n octet = octet | 0\n\n return 1\n }\n\n function BREAK (octet) {\n octet = octet | 0\n\n pushBreak()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n // -- Jump Table\n\n var jumpTable = [\n // Integer 0x00..0x17 (0..23)\n INT_P, // 0x00\n INT_P, // 0x01\n INT_P, // 0x02\n INT_P, // 0x03\n INT_P, // 0x04\n INT_P, // 0x05\n INT_P, // 0x06\n INT_P, // 0x07\n INT_P, // 0x08\n INT_P, // 0x09\n INT_P, // 0x0A\n INT_P, // 0x0B\n INT_P, // 0x0C\n INT_P, // 0x0D\n INT_P, // 0x0E\n INT_P, // 0x0F\n INT_P, // 0x10\n INT_P, // 0x11\n INT_P, // 0x12\n INT_P, // 0x13\n INT_P, // 0x14\n INT_P, // 0x15\n INT_P, // 0x16\n INT_P, // 0x17\n // Unsigned integer (one-byte uint8_t follows)\n UINT_P_8, // 0x18\n // Unsigned integer (two-byte uint16_t follows)\n UINT_P_16, // 0x19\n // Unsigned integer (four-byte uint32_t follows)\n UINT_P_32, // 0x1a\n // Unsigned integer (eight-byte uint64_t follows)\n UINT_P_64, // 0x1b\n ERROR, // 0x1c\n ERROR, // 0x1d\n ERROR, // 0x1e\n ERROR, // 0x1f\n // Negative integer -1-0x00..-1-0x17 (-1..-24)\n INT_N, // 0x20\n INT_N, // 0x21\n INT_N, // 0x22\n INT_N, // 0x23\n INT_N, // 0x24\n INT_N, // 0x25\n INT_N, // 0x26\n INT_N, // 0x27\n INT_N, // 0x28\n INT_N, // 0x29\n INT_N, // 0x2A\n INT_N, // 0x2B\n INT_N, // 0x2C\n INT_N, // 0x2D\n INT_N, // 0x2E\n INT_N, // 0x2F\n INT_N, // 0x30\n INT_N, // 0x31\n INT_N, // 0x32\n INT_N, // 0x33\n INT_N, // 0x34\n INT_N, // 0x35\n INT_N, // 0x36\n INT_N, // 0x37\n // Negative integer -1-n (one-byte uint8_t for n follows)\n UINT_N_8, // 0x38\n // Negative integer -1-n (two-byte uint16_t for n follows)\n UINT_N_16, // 0x39\n // Negative integer -1-n (four-byte uint32_t for nfollows)\n UINT_N_32, // 0x3a\n // Negative integer -1-n (eight-byte uint64_t for n follows)\n UINT_N_64, // 0x3b\n ERROR, // 0x3c\n ERROR, // 0x3d\n ERROR, // 0x3e\n ERROR, // 0x3f\n // byte string (0x00..0x17 bytes follow)\n BYTE_STRING, // 0x40\n BYTE_STRING, // 0x41\n BYTE_STRING, // 0x42\n BYTE_STRING, // 0x43\n BYTE_STRING, // 0x44\n BYTE_STRING, // 0x45\n BYTE_STRING, // 0x46\n BYTE_STRING, // 0x47\n BYTE_STRING, // 0x48\n BYTE_STRING, // 0x49\n BYTE_STRING, // 0x4A\n BYTE_STRING, // 0x4B\n BYTE_STRING, // 0x4C\n BYTE_STRING, // 0x4D\n BYTE_STRING, // 0x4E\n BYTE_STRING, // 0x4F\n BYTE_STRING, // 0x50\n BYTE_STRING, // 0x51\n BYTE_STRING, // 0x52\n BYTE_STRING, // 0x53\n BYTE_STRING, // 0x54\n BYTE_STRING, // 0x55\n BYTE_STRING, // 0x56\n BYTE_STRING, // 0x57\n // byte string (one-byte uint8_t for n, and then n bytes follow)\n BYTE_STRING_8, // 0x58\n // byte string (two-byte uint16_t for n, and then n bytes follow)\n BYTE_STRING_16, // 0x59\n // byte string (four-byte uint32_t for n, and then n bytes follow)\n BYTE_STRING_32, // 0x5a\n // byte string (eight-byte uint64_t for n, and then n bytes follow)\n BYTE_STRING_64, // 0x5b\n ERROR, // 0x5c\n ERROR, // 0x5d\n ERROR, // 0x5e\n // byte string, byte strings follow, terminated by \"break\"\n BYTE_STRING_BREAK, // 0x5f\n // UTF-8 string (0x00..0x17 bytes follow)\n UTF8_STRING, // 0x60\n UTF8_STRING, // 0x61\n UTF8_STRING, // 0x62\n UTF8_STRING, // 0x63\n UTF8_STRING, // 0x64\n UTF8_STRING, // 0x65\n UTF8_STRING, // 0x66\n UTF8_STRING, // 0x67\n UTF8_STRING, // 0x68\n UTF8_STRING, // 0x69\n UTF8_STRING, // 0x6A\n UTF8_STRING, // 0x6B\n UTF8_STRING, // 0x6C\n UTF8_STRING, // 0x6D\n UTF8_STRING, // 0x6E\n UTF8_STRING, // 0x6F\n UTF8_STRING, // 0x70\n UTF8_STRING, // 0x71\n UTF8_STRING, // 0x72\n UTF8_STRING, // 0x73\n UTF8_STRING, // 0x74\n UTF8_STRING, // 0x75\n UTF8_STRING, // 0x76\n UTF8_STRING, // 0x77\n // UTF-8 string (one-byte uint8_t for n, and then n bytes follow)\n UTF8_STRING_8, // 0x78\n // UTF-8 string (two-byte uint16_t for n, and then n bytes follow)\n UTF8_STRING_16, // 0x79\n // UTF-8 string (four-byte uint32_t for n, and then n bytes follow)\n UTF8_STRING_32, // 0x7a\n // UTF-8 string (eight-byte uint64_t for n, and then n bytes follow)\n UTF8_STRING_64, // 0x7b\n // UTF-8 string, UTF-8 strings follow, terminated by \"break\"\n ERROR, // 0x7c\n ERROR, // 0x7d\n ERROR, // 0x7e\n UTF8_STRING_BREAK, // 0x7f\n // array (0x00..0x17 data items follow)\n ARRAY, // 0x80\n ARRAY, // 0x81\n ARRAY, // 0x82\n ARRAY, // 0x83\n ARRAY, // 0x84\n ARRAY, // 0x85\n ARRAY, // 0x86\n ARRAY, // 0x87\n ARRAY, // 0x88\n ARRAY, // 0x89\n ARRAY, // 0x8A\n ARRAY, // 0x8B\n ARRAY, // 0x8C\n ARRAY, // 0x8D\n ARRAY, // 0x8E\n ARRAY, // 0x8F\n ARRAY, // 0x90\n ARRAY, // 0x91\n ARRAY, // 0x92\n ARRAY, // 0x93\n ARRAY, // 0x94\n ARRAY, // 0x95\n ARRAY, // 0x96\n ARRAY, // 0x97\n // array (one-byte uint8_t fo, and then n data items follow)\n ARRAY_8, // 0x98\n // array (two-byte uint16_t for n, and then n data items follow)\n ARRAY_16, // 0x99\n // array (four-byte uint32_t for n, and then n data items follow)\n ARRAY_32, // 0x9a\n // array (eight-byte uint64_t for n, and then n data items follow)\n ARRAY_64, // 0x9b\n // array, data items follow, terminated by \"break\"\n ERROR, // 0x9c\n ERROR, // 0x9d\n ERROR, // 0x9e\n ARRAY_BREAK, // 0x9f\n // map (0x00..0x17 pairs of data items follow)\n MAP, // 0xa0\n MAP, // 0xa1\n MAP, // 0xa2\n MAP, // 0xa3\n MAP, // 0xa4\n MAP, // 0xa5\n MAP, // 0xa6\n MAP, // 0xa7\n MAP, // 0xa8\n MAP, // 0xa9\n MAP, // 0xaA\n MAP, // 0xaB\n MAP, // 0xaC\n MAP, // 0xaD\n MAP, // 0xaE\n MAP, // 0xaF\n MAP, // 0xb0\n MAP, // 0xb1\n MAP, // 0xb2\n MAP, // 0xb3\n MAP, // 0xb4\n MAP, // 0xb5\n MAP, // 0xb6\n MAP, // 0xb7\n // map (one-byte uint8_t for n, and then n pairs of data items follow)\n MAP_8, // 0xb8\n // map (two-byte uint16_t for n, and then n pairs of data items follow)\n MAP_16, // 0xb9\n // map (four-byte uint32_t for n, and then n pairs of data items follow)\n MAP_32, // 0xba\n // map (eight-byte uint64_t for n, and then n pairs of data items follow)\n MAP_64, // 0xbb\n ERROR, // 0xbc\n ERROR, // 0xbd\n ERROR, // 0xbe\n // map, pairs of data items follow, terminated by \"break\"\n MAP_BREAK, // 0xbf\n // Text-based date/time (data item follows; see Section 2.4.1)\n TAG_KNOWN, // 0xc0\n // Epoch-based date/time (data item follows; see Section 2.4.1)\n TAG_KNOWN, // 0xc1\n // Positive bignum (data item \"byte string\" follows)\n TAG_KNOWN, // 0xc2\n // Negative bignum (data item \"byte string\" follows)\n TAG_KNOWN, // 0xc3\n // Decimal Fraction (data item \"array\" follows; see Section 2.4.3)\n TAG_KNOWN, // 0xc4\n // Bigfloat (data item \"array\" follows; see Section 2.4.3)\n TAG_KNOWN, // 0xc5\n // (tagged item)\n TAG_UNASSIGNED, // 0xc6\n TAG_UNASSIGNED, // 0xc7\n TAG_UNASSIGNED, // 0xc8\n TAG_UNASSIGNED, // 0xc9\n TAG_UNASSIGNED, // 0xca\n TAG_UNASSIGNED, // 0xcb\n TAG_UNASSIGNED, // 0xcc\n TAG_UNASSIGNED, // 0xcd\n TAG_UNASSIGNED, // 0xce\n TAG_UNASSIGNED, // 0xcf\n TAG_UNASSIGNED, // 0xd0\n TAG_UNASSIGNED, // 0xd1\n TAG_UNASSIGNED, // 0xd2\n TAG_UNASSIGNED, // 0xd3\n TAG_UNASSIGNED, // 0xd4\n // Expected Conversion (data item follows; see Section 2.4.4.2)\n TAG_UNASSIGNED, // 0xd5\n TAG_UNASSIGNED, // 0xd6\n TAG_UNASSIGNED, // 0xd7\n // (more tagged items, 1/2/4/8 bytes and then a data item follow)\n TAG_MORE_1, // 0xd8\n TAG_MORE_2, // 0xd9\n TAG_MORE_4, // 0xda\n TAG_MORE_8, // 0xdb\n ERROR, // 0xdc\n ERROR, // 0xdd\n ERROR, // 0xde\n ERROR, // 0xdf\n // (simple value)\n SIMPLE_UNASSIGNED, // 0xe0\n SIMPLE_UNASSIGNED, // 0xe1\n SIMPLE_UNASSIGNED, // 0xe2\n SIMPLE_UNASSIGNED, // 0xe3\n SIMPLE_UNASSIGNED, // 0xe4\n SIMPLE_UNASSIGNED, // 0xe5\n SIMPLE_UNASSIGNED, // 0xe6\n SIMPLE_UNASSIGNED, // 0xe7\n SIMPLE_UNASSIGNED, // 0xe8\n SIMPLE_UNASSIGNED, // 0xe9\n SIMPLE_UNASSIGNED, // 0xea\n SIMPLE_UNASSIGNED, // 0xeb\n SIMPLE_UNASSIGNED, // 0xec\n SIMPLE_UNASSIGNED, // 0xed\n SIMPLE_UNASSIGNED, // 0xee\n SIMPLE_UNASSIGNED, // 0xef\n SIMPLE_UNASSIGNED, // 0xf0\n SIMPLE_UNASSIGNED, // 0xf1\n SIMPLE_UNASSIGNED, // 0xf2\n SIMPLE_UNASSIGNED, // 0xf3\n // False\n SIMPLE_FALSE, // 0xf4\n // True\n SIMPLE_TRUE, // 0xf5\n // Null\n SIMPLE_NULL, // 0xf6\n // Undefined\n SIMPLE_UNDEFINED, // 0xf7\n // (simple value, one byte follows)\n SIMPLE_BYTE, // 0xf8\n // Half-Precision Float (two-byte IEEE 754)\n SIMPLE_FLOAT_HALF, // 0xf9\n // Single-Precision Float (four-byte IEEE 754)\n SIMPLE_FLOAT_SINGLE, // 0xfa\n // Double-Precision Float (eight-byte IEEE 754)\n SIMPLE_FLOAT_DOUBLE, // 0xfb\n ERROR, // 0xfc\n ERROR, // 0xfd\n ERROR, // 0xfe\n // \"break\" stop code\n BREAK // 0xff\n ]\n\n // --\n\n return {\n parse: parse\n }\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst ieee754 = require('ieee754')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst parser = require('./decoder.asm')\nconst utils = require('./utils')\nconst c = require('./constants')\nconst Simple = require('./simple')\nconst Tagged = require('./tagged')\nconst { URL } = require('iso-url')\n\n/**\n * Transform binary cbor data into JavaScript objects.\n */\nclass Decoder {\n /**\n * @param {Object} [opts={}]\n * @param {number} [opts.size=65536] - Size of the allocated heap.\n */\n constructor (opts) {\n opts = opts || {}\n\n if (!opts.size || opts.size < 0x10000) {\n opts.size = 0x10000\n } else {\n // Ensure the size is a power of 2\n opts.size = utils.nextPowerOf2(opts.size)\n }\n\n // Heap use to share the input with the parser\n this._heap = new ArrayBuffer(opts.size)\n this._heap8 = new Uint8Array(this._heap)\n this._buffer = Buffer.from(this._heap)\n\n this._reset()\n\n // Known tags\n this._knownTags = Object.assign({\n 0: (val) => new Date(val),\n 1: (val) => new Date(val * 1000),\n 2: (val) => utils.arrayBufferToBignumber(val),\n 3: (val) => c.NEG_ONE.minus(utils.arrayBufferToBignumber(val)),\n 4: (v) => {\n // const v = new Uint8Array(val)\n return c.TEN.pow(v[0]).times(v[1])\n },\n 5: (v) => {\n // const v = new Uint8Array(val)\n return c.TWO.pow(v[0]).times(v[1])\n },\n 32: (val) => new URL(val),\n 35: (val) => new RegExp(val)\n }, opts.tags)\n\n // Initialize asm based parser\n this.parser = parser(global, {\n // eslint-disable-next-line no-console\n log: console.log.bind(console),\n pushInt: this.pushInt.bind(this),\n pushInt32: this.pushInt32.bind(this),\n pushInt32Neg: this.pushInt32Neg.bind(this),\n pushInt64: this.pushInt64.bind(this),\n pushInt64Neg: this.pushInt64Neg.bind(this),\n pushFloat: this.pushFloat.bind(this),\n pushFloatSingle: this.pushFloatSingle.bind(this),\n pushFloatDouble: this.pushFloatDouble.bind(this),\n pushTrue: this.pushTrue.bind(this),\n pushFalse: this.pushFalse.bind(this),\n pushUndefined: this.pushUndefined.bind(this),\n pushNull: this.pushNull.bind(this),\n pushInfinity: this.pushInfinity.bind(this),\n pushInfinityNeg: this.pushInfinityNeg.bind(this),\n pushNaN: this.pushNaN.bind(this),\n pushNaNNeg: this.pushNaNNeg.bind(this),\n pushArrayStart: this.pushArrayStart.bind(this),\n pushArrayStartFixed: this.pushArrayStartFixed.bind(this),\n pushArrayStartFixed32: this.pushArrayStartFixed32.bind(this),\n pushArrayStartFixed64: this.pushArrayStartFixed64.bind(this),\n pushObjectStart: this.pushObjectStart.bind(this),\n pushObjectStartFixed: this.pushObjectStartFixed.bind(this),\n pushObjectStartFixed32: this.pushObjectStartFixed32.bind(this),\n pushObjectStartFixed64: this.pushObjectStartFixed64.bind(this),\n pushByteString: this.pushByteString.bind(this),\n pushByteStringStart: this.pushByteStringStart.bind(this),\n pushUtf8String: this.pushUtf8String.bind(this),\n pushUtf8StringStart: this.pushUtf8StringStart.bind(this),\n pushSimpleUnassigned: this.pushSimpleUnassigned.bind(this),\n pushTagUnassigned: this.pushTagUnassigned.bind(this),\n pushTagStart: this.pushTagStart.bind(this),\n pushTagStart4: this.pushTagStart4.bind(this),\n pushTagStart8: this.pushTagStart8.bind(this),\n pushBreak: this.pushBreak.bind(this)\n }, this._heap)\n }\n\n get _depth () {\n return this._parents.length\n }\n\n get _currentParent () {\n return this._parents[this._depth - 1]\n }\n\n get _ref () {\n return this._currentParent.ref\n }\n\n // Finish the current parent\n _closeParent () {\n var p = this._parents.pop()\n\n if (p.length > 0) {\n throw new Error(`Missing ${p.length} elements`)\n }\n\n switch (p.type) {\n case c.PARENT.TAG:\n this._push(\n this.createTag(p.ref[0], p.ref[1])\n )\n break\n case c.PARENT.BYTE_STRING:\n this._push(this.createByteString(p.ref, p.length))\n break\n case c.PARENT.UTF8_STRING:\n this._push(this.createUtf8String(p.ref, p.length))\n break\n case c.PARENT.MAP:\n if (p.values % 2 > 0) {\n throw new Error('Odd number of elements in the map')\n }\n this._push(this.createMap(p.ref, p.length))\n break\n case c.PARENT.OBJECT:\n if (p.values % 2 > 0) {\n throw new Error('Odd number of elements in the map')\n }\n this._push(this.createObject(p.ref, p.length))\n break\n case c.PARENT.ARRAY:\n this._push(this.createArray(p.ref, p.length))\n break\n default:\n break\n }\n\n if (this._currentParent && this._currentParent.type === c.PARENT.TAG) {\n this._dec()\n }\n }\n\n // Reduce the expected length of the current parent by one\n _dec () {\n const p = this._currentParent\n // The current parent does not know the epxected child length\n\n if (p.length < 0) {\n return\n }\n\n p.length--\n\n // All children were seen, we can close the current parent\n if (p.length === 0) {\n this._closeParent()\n }\n }\n\n // Push any value to the current parent\n _push (val, hasChildren) {\n const p = this._currentParent\n p.values++\n\n switch (p.type) {\n case c.PARENT.ARRAY:\n case c.PARENT.BYTE_STRING:\n case c.PARENT.UTF8_STRING:\n if (p.length > -1) {\n this._ref[this._ref.length - p.length] = val\n } else {\n this._ref.push(val)\n }\n this._dec()\n break\n case c.PARENT.OBJECT:\n if (p.tmpKey != null) {\n this._ref[p.tmpKey] = val\n p.tmpKey = null\n this._dec()\n } else {\n p.tmpKey = val\n\n if (typeof p.tmpKey !== 'string') {\n // too bad, convert to a Map\n p.type = c.PARENT.MAP\n p.ref = utils.buildMap(p.ref)\n }\n }\n break\n case c.PARENT.MAP:\n if (p.tmpKey != null) {\n this._ref.set(p.tmpKey, val)\n p.tmpKey = null\n this._dec()\n } else {\n p.tmpKey = val\n }\n break\n case c.PARENT.TAG:\n this._ref.push(val)\n if (!hasChildren) {\n this._dec()\n }\n break\n default:\n throw new Error('Unknown parent type')\n }\n }\n\n // Create a new parent in the parents list\n _createParent (obj, type, len) {\n this._parents[this._depth] = {\n type: type,\n length: len,\n ref: obj,\n values: 0,\n tmpKey: null\n }\n }\n\n // Reset all state back to the beginning, also used for initiatlization\n _reset () {\n this._res = []\n this._parents = [{\n type: c.PARENT.ARRAY,\n length: -1,\n ref: this._res,\n values: 0,\n tmpKey: null\n }]\n }\n\n // -- Interface to customize deoding behaviour\n createTag (tagNumber, value) {\n const typ = this._knownTags[tagNumber]\n\n if (!typ) {\n return new Tagged(tagNumber, value)\n }\n\n return typ(value)\n }\n\n createMap (obj, len) {\n return obj\n }\n\n createObject (obj, len) {\n return obj\n }\n\n createArray (arr, len) {\n return arr\n }\n\n createByteString (raw, len) {\n return Buffer.concat(raw)\n }\n\n createByteStringFromHeap (start, end) {\n if (start === end) {\n return Buffer.alloc(0)\n }\n\n return Buffer.from(this._heap.slice(start, end))\n }\n\n createInt (val) {\n return val\n }\n\n createInt32 (f, g) {\n return utils.buildInt32(f, g)\n }\n\n createInt64 (f1, f2, g1, g2) {\n return utils.buildInt64(f1, f2, g1, g2)\n }\n\n createFloat (val) {\n return val\n }\n\n createFloatSingle (a, b, c, d) {\n return ieee754.read([a, b, c, d], 0, false, 23, 4)\n }\n\n createFloatDouble (a, b, c, d, e, f, g, h) {\n return ieee754.read([a, b, c, d, e, f, g, h], 0, false, 52, 8)\n }\n\n createInt32Neg (f, g) {\n return -1 - utils.buildInt32(f, g)\n }\n\n createInt64Neg (f1, f2, g1, g2) {\n const f = utils.buildInt32(f1, f2)\n const g = utils.buildInt32(g1, g2)\n\n if (f > c.MAX_SAFE_HIGH) {\n return c.NEG_ONE.minus(new Bignumber(f).times(c.SHIFT32).plus(g))\n }\n\n return -1 - ((f * c.SHIFT32) + g)\n }\n\n createTrue () {\n return true\n }\n\n createFalse () {\n return false\n }\n\n createNull () {\n return null\n }\n\n createUndefined () {\n return undefined\n }\n\n createInfinity () {\n return Infinity\n }\n\n createInfinityNeg () {\n return -Infinity\n }\n\n createNaN () {\n return NaN\n }\n\n createNaNNeg () {\n return -NaN\n }\n\n createUtf8String (raw, len) {\n return raw.join('')\n }\n\n createUtf8StringFromHeap (start, end) {\n if (start === end) {\n return ''\n }\n\n return this._buffer.toString('utf8', start, end)\n }\n\n createSimpleUnassigned (val) {\n return new Simple(val)\n }\n\n // -- Interface for decoder.asm.js\n\n pushInt (val) {\n this._push(this.createInt(val))\n }\n\n pushInt32 (f, g) {\n this._push(this.createInt32(f, g))\n }\n\n pushInt64 (f1, f2, g1, g2) {\n this._push(this.createInt64(f1, f2, g1, g2))\n }\n\n pushFloat (val) {\n this._push(this.createFloat(val))\n }\n\n pushFloatSingle (a, b, c, d) {\n this._push(this.createFloatSingle(a, b, c, d))\n }\n\n pushFloatDouble (a, b, c, d, e, f, g, h) {\n this._push(this.createFloatDouble(a, b, c, d, e, f, g, h))\n }\n\n pushInt32Neg (f, g) {\n this._push(this.createInt32Neg(f, g))\n }\n\n pushInt64Neg (f1, f2, g1, g2) {\n this._push(this.createInt64Neg(f1, f2, g1, g2))\n }\n\n pushTrue () {\n this._push(this.createTrue())\n }\n\n pushFalse () {\n this._push(this.createFalse())\n }\n\n pushNull () {\n this._push(this.createNull())\n }\n\n pushUndefined () {\n this._push(this.createUndefined())\n }\n\n pushInfinity () {\n this._push(this.createInfinity())\n }\n\n pushInfinityNeg () {\n this._push(this.createInfinityNeg())\n }\n\n pushNaN () {\n this._push(this.createNaN())\n }\n\n pushNaNNeg () {\n this._push(this.createNaNNeg())\n }\n\n pushArrayStart () {\n this._createParent([], c.PARENT.ARRAY, -1)\n }\n\n pushArrayStartFixed (len) {\n this._createArrayStartFixed(len)\n }\n\n pushArrayStartFixed32 (len1, len2) {\n const len = utils.buildInt32(len1, len2)\n this._createArrayStartFixed(len)\n }\n\n pushArrayStartFixed64 (len1, len2, len3, len4) {\n const len = utils.buildInt64(len1, len2, len3, len4)\n this._createArrayStartFixed(len)\n }\n\n pushObjectStart () {\n this._createObjectStartFixed(-1)\n }\n\n pushObjectStartFixed (len) {\n this._createObjectStartFixed(len)\n }\n\n pushObjectStartFixed32 (len1, len2) {\n const len = utils.buildInt32(len1, len2)\n this._createObjectStartFixed(len)\n }\n\n pushObjectStartFixed64 (len1, len2, len3, len4) {\n const len = utils.buildInt64(len1, len2, len3, len4)\n this._createObjectStartFixed(len)\n }\n\n pushByteStringStart () {\n this._parents[this._depth] = {\n type: c.PARENT.BYTE_STRING,\n length: -1,\n ref: [],\n values: 0,\n tmpKey: null\n }\n }\n\n pushByteString (start, end) {\n this._push(this.createByteStringFromHeap(start, end))\n }\n\n pushUtf8StringStart () {\n this._parents[this._depth] = {\n type: c.PARENT.UTF8_STRING,\n length: -1,\n ref: [],\n values: 0,\n tmpKey: null\n }\n }\n\n pushUtf8String (start, end) {\n this._push(this.createUtf8StringFromHeap(start, end))\n }\n\n pushSimpleUnassigned (val) {\n this._push(this.createSimpleUnassigned(val))\n }\n\n pushTagStart (tag) {\n this._parents[this._depth] = {\n type: c.PARENT.TAG,\n length: 1,\n ref: [tag]\n }\n }\n\n pushTagStart4 (f, g) {\n this.pushTagStart(utils.buildInt32(f, g))\n }\n\n pushTagStart8 (f1, f2, g1, g2) {\n this.pushTagStart(utils.buildInt64(f1, f2, g1, g2))\n }\n\n pushTagUnassigned (tagNumber) {\n this._push(this.createTag(tagNumber))\n }\n\n pushBreak () {\n if (this._currentParent.length > -1) {\n throw new Error('Unexpected break')\n }\n\n this._closeParent()\n }\n\n _createObjectStartFixed (len) {\n if (len === 0) {\n this._push(this.createObject({}))\n return\n }\n\n this._createParent({}, c.PARENT.OBJECT, len)\n }\n\n _createArrayStartFixed (len) {\n if (len === 0) {\n this._push(this.createArray([]))\n return\n }\n\n this._createParent(new Array(len), c.PARENT.ARRAY, len)\n }\n\n _decode (input) {\n if (input.byteLength === 0) {\n throw new Error('Input too short')\n }\n\n this._reset()\n this._heap8.set(input)\n const code = this.parser.parse(input.byteLength)\n\n if (this._depth > 1) {\n while (this._currentParent.length === 0) {\n this._closeParent()\n }\n if (this._depth > 1) {\n throw new Error('Undeterminated nesting')\n }\n }\n\n if (code > 0) {\n throw new Error('Failed to parse')\n }\n\n if (this._res.length === 0) {\n throw new Error('No valid result')\n }\n }\n\n // -- Public Interface\n\n decodeFirst (input) {\n this._decode(input)\n\n return this._res[0]\n }\n\n decodeAll (input) {\n this._decode(input)\n\n return this._res\n }\n\n /**\n * Decode the first cbor object.\n *\n * @param {Buffer|string} input\n * @param {string} [enc='hex'] - Encoding used if a string is passed.\n * @returns {*}\n */\n static decode (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Decoder({ size: input.length })\n return dec.decodeFirst(input)\n }\n\n /**\n * Decode all cbor objects.\n *\n * @param {Buffer|string} input\n * @param {string} [enc='hex'] - Encoding used if a string is passed.\n * @returns {Array<*>}\n */\n static decodeAll (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Decoder({ size: input.length })\n return dec.decodeAll(input)\n }\n}\n\nDecoder.decodeFirst = Decoder.decode\n\nmodule.exports = Decoder\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst Decoder = require('./decoder')\nconst utils = require('./utils')\n\n/**\n * Output the diagnostic format from a stream of CBOR bytes.\n *\n */\nclass Diagnose extends Decoder {\n createTag (tagNumber, value) {\n return `${tagNumber}(${value})`\n }\n\n createInt (val) {\n return super.createInt(val).toString()\n }\n\n createInt32 (f, g) {\n return super.createInt32(f, g).toString()\n }\n\n createInt64 (f1, f2, g1, g2) {\n return super.createInt64(f1, f2, g1, g2).toString()\n }\n\n createInt32Neg (f, g) {\n return super.createInt32Neg(f, g).toString()\n }\n\n createInt64Neg (f1, f2, g1, g2) {\n return super.createInt64Neg(f1, f2, g1, g2).toString()\n }\n\n createTrue () {\n return 'true'\n }\n\n createFalse () {\n return 'false'\n }\n\n createFloat (val) {\n const fl = super.createFloat(val)\n if (utils.isNegativeZero(val)) {\n return '-0_1'\n }\n\n return `${fl}_1`\n }\n\n createFloatSingle (a, b, c, d) {\n const fl = super.createFloatSingle(a, b, c, d)\n return `${fl}_2`\n }\n\n createFloatDouble (a, b, c, d, e, f, g, h) {\n const fl = super.createFloatDouble(a, b, c, d, e, f, g, h)\n return `${fl}_3`\n }\n\n createByteString (raw, len) {\n const val = raw.join(', ')\n\n if (len === -1) {\n return `(_ ${val})`\n }\n return `h'${val}`\n }\n\n createByteStringFromHeap (start, end) {\n const val = (Buffer.from(\n super.createByteStringFromHeap(start, end)\n )).toString('hex')\n\n return `h'${val}'`\n }\n\n createInfinity () {\n return 'Infinity_1'\n }\n\n createInfinityNeg () {\n return '-Infinity_1'\n }\n\n createNaN () {\n return 'NaN_1'\n }\n\n createNaNNeg () {\n return '-NaN_1'\n }\n\n createNull () {\n return 'null'\n }\n\n createUndefined () {\n return 'undefined'\n }\n\n createSimpleUnassigned (val) {\n return `simple(${val})`\n }\n\n createArray (arr, len) {\n const val = super.createArray(arr, len)\n\n if (len === -1) {\n // indefinite\n return `[_ ${val.join(', ')}]`\n }\n\n return `[${val.join(', ')}]`\n }\n\n createMap (map, len) {\n const val = super.createMap(map)\n const list = Array.from(val.keys())\n .reduce(collectObject(val), '')\n\n if (len === -1) {\n return `{_ ${list}}`\n }\n\n return `{${list}}`\n }\n\n createObject (obj, len) {\n const val = super.createObject(obj)\n const map = Object.keys(val)\n .reduce(collectObject(val), '')\n\n if (len === -1) {\n return `{_ ${map}}`\n }\n\n return `{${map}}`\n }\n\n createUtf8String (raw, len) {\n const val = raw.join(', ')\n\n if (len === -1) {\n return `(_ ${val})`\n }\n\n return `\"${val}\"`\n }\n\n createUtf8StringFromHeap (start, end) {\n const val = (Buffer.from(\n super.createUtf8StringFromHeap(start, end)\n )).toString('utf8')\n\n return `\"${val}\"`\n }\n\n static diagnose (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Diagnose()\n return dec.decodeFirst(input)\n }\n}\n\nmodule.exports = Diagnose\n\nfunction collectObject (val) {\n return (acc, key) => {\n if (acc) {\n return `${acc}, ${key}: ${val[key]}`\n }\n return `${key}: ${val[key]}`\n }\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst { URL } = require('iso-url')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst utils = require('./utils')\nconst constants = require('./constants')\nconst MT = constants.MT\nconst NUMBYTES = constants.NUMBYTES\nconst SHIFT32 = constants.SHIFT32\nconst SYMS = constants.SYMS\nconst TAG = constants.TAG\nconst HALF = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.TWO\nconst FLOAT = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.FOUR\nconst DOUBLE = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.EIGHT\nconst TRUE = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.TRUE\nconst FALSE = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.FALSE\nconst UNDEFINED = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.UNDEFINED\nconst NULL = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.NULL\n\nconst MAXINT_BN = new Bignumber('0x20000000000000')\nconst BUF_NAN = Buffer.from('f97e00', 'hex')\nconst BUF_INF_NEG = Buffer.from('f9fc00', 'hex')\nconst BUF_INF_POS = Buffer.from('f97c00', 'hex')\n\nfunction toType (obj) {\n // [object Type]\n // --------8---1\n return ({}).toString.call(obj).slice(8, -1)\n}\n\n/**\n * Transform JavaScript values into CBOR bytes\n *\n */\nclass Encoder {\n /**\n * @param {Object} [options={}]\n * @param {function(Buffer)} options.stream\n */\n constructor (options) {\n options = options || {}\n\n this.streaming = typeof options.stream === 'function'\n this.onData = options.stream\n\n this.semanticTypes = [\n [URL, this._pushUrl],\n [Bignumber, this._pushBigNumber]\n ]\n\n const addTypes = options.genTypes || []\n const len = addTypes.length\n for (let i = 0; i < len; i++) {\n this.addSemanticType(\n addTypes[i][0],\n addTypes[i][1]\n )\n }\n\n this._reset()\n }\n\n addSemanticType (type, fun) {\n const len = this.semanticTypes.length\n for (let i = 0; i < len; i++) {\n const typ = this.semanticTypes[i][0]\n if (typ === type) {\n const old = this.semanticTypes[i][1]\n this.semanticTypes[i][1] = fun\n return old\n }\n }\n this.semanticTypes.push([type, fun])\n return null\n }\n\n push (val) {\n if (!val) {\n return true\n }\n\n this.result[this.offset] = val\n this.resultMethod[this.offset] = 0\n this.resultLength[this.offset] = val.length\n this.offset++\n\n if (this.streaming) {\n this.onData(this.finalize())\n }\n\n return true\n }\n\n pushWrite (val, method, len) {\n this.result[this.offset] = val\n this.resultMethod[this.offset] = method\n this.resultLength[this.offset] = len\n this.offset++\n\n if (this.streaming) {\n this.onData(this.finalize())\n }\n\n return true\n }\n\n _pushUInt8 (val) {\n return this.pushWrite(val, 1, 1)\n }\n\n _pushUInt16BE (val) {\n return this.pushWrite(val, 2, 2)\n }\n\n _pushUInt32BE (val) {\n return this.pushWrite(val, 3, 4)\n }\n\n _pushDoubleBE (val) {\n return this.pushWrite(val, 4, 8)\n }\n\n _pushNaN () {\n return this.push(BUF_NAN)\n }\n\n _pushInfinity (obj) {\n const half = (obj < 0) ? BUF_INF_NEG : BUF_INF_POS\n return this.push(half)\n }\n\n _pushFloat (obj) {\n const b2 = Buffer.allocUnsafe(2)\n\n if (utils.writeHalf(b2, obj)) {\n if (utils.parseHalf(b2) === obj) {\n return this._pushUInt8(HALF) && this.push(b2)\n }\n }\n\n const b4 = Buffer.allocUnsafe(4)\n b4.writeFloatBE(obj, 0)\n if (b4.readFloatBE(0) === obj) {\n return this._pushUInt8(FLOAT) && this.push(b4)\n }\n\n return this._pushUInt8(DOUBLE) && this._pushDoubleBE(obj)\n }\n\n _pushInt (obj, mt, orig) {\n const m = mt << 5\n if (obj < 24) {\n return this._pushUInt8(m | obj)\n }\n\n if (obj <= 0xff) {\n return this._pushUInt8(m | NUMBYTES.ONE) && this._pushUInt8(obj)\n }\n\n if (obj <= 0xffff) {\n return this._pushUInt8(m | NUMBYTES.TWO) && this._pushUInt16BE(obj)\n }\n\n if (obj <= 0xffffffff) {\n return this._pushUInt8(m | NUMBYTES.FOUR) && this._pushUInt32BE(obj)\n }\n\n if (obj <= Number.MAX_SAFE_INTEGER) {\n return this._pushUInt8(m | NUMBYTES.EIGHT) &&\n this._pushUInt32BE(Math.floor(obj / SHIFT32)) &&\n this._pushUInt32BE(obj % SHIFT32)\n }\n\n if (mt === MT.NEG_INT) {\n return this._pushFloat(orig)\n }\n\n return this._pushFloat(obj)\n }\n\n _pushIntNum (obj) {\n if (obj < 0) {\n return this._pushInt(-obj - 1, MT.NEG_INT, obj)\n } else {\n return this._pushInt(obj, MT.POS_INT)\n }\n }\n\n _pushNumber (obj) {\n switch (false) {\n case (obj === obj): // eslint-disable-line\n return this._pushNaN(obj)\n case isFinite(obj):\n return this._pushInfinity(obj)\n case ((obj % 1) !== 0):\n return this._pushIntNum(obj)\n default:\n return this._pushFloat(obj)\n }\n }\n\n _pushString (obj) {\n const len = Buffer.byteLength(obj, 'utf8')\n return this._pushInt(len, MT.UTF8_STRING) && this.pushWrite(obj, 5, len)\n }\n\n _pushBoolean (obj) {\n return this._pushUInt8(obj ? TRUE : FALSE)\n }\n\n _pushUndefined (obj) {\n return this._pushUInt8(UNDEFINED)\n }\n\n _pushArray (gen, obj) {\n const len = obj.length\n if (!gen._pushInt(len, MT.ARRAY)) {\n return false\n }\n for (let j = 0; j < len; j++) {\n if (!gen.pushAny(obj[j])) {\n return false\n }\n }\n return true\n }\n\n _pushTag (tag) {\n return this._pushInt(tag, MT.TAG)\n }\n\n _pushDate (gen, obj) {\n // Round date, to get seconds since 1970-01-01 00:00:00 as defined in\n // Sec. 2.4.1 and get a possibly more compact encoding. Note that it is\n // still allowed to encode fractions of seconds which can be achieved by\n // changing overwriting the encode function for Date objects.\n return gen._pushTag(TAG.DATE_EPOCH) && gen.pushAny(Math.round(obj / 1000))\n }\n\n _pushBuffer (gen, obj) {\n return gen._pushInt(obj.length, MT.BYTE_STRING) && gen.push(obj)\n }\n\n _pushNoFilter (gen, obj) {\n return gen._pushBuffer(gen, obj.slice())\n }\n\n _pushRegexp (gen, obj) {\n return gen._pushTag(TAG.REGEXP) && gen.pushAny(obj.source)\n }\n\n _pushSet (gen, obj) {\n if (!gen._pushInt(obj.size, MT.ARRAY)) {\n return false\n }\n for (const x of obj) {\n if (!gen.pushAny(x)) {\n return false\n }\n }\n return true\n }\n\n _pushUrl (gen, obj) {\n return gen._pushTag(TAG.URI) && gen.pushAny(obj.format())\n }\n\n _pushBigint (obj) {\n let tag = TAG.POS_BIGINT\n if (obj.isNegative()) {\n obj = obj.negated().minus(1)\n tag = TAG.NEG_BIGINT\n }\n let str = obj.toString(16)\n if (str.length % 2) {\n str = '0' + str\n }\n const buf = Buffer.from(str, 'hex')\n return this._pushTag(tag) && this._pushBuffer(this, buf)\n }\n\n _pushBigNumber (gen, obj) {\n if (obj.isNaN()) {\n return gen._pushNaN()\n }\n if (!obj.isFinite()) {\n return gen._pushInfinity(obj.isNegative() ? -Infinity : Infinity)\n }\n if (obj.isInteger()) {\n return gen._pushBigint(obj)\n }\n if (!(gen._pushTag(TAG.DECIMAL_FRAC) &&\n gen._pushInt(2, MT.ARRAY))) {\n return false\n }\n\n const dec = obj.decimalPlaces()\n const slide = obj.multipliedBy(new Bignumber(10).pow(dec))\n if (!gen._pushIntNum(-dec)) {\n return false\n }\n if (slide.abs().isLessThan(MAXINT_BN)) {\n return gen._pushIntNum(slide.toNumber())\n } else {\n return gen._pushBigint(slide)\n }\n }\n\n _pushMap (gen, obj) {\n if (!gen._pushInt(obj.size, MT.MAP)) {\n return false\n }\n\n return this._pushRawMap(\n obj.size,\n Array.from(obj)\n )\n }\n\n _pushObject (obj) {\n if (!obj) {\n return this._pushUInt8(NULL)\n }\n\n var len = this.semanticTypes.length\n for (var i = 0; i < len; i++) {\n if (obj instanceof this.semanticTypes[i][0]) {\n return this.semanticTypes[i][1].call(obj, this, obj)\n }\n }\n\n var f = obj.encodeCBOR\n if (typeof f === 'function') {\n return f.call(obj, this)\n }\n\n var keys = Object.keys(obj)\n var keyLength = keys.length\n if (!this._pushInt(keyLength, MT.MAP)) {\n return false\n }\n\n return this._pushRawMap(\n keyLength,\n keys.map((k) => [k, obj[k]])\n )\n }\n\n _pushRawMap (len, map) {\n // Sort keys for canoncialization\n // 1. encode key\n // 2. shorter key comes before longer key\n // 3. same length keys are sorted with lower\n // byte value before higher\n\n map = map.map(function (a) {\n a[0] = Encoder.encode(a[0])\n return a\n }).sort(utils.keySorter)\n\n for (var j = 0; j < len; j++) {\n if (!this.push(map[j][0])) {\n return false\n }\n\n if (!this.pushAny(map[j][1])) {\n return false\n }\n }\n\n return true\n }\n\n /**\n * Alias for `.pushAny`\n *\n * @param {*} obj\n * @returns {boolean} true on success\n */\n write (obj) {\n return this.pushAny(obj)\n }\n\n /**\n * Push any supported type onto the encoded stream\n *\n * @param {any} obj\n * @returns {boolean} true on success\n */\n pushAny (obj) {\n var typ = toType(obj)\n\n switch (typ) {\n case 'Number':\n return this._pushNumber(obj)\n case 'String':\n return this._pushString(obj)\n case 'Boolean':\n return this._pushBoolean(obj)\n case 'Object':\n return this._pushObject(obj)\n case 'Array':\n return this._pushArray(this, obj)\n case 'Uint8Array':\n return this._pushBuffer(this, Buffer.isBuffer(obj) ? obj : Buffer.from(obj))\n case 'Null':\n return this._pushUInt8(NULL)\n case 'Undefined':\n return this._pushUndefined(obj)\n case 'Map':\n return this._pushMap(this, obj)\n case 'Set':\n return this._pushSet(this, obj)\n case 'URL':\n return this._pushUrl(this, obj)\n case 'BigNumber':\n return this._pushBigNumber(this, obj)\n case 'Date':\n return this._pushDate(this, obj)\n case 'RegExp':\n return this._pushRegexp(this, obj)\n case 'Symbol':\n switch (obj) {\n case SYMS.NULL:\n return this._pushObject(null)\n case SYMS.UNDEFINED:\n return this._pushUndefined(undefined)\n // TODO: Add pluggable support for other symbols\n default:\n throw new Error('Unknown symbol: ' + obj.toString())\n }\n default:\n throw new Error('Unknown type: ' + typeof obj + ', ' + (obj ? obj.toString() : ''))\n }\n }\n\n finalize () {\n if (this.offset === 0) {\n return null\n }\n\n var result = this.result\n var resultLength = this.resultLength\n var resultMethod = this.resultMethod\n var offset = this.offset\n\n // Determine the size of the buffer\n var size = 0\n var i = 0\n\n for (; i < offset; i++) {\n size += resultLength[i]\n }\n\n var res = Buffer.allocUnsafe(size)\n var index = 0\n var length = 0\n\n // Write the content into the result buffer\n for (i = 0; i < offset; i++) {\n length = resultLength[i]\n\n switch (resultMethod[i]) {\n case 0:\n result[i].copy(res, index)\n break\n case 1:\n res.writeUInt8(result[i], index, true)\n break\n case 2:\n res.writeUInt16BE(result[i], index, true)\n break\n case 3:\n res.writeUInt32BE(result[i], index, true)\n break\n case 4:\n res.writeDoubleBE(result[i], index, true)\n break\n case 5:\n res.write(result[i], index, length, 'utf8')\n break\n default:\n throw new Error('unkown method')\n }\n\n index += length\n }\n\n var tmp = res\n\n this._reset()\n\n return tmp\n }\n\n _reset () {\n this.result = []\n this.resultMethod = []\n this.resultLength = []\n this.offset = 0\n }\n\n /**\n * Encode the given value\n * @param {*} o\n * @returns {Buffer}\n */\n static encode (o) {\n const enc = new Encoder()\n const ret = enc.pushAny(o)\n if (!ret) {\n throw new Error('Failed to encode input')\n }\n\n return enc.finalize()\n }\n}\n\nmodule.exports = Encoder\n","'use strict'\n\n// exports.Commented = require('./commented')\nexports.Diagnose = require('./diagnose')\nexports.Decoder = require('./decoder')\nexports.Encoder = require('./encoder')\nexports.Simple = require('./simple')\nexports.Tagged = require('./tagged')\n\n// exports.comment = exports.Commented.comment\nexports.decodeAll = exports.Decoder.decodeAll\nexports.decodeFirst = exports.Decoder.decodeFirst\nexports.diagnose = exports.Diagnose.diagnose\nexports.encode = exports.Encoder.encode\nexports.decode = exports.Decoder.decode\n\nexports.leveldb = {\n decode: exports.Decoder.decodeAll,\n encode: exports.Encoder.encode,\n buffer: true,\n name: 'cbor'\n}\n","'use strict'\n\nconst constants = require('./constants')\nconst MT = constants.MT\nconst SIMPLE = constants.SIMPLE\nconst SYMS = constants.SYMS\n\n/**\n * A CBOR Simple Value that does not map onto a known constant.\n */\nclass Simple {\n /**\n * Creates an instance of Simple.\n *\n * @param {integer} value - the simple value's integer value\n */\n constructor (value) {\n if (typeof value !== 'number') {\n throw new Error('Invalid Simple type: ' + (typeof value))\n }\n if ((value < 0) || (value > 255) || ((value | 0) !== value)) {\n throw new Error('value must be a small positive integer: ' + value)\n }\n this.value = value\n }\n\n /**\n * Debug string for simple value\n *\n * @returns {string} simple(value)\n */\n toString () {\n return 'simple(' + this.value + ')'\n }\n\n /**\n * Debug string for simple value\n *\n * @returns {string} simple(value)\n */\n inspect () {\n return 'simple(' + this.value + ')'\n }\n\n /**\n * Push the simple value onto the CBOR stream\n *\n * @param {cbor.Encoder} gen The generator to push onto\n * @returns {number}\n */\n encodeCBOR (gen) {\n return gen._pushInt(this.value, MT.SIMPLE_FLOAT)\n }\n\n /**\n * Is the given object a Simple?\n *\n * @param {any} obj - object to test\n * @returns {bool} - is it Simple?\n */\n static isSimple (obj) {\n return obj instanceof Simple\n }\n\n /**\n * Decode from the CBOR additional information into a JavaScript value.\n * If the CBOR item has no parent, return a \"safe\" symbol instead of\n * `null` or `undefined`, so that the value can be passed through a\n * stream in object mode.\n *\n * @param {Number} val - the CBOR additional info to convert\n * @param {bool} hasParent - Does the CBOR item have a parent?\n * @returns {(null|undefined|Boolean|Symbol)} - the decoded value\n */\n static decode (val, hasParent) {\n if (hasParent == null) {\n hasParent = true\n }\n switch (val) {\n case SIMPLE.FALSE:\n return false\n case SIMPLE.TRUE:\n return true\n case SIMPLE.NULL:\n if (hasParent) {\n return null\n } else {\n return SYMS.NULL\n }\n case SIMPLE.UNDEFINED:\n if (hasParent) {\n return undefined\n } else {\n return SYMS.UNDEFINED\n }\n case -1:\n if (!hasParent) {\n throw new Error('Invalid BREAK')\n }\n return SYMS.BREAK\n default:\n return new Simple(val)\n }\n }\n}\n\nmodule.exports = Simple\n","'use strict'\n\n/**\n * A CBOR tagged item, where the tag does not have semantics specified at the\n * moment, or those semantics threw an error during parsing. Typically this will\n * be an extension point you're not yet expecting.\n */\nclass Tagged {\n /**\n * Creates an instance of Tagged.\n *\n * @param {Number} tag - the number of the tag\n * @param {any} value - the value inside the tag\n * @param {Error} err - the error that was thrown parsing the tag, or null\n */\n constructor (tag, value, err) {\n this.tag = tag\n this.value = value\n this.err = err\n if (typeof this.tag !== 'number') {\n throw new Error('Invalid tag type (' + (typeof this.tag) + ')')\n }\n if ((this.tag < 0) || ((this.tag | 0) !== this.tag)) {\n throw new Error('Tag must be a positive integer: ' + this.tag)\n }\n }\n\n /**\n * Convert to a String\n *\n * @returns {String} string of the form '1(2)'\n */\n toString () {\n return `${this.tag}(${JSON.stringify(this.value)})`\n }\n\n /**\n * Push the simple value onto the CBOR stream\n *\n * @param {cbor.Encoder} gen The generator to push onto\n * @returns {number}\n */\n encodeCBOR (gen) {\n gen._pushTag(this.tag)\n return gen.pushAny(this.value)\n }\n\n /**\n * If we have a converter for this type, do the conversion. Some converters\n * are built-in. Additional ones can be passed in. If you want to remove\n * a built-in converter, pass a converter in whose value is 'null' instead\n * of a function.\n *\n * @param {Object} converters - keys in the object are a tag number, the value\n * is a function that takes the decoded CBOR and returns a JavaScript value\n * of the appropriate type. Throw an exception in the function on errors.\n * @returns {any} - the converted item\n */\n convert (converters) {\n var er, f\n f = converters != null ? converters[this.tag] : undefined\n if (typeof f !== 'function') {\n f = Tagged['_tag' + this.tag]\n if (typeof f !== 'function') {\n return this\n }\n }\n try {\n return f.call(Tagged, this.value)\n } catch (error) {\n er = error\n this.err = er\n return this\n }\n }\n}\n\nmodule.exports = Tagged\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst constants = require('./constants')\nconst SHIFT32 = constants.SHIFT32\nconst SHIFT16 = constants.SHIFT16\nconst MAX_SAFE_HIGH = 0x1fffff\n\nexports.parseHalf = function parseHalf (buf) {\n var exp, mant, sign\n sign = buf[0] & 0x80 ? -1 : 1\n exp = (buf[0] & 0x7C) >> 2\n mant = ((buf[0] & 0x03) << 8) | buf[1]\n if (!exp) {\n return sign * 5.9604644775390625e-8 * mant\n } else if (exp === 0x1f) {\n return sign * (mant ? 0 / 0 : 2e308)\n } else {\n return sign * Math.pow(2, exp - 25) * (1024 + mant)\n }\n}\n\nfunction toHex (n) {\n if (n < 16) {\n return '0' + n.toString(16)\n }\n\n return n.toString(16)\n}\n\nexports.arrayBufferToBignumber = function (buf) {\n const len = buf.byteLength\n let res = ''\n for (let i = 0; i < len; i++) {\n res += toHex(buf[i])\n }\n\n return new Bignumber(res, 16)\n}\n\n// convert an Object into a Map\nexports.buildMap = (obj) => {\n const res = new Map()\n const keys = Object.keys(obj)\n const length = keys.length\n for (let i = 0; i < length; i++) {\n res.set(keys[i], obj[keys[i]])\n }\n return res\n}\n\nexports.buildInt32 = (f, g) => {\n return f * SHIFT16 + g\n}\n\nexports.buildInt64 = (f1, f2, g1, g2) => {\n const f = exports.buildInt32(f1, f2)\n const g = exports.buildInt32(g1, g2)\n\n if (f > MAX_SAFE_HIGH) {\n return new Bignumber(f).times(SHIFT32).plus(g)\n } else {\n return (f * SHIFT32) + g\n }\n}\n\nexports.writeHalf = function writeHalf (buf, half) {\n // assume 0, -0, NaN, Infinity, and -Infinity have already been caught\n\n // HACK: everyone settle in. This isn't going to be pretty.\n // Translate cn-cbor's C code (from Carsten Borman):\n\n // uint32_t be32;\n // uint16_t be16, u16;\n // union {\n // float f;\n // uint32_t u;\n // } u32;\n // u32.f = float_val;\n\n const u32 = Buffer.allocUnsafe(4)\n u32.writeFloatBE(half, 0)\n const u = u32.readUInt32BE(0)\n\n // if ((u32.u & 0x1FFF) == 0) { /* worth trying half */\n\n // hildjj: If the lower 13 bits are 0, we won't lose anything in the conversion\n if ((u & 0x1FFF) !== 0) {\n return false\n }\n\n // int s16 = (u32.u >> 16) & 0x8000;\n // int exp = (u32.u >> 23) & 0xff;\n // int mant = u32.u & 0x7fffff;\n\n var s16 = (u >> 16) & 0x8000 // top bit is sign\n const exp = (u >> 23) & 0xff // then 5 bits of exponent\n const mant = u & 0x7fffff\n\n // if (exp == 0 && mant == 0)\n // ; /* 0.0, -0.0 */\n\n // hildjj: zeros already handled. Assert if you don't believe me.\n\n // else if (exp >= 113 && exp <= 142) /* normalized */\n // s16 += ((exp - 112) << 10) + (mant >> 13);\n if ((exp >= 113) && (exp <= 142)) {\n s16 += ((exp - 112) << 10) + (mant >> 13)\n\n // else if (exp >= 103 && exp < 113) { /* denorm, exp16 = 0 */\n // if (mant & ((1 << (126 - exp)) - 1))\n // goto float32; /* loss of precision */\n // s16 += ((mant + 0x800000) >> (126 - exp));\n } else if ((exp >= 103) && (exp < 113)) {\n if (mant & ((1 << (126 - exp)) - 1)) {\n return false\n }\n s16 += ((mant + 0x800000) >> (126 - exp))\n\n // } else if (exp == 255 && mant == 0) { /* Inf */\n // s16 += 0x7c00;\n\n // hildjj: Infinity already handled\n\n // } else\n // goto float32; /* loss of range */\n } else {\n return false\n }\n\n // ensure_writable(3);\n // u16 = s16;\n // be16 = hton16p((const uint8_t*)&u16);\n buf.writeUInt16BE(s16, 0)\n return true\n}\n\nexports.keySorter = function (a, b) {\n var lenA = a[0].byteLength\n var lenB = b[0].byteLength\n\n if (lenA > lenB) {\n return 1\n }\n\n if (lenB > lenA) {\n return -1\n }\n\n return a[0].compare(b[0])\n}\n\n// Adapted from http://www.2ality.com/2012/03/signedzero.html\nexports.isNegativeZero = (x) => {\n return x === 0 && (1 / x < 0)\n}\n\nexports.nextPowerOf2 = (n) => {\n let count = 0\n // First n in the below condition is for\n // the case where n is 0\n if (n && !(n & (n - 1))) {\n return n\n }\n\n while (n !== 0) {\n n >>= 1\n count += 1\n }\n\n return 1 << count\n}\n","'use strict'\nconst Buffer = require('safe-buffer').Buffer\n\nmodule.exports = class BufferPipe {\n /**\n * Creates a new instance of a pipe\n * @param {Buffer} buf - an optional buffer to start with\n */\n constructor (buf = Buffer.from([])) {\n this.buffer = buf\n this._bytesRead = 0\n this._bytesWrote = 0\n }\n\n /**\n * read `num` number of bytes from the pipe\n * @param {Number} num\n * @return {Buffer}\n */\n read (num) {\n this._bytesRead += num\n const data = this.buffer.slice(0, num)\n this.buffer = this.buffer.slice(num)\n return data\n }\n\n /**\n * Wites a buffer to the pipe\n * @param {Buffer} buf\n */\n write (buf) {\n buf = Buffer.from(buf)\n this._bytesWrote += buf.length\n this.buffer = Buffer.concat([this.buffer, buf])\n }\n\n /**\n * Whether or not there is more data to read from the buffer\n * returns {Boolean}\n */\n get end () {\n return !this.buffer.length\n }\n\n /**\n * returns the number of bytes read from the stream\n * @return {Integer}\n */\n get bytesRead () {\n return this._bytesRead\n }\n\n /**\n * returns the number of bytes wrote to the stream\n * @return {Integer}\n */\n get bytesWrote () {\n return this._bytesWrote\n }\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'use strict';\n\nconst {\n URLWithLegacySupport,\n format,\n URLSearchParams,\n defaultBase\n} = require('./src/url');\nconst relative = require('./src/relative');\n\nmodule.exports = {\n URL: URLWithLegacySupport,\n URLSearchParams,\n format,\n relative,\n defaultBase\n};\n","'use strict';\n\nconst { URLWithLegacySupport, format } = require('./url');\n\nmodule.exports = (url, location = {}, protocolMap = {}, defaultProtocol) => {\n let protocol = location.protocol ?\n location.protocol.replace(':', '') :\n 'http';\n\n // Check protocol map\n protocol = (protocolMap[protocol] || defaultProtocol || protocol) + ':';\n let urlParsed;\n\n try {\n urlParsed = new URLWithLegacySupport(url);\n } catch (err) {\n urlParsed = {};\n }\n\n const base = Object.assign({}, location, {\n protocol: protocol || urlParsed.protocol,\n host: location.host || urlParsed.host\n });\n\n return new URLWithLegacySupport(url, format(base)).toString();\n};\n","'use strict';\n\nconst defaultBase = self.location ?\n self.location.protocol + '//' + self.location.host :\n '';\nconst URL = self.URL;\n\nclass URLWithLegacySupport {\n constructor(url = '', base = defaultBase) {\n this.super = new URL(url, base);\n this.path = this.pathname + this.search;\n this.auth =\n this.username && this.password ?\n this.username + ':' + this.password :\n null;\n\n this.query =\n this.search && this.search.startsWith('?') ?\n this.search.slice(1) :\n null;\n }\n\n get hash() {\n return this.super.hash;\n }\n get host() {\n return this.super.host;\n }\n get hostname() {\n return this.super.hostname;\n }\n get href() {\n return this.super.href;\n }\n get origin() {\n return this.super.origin;\n }\n get password() {\n return this.super.password;\n }\n get pathname() {\n return this.super.pathname;\n }\n get port() {\n return this.super.port;\n }\n get protocol() {\n return this.super.protocol;\n }\n get search() {\n return this.super.search;\n }\n get searchParams() {\n return this.super.searchParams;\n }\n get username() {\n return this.super.username;\n }\n\n set hash(hash) {\n this.super.hash = hash;\n }\n set host(host) {\n this.super.host = host;\n }\n set hostname(hostname) {\n this.super.hostname = hostname;\n }\n set href(href) {\n this.super.href = href;\n }\n set origin(origin) {\n this.super.origin = origin;\n }\n set password(password) {\n this.super.password = password;\n }\n set pathname(pathname) {\n this.super.pathname = pathname;\n }\n set port(port) {\n this.super.port = port;\n }\n set protocol(protocol) {\n this.super.protocol = protocol;\n }\n set search(search) {\n this.super.search = search;\n }\n set searchParams(searchParams) {\n this.super.searchParams = searchParams;\n }\n set username(username) {\n this.super.username = username;\n }\n\n createObjectURL(o) {\n return this.super.createObjectURL(o);\n }\n revokeObjectURL(o) {\n this.super.revokeObjectURL(o);\n }\n toJSON() {\n return this.super.toJSON();\n }\n toString() {\n return this.super.toString();\n }\n format() {\n return this.toString();\n }\n}\n\nfunction format(obj) {\n if (typeof obj === 'string') {\n const url = new URL(obj);\n\n return url.toString();\n }\n\n if (!(obj instanceof URL)) {\n const userPass =\n obj.username && obj.password ?\n `${obj.username}:${obj.password}@` :\n '';\n const auth = obj.auth ? obj.auth + '@' : '';\n const port = obj.port ? ':' + obj.port : '';\n const protocol = obj.protocol ? obj.protocol + '//' : '';\n const host = obj.host || '';\n const hostname = obj.hostname || '';\n const search = obj.search || (obj.query ? '?' + obj.query : '');\n const hash = obj.hash || '';\n const pathname = obj.pathname || '';\n const path = obj.path || pathname + search;\n\n return `${protocol}${userPass || auth}${host ||\n hostname + port}${path}${hash}`;\n }\n}\n\nmodule.exports = {\n URLWithLegacySupport,\n URLSearchParams: self.URLSearchParams,\n defaultBase,\n format\n};\n","/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.9.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var ERROR = 'input is invalid type';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (outputType, is224) {\n return function (message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n\n var createMethod = function (is224) {\n var method = createOutputMethod('hex', is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function () {\n return new Sha256(is224);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n\n var nodeWrap = function (method, is224) {\n var crypto = eval(\"require('crypto')\");\n var Buffer = eval(\"require('buffer').Buffer\");\n var algorithm = is224 ? 'sha224' : 'sha256';\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');\n } else {\n if (message === null || message === undefined) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n message.constructor === Buffer) {\n return crypto.createHash(algorithm).update(new Buffer(message)).digest('hex');\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n\n var createHmacOutputMethod = function (outputType, is224) {\n return function (key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n\n var createHmacMethod = function (is224) {\n var method = createHmacOutputMethod('hex', is224);\n method.create = function (key) {\n return new HmacSha256(key, is224);\n };\n method.update = function (key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n if (is224) {\n this.h0 = 0xc1059ed8;\n this.h1 = 0x367cd507;\n this.h2 = 0x3070dd17;\n this.h3 = 0xf70e5939;\n this.h4 = 0xffc00b31;\n this.h5 = 0x68581511;\n this.h6 = 0x64f98fa7;\n this.h7 = 0xbefa4fa4;\n } else { // 256\n this.h0 = 0x6a09e667;\n this.h1 = 0xbb67ae85;\n this.h2 = 0x3c6ef372;\n this.h3 = 0xa54ff53a;\n this.h4 = 0x510e527f;\n this.h5 = 0x9b05688c;\n this.h6 = 0x1f83d9ab;\n this.h7 = 0x5be0cd19;\n }\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n\n Sha256.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks = this.blocks;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha256.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha256.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,\n h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n for (j = 16; j < 64; ++j) {\n // rightrotate\n t1 = blocks[j - 15];\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n t1 = blocks[j - 2];\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n }\n\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n ab = a & b;\n maj = ab ^ (a & c) ^ bc;\n ch = (e & f) ^ (~e & g);\n t1 = h + s1 + ch + K[j] + blocks[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n da = d & a;\n maj = da ^ (d & b) ^ ab;\n ch = (h & e) ^ (~h & f);\n t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n cd = c & d;\n maj = cd ^ (c & a) ^ da;\n ch = (g & h) ^ (~g & e);\n t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n bc = b & c;\n maj = bc ^ (b & d) ^ cd;\n ch = (f & g) ^ (~f & h);\n t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n\n Sha256.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var hex = HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n HEX_CHARS[(h5 >> 28) & 0x0F] + HEX_CHARS[(h5 >> 24) & 0x0F] +\n HEX_CHARS[(h5 >> 20) & 0x0F] + HEX_CHARS[(h5 >> 16) & 0x0F] +\n HEX_CHARS[(h5 >> 12) & 0x0F] + HEX_CHARS[(h5 >> 8) & 0x0F] +\n HEX_CHARS[(h5 >> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n HEX_CHARS[(h6 >> 28) & 0x0F] + HEX_CHARS[(h6 >> 24) & 0x0F] +\n HEX_CHARS[(h6 >> 20) & 0x0F] + HEX_CHARS[(h6 >> 16) & 0x0F] +\n HEX_CHARS[(h6 >> 12) & 0x0F] + HEX_CHARS[(h6 >> 8) & 0x0F] +\n HEX_CHARS[(h6 >> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n if (!this.is224) {\n hex += HEX_CHARS[(h7 >> 28) & 0x0F] + HEX_CHARS[(h7 >> 24) & 0x0F] +\n HEX_CHARS[(h7 >> 20) & 0x0F] + HEX_CHARS[(h7 >> 16) & 0x0F] +\n HEX_CHARS[(h7 >> 12) & 0x0F] + HEX_CHARS[(h7 >> 8) & 0x0F] +\n HEX_CHARS[(h7 >> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n }\n return hex;\n };\n\n Sha256.prototype.toString = Sha256.prototype.hex;\n\n Sha256.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var arr = [\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, h5 & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, h6 & 0xFF\n ];\n if (!this.is224) {\n arr.push((h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, h7 & 0xFF);\n }\n return arr;\n };\n\n Sha256.prototype.array = Sha256.prototype.digest;\n\n Sha256.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === 'string') {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 0x80) {\n bytes[index++] = code;\n } else if (code < 0x800) {\n bytes[index++] = (0xc0 | (code >> 6));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes[index++] = (0xe0 | (code >> 12));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n bytes[index++] = (0xf0 | (code >> 18));\n bytes[index++] = (0x80 | ((code >> 12) & 0x3f));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n }\n }\n key = bytes;\n } else {\n if (type === 'object') {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n\n if (key.length > 64) {\n key = (new Sha256(is224, true)).update(key).array();\n }\n\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n\n Sha256.call(this, is224, sharedMemory);\n\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n\n HmacSha256.prototype.finalize = function () {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n\n var exports = createMethod();\n exports.sha256 = exports;\n exports.sha224 = createMethod(true);\n exports.sha256.hmac = createHmacMethod();\n exports.sha224.hmac = createHmacMethod(true);\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha256 = exports.sha256;\n root.sha224 = exports.sha224;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./serializer\"));\nconst value = __importStar(require(\"./value\"));\nexports.value = value;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst cbor = __importStar(require(\"./value\"));\nconst BufferClasses = [\n ArrayBuffer,\n Uint8Array,\n Uint16Array,\n Uint32Array,\n Int8Array,\n Int16Array,\n Int32Array,\n Float32Array,\n Float64Array,\n];\nclass JsonDefaultCborEncoder {\n // @param _serializer The CBOR Serializer to use.\n // @param _stable Whether or not keys from objects should be sorted (stable). This is\n // particularly useful when testing encodings between JSON objects.\n constructor(_serializer, _stable = false) {\n this._serializer = _serializer;\n this._stable = _stable;\n this.name = \"jsonDefault\";\n this.priority = -100;\n }\n match(value) {\n return [\"undefined\", \"boolean\", \"number\", \"string\", \"object\"].indexOf(typeof value) != -1;\n }\n encode(value) {\n switch (typeof value) {\n case \"undefined\":\n return cbor.undefined_();\n case \"boolean\":\n return cbor.bool(value);\n case \"number\":\n if (Math.floor(value) === value) {\n return cbor.number(value);\n }\n else {\n return cbor.doubleFloat(value);\n }\n case \"string\":\n return cbor.string(value);\n case \"object\":\n if (value === null) {\n return cbor.null_();\n }\n else if (Array.isArray(value)) {\n return cbor.array(value.map((x) => this._serializer.serializeValue(x)));\n }\n else if (BufferClasses.find((x) => value instanceof x)) {\n return cbor.bytes(value.buffer);\n }\n else if (Object.getOwnPropertyNames(value).indexOf(\"toJSON\") !== -1) {\n return this.encode(value.toJSON());\n }\n else if (value instanceof Map) {\n const m = new Map();\n for (const [key, item] of value.entries()) {\n m.set(key, this._serializer.serializeValue(item));\n }\n return cbor.map(m, this._stable);\n }\n else {\n const m = new Map();\n for (const [key, item] of Object.entries(value)) {\n m.set(key, this._serializer.serializeValue(item));\n }\n return cbor.map(m, this._stable);\n }\n default:\n throw new Error(\"Invalid value.\");\n }\n }\n}\nexports.JsonDefaultCborEncoder = JsonDefaultCborEncoder;\nclass ToCborEncoder {\n constructor() {\n this.name = \"cborEncoder\";\n this.priority = -90;\n }\n match(value) {\n return typeof value == \"object\" && typeof value[\"toCBOR\"] == \"function\";\n }\n encode(value) {\n return value.toCBOR();\n }\n}\nexports.ToCborEncoder = ToCborEncoder;\nclass CborSerializer {\n constructor() {\n this._encoders = new Set();\n }\n static withDefaultEncoders(stable = false) {\n const s = new this();\n s.addEncoder(new JsonDefaultCborEncoder(s, stable));\n s.addEncoder(new ToCborEncoder());\n return s;\n }\n removeEncoder(name) {\n // Has to make an extra call to values() to ensure it doesn't break on iteration.\n for (const encoder of this._encoders.values()) {\n if (encoder.name == name) {\n this._encoders.delete(encoder);\n }\n }\n }\n addEncoder(encoder) {\n this._encoders.add(encoder);\n }\n getEncoderFor(value) {\n let chosenEncoder = null;\n for (const encoder of this._encoders) {\n if (!chosenEncoder || encoder.priority > chosenEncoder.priority) {\n if (encoder.match(value)) {\n chosenEncoder = encoder;\n }\n }\n }\n if (chosenEncoder === null) {\n throw new Error(\"Could not find an encoder for value.\");\n }\n return chosenEncoder;\n }\n serializeValue(value) {\n return this.getEncoderFor(value).encode(value);\n }\n serialize(value) {\n return this.serializeValue(value);\n }\n}\nexports.CborSerializer = CborSerializer;\nclass SelfDescribeCborSerializer extends CborSerializer {\n serialize(value) {\n return cbor.raw(new Uint8Array([\n // Self describe CBOR.\n ...new Uint8Array([0xd9, 0xd9, 0xf7]),\n ...new Uint8Array(super.serializeValue(value)),\n ]));\n }\n}\nexports.SelfDescribeCborSerializer = SelfDescribeCborSerializer;\n//# sourceMappingURL=serializer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst MAX_U64_NUMBER = 0x20000000000000;\nfunction _concat(a, ...args) {\n const newBuffer = new Uint8Array(a.byteLength + args.reduce((acc, b) => acc + b.byteLength, 0));\n newBuffer.set(new Uint8Array(a), 0);\n let i = a.byteLength;\n for (const b of args) {\n newBuffer.set(new Uint8Array(b), i);\n i += b.byteLength;\n }\n return newBuffer.buffer;\n}\nfunction _serializeValue(major, minor, value) {\n // Remove everything that's not an hexadecimal character. These are not\n // considered errors since the value was already validated and they might\n // be number decimals or sign.\n value = value.replace(/[^0-9a-fA-F]/g, \"\");\n // Create the buffer from the value with left padding with 0.\n const length = 2 ** (minor - 24 /* Int8 */);\n value = value.slice(-length * 2).padStart(length * 2, \"0\");\n const bytes = [(major << 5) + minor].concat(value.match(/../g).map((byte) => parseInt(byte, 16)));\n return new Uint8Array(bytes).buffer;\n}\nfunction _serializeNumber(major, value) {\n if (value < 24) {\n return new Uint8Array([(major << 5) + value]).buffer;\n }\n else {\n const minor = value <= 0xff\n ? 24 /* Int8 */\n : value <= 0xffff\n ? 25 /* Int16 */\n : value <= 0xffffffff\n ? 26 /* Int32 */\n : 27 /* Int64 */;\n return _serializeValue(major, minor, value.toString(16));\n }\n}\nfunction _serializeString(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 0x80) {\n utf8.push(charcode);\n }\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6), 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));\n }\n else {\n // Surrogate pair\n i++;\n charcode = ((charcode & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff);\n utf8.push(0xf0 | (charcode >> 18), 0x80 | ((charcode >> 12) & 0x3f), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));\n }\n }\n return _concat(new Uint8Array(_serializeNumber(3 /* TextString */, str.length)), new Uint8Array(utf8));\n}\n/**\n * Tag a value.\n */\nfunction tagged(tag, value) {\n if (tag == 0xd9d9f7) {\n return _concat(new Uint8Array([0xd9, 0xd9, 0xf7]), value);\n }\n if (tag < 24) {\n return _concat(new Uint8Array([(6 /* Tag */ << 5) + tag]), value);\n }\n else {\n const minor = tag <= 0xff\n ? 24 /* Int8 */\n : tag <= 0xffff\n ? 25 /* Int16 */\n : tag <= 0xffffffff\n ? 26 /* Int32 */\n : 27 /* Int64 */;\n const length = 2 ** (minor - 24 /* Int8 */);\n const value = tag\n .toString(16)\n .slice(-length * 2)\n .padStart(length * 2, \"0\");\n const bytes = [(6 /* Tag */ << 5) + minor].concat(value.match(/../g).map((byte) => parseInt(byte, 16)));\n return new Uint8Array(bytes).buffer;\n }\n}\nexports.tagged = tagged;\n/**\n * Set the raw bytes contained by this value. This should only be used with another\n * CborValue, or if you are implementing extensions to CBOR.\n * @param bytes A buffer containing the value.\n */\nfunction raw(bytes) {\n return new Uint8Array(bytes).buffer;\n}\nexports.raw = raw;\n/**\n * Encode a number that is between [0, 23].\n * @param n\n */\nfunction uSmall(n) {\n if (isNaN(n)) {\n throw new RangeError(\"Invalid number.\");\n }\n n = Math.min(Math.max(0, n), 23); // Clamp it.\n const bytes = [(0 /* UnsignedInteger */ << 5) + n];\n return new Uint8Array(bytes).buffer;\n}\nexports.uSmall = uSmall;\nfunction u8(u8, radix) {\n // Force u8 into a number, and validate it.\n u8 = parseInt(\"\" + u8, radix);\n if (isNaN(u8)) {\n throw new RangeError(\"Invalid number.\");\n }\n u8 = Math.min(Math.max(0, u8), 0xff); // Clamp it.\n u8 = u8.toString(16);\n return _serializeValue(0 /* UnsignedInteger */, 24 /* Int8 */, u8);\n}\nexports.u8 = u8;\nfunction u16(u16, radix) {\n // Force u16 into a number, and validate it.\n u16 = parseInt(\"\" + u16, radix);\n if (isNaN(u16)) {\n throw new RangeError(\"Invalid number.\");\n }\n u16 = Math.min(Math.max(0, u16), 0xffff); // Clamp it.\n u16 = u16.toString(16);\n return _serializeValue(0 /* UnsignedInteger */, 25 /* Int16 */, u16);\n}\nexports.u16 = u16;\nfunction u32(u32, radix) {\n // Force u32 into a number, and validate it.\n u32 = parseInt(\"\" + u32, radix);\n if (isNaN(u32)) {\n throw new RangeError(\"Invalid number.\");\n }\n u32 = Math.min(Math.max(0, u32), 0xffffffff); // Clamp it.\n u32 = u32.toString(16);\n return _serializeValue(0 /* UnsignedInteger */, 26 /* Int32 */, u32);\n}\nexports.u32 = u32;\nfunction u64(u64, radix) {\n // Special consideration for numbers that might be larger than expected.\n if (typeof u64 == \"string\" && radix == 16) {\n // This is the only case where we guarantee we'll encode the number directly.\n // Validate it's all hexadecimal first.\n if (u64.match(/[^0-9a-fA-F]/)) {\n throw new RangeError(\"Invalid number.\");\n }\n return _serializeValue(0 /* UnsignedInteger */, 27 /* Int64 */, u64);\n }\n // Force u64 into a number, and validate it.\n u64 = parseInt(\"\" + u64, radix);\n if (isNaN(u64)) {\n throw new RangeError(\"Invalid number.\");\n }\n u64 = Math.min(Math.max(0, u64), MAX_U64_NUMBER); // Clamp it to actual limit.\n u64 = u64.toString(16);\n return _serializeValue(0 /* UnsignedInteger */, 27 /* Int64 */, u64);\n}\nexports.u64 = u64;\n/**\n * Encode a negative number that is between [-24, -1].\n */\nfunction iSmall(n) {\n if (isNaN(n)) {\n throw new RangeError(\"Invalid number.\");\n }\n if (n === 0) {\n return uSmall(0);\n }\n // Negative n, clamped to [1, 24], minus 1 (there's no negative 0).\n n = Math.min(Math.max(0, -n), 24) - 1;\n const bytes = [(1 /* SignedInteger */ << 5) + n];\n return new Uint8Array(bytes).buffer;\n}\nexports.iSmall = iSmall;\nfunction i8(i8, radix) {\n // Force i8 into a number, and validate it.\n i8 = parseInt(\"\" + i8, radix);\n if (isNaN(i8)) {\n throw new RangeError(\"Invalid number.\");\n }\n // Negative n, clamped, minus 1 (there's no negative 0).\n i8 = Math.min(Math.max(0, -i8 - 1), 0xff);\n i8 = i8.toString(16);\n return _serializeValue(1 /* SignedInteger */, 24 /* Int8 */, i8);\n}\nexports.i8 = i8;\nfunction i16(i16, radix) {\n // Force i16 into a number, and validate it.\n i16 = parseInt(\"\" + i16, radix);\n if (isNaN(i16)) {\n throw new RangeError(\"Invalid number.\");\n }\n // Negative n, clamped, minus 1 (there's no negative 0).\n i16 = Math.min(Math.max(0, -i16 - 1), 0xffff);\n i16 = i16.toString(16);\n return _serializeValue(1 /* SignedInteger */, 25 /* Int16 */, i16);\n}\nexports.i16 = i16;\nfunction i32(i32, radix) {\n // Force i32 into a number, and validate it.\n i32 = parseInt(\"\" + i32, radix);\n if (isNaN(i32)) {\n throw new RangeError(\"Invalid number.\");\n }\n // Negative n, clamped, minus 1 (there's no negative 0).\n i32 = Math.min(Math.max(0, -i32 - 1), 0xffffffff);\n i32 = i32.toString(16);\n return _serializeValue(1 /* SignedInteger */, 26 /* Int32 */, i32);\n}\nexports.i32 = i32;\nfunction i64(i64, radix) {\n // Special consideration for numbers that might be larger than expected.\n if (typeof i64 == \"string\" && radix == 16) {\n if (i64.startsWith(\"-\")) {\n i64 = i64.slice(1);\n }\n else {\n // Clamp it.\n i64 = \"0\";\n }\n // This is the only case where we guarantee we'll encode the number directly.\n // Validate it's all hexadecimal first.\n if (i64.match(/[^0-9a-fA-F]/) || i64.length > 16) {\n throw new RangeError(\"Invalid number.\");\n }\n // We need to do -1 to the number.\n let done = false;\n let newI64 = i64.split(\"\").reduceRight((acc, x) => {\n if (done) {\n return x + acc;\n }\n let n = parseInt(x, 16) - 1;\n if (n >= 0) {\n done = true;\n return n.toString(16) + acc;\n }\n else {\n return \"f\" + acc;\n }\n }, \"\");\n if (!done) {\n // This number was 0.\n return u64(0);\n }\n return _serializeValue(1 /* SignedInteger */, 27 /* Int64 */, newI64);\n }\n // Force i64 into a number, and validate it.\n i64 = parseInt(\"\" + i64, radix);\n if (isNaN(i64)) {\n throw new RangeError(\"Invalid number.\");\n }\n i64 = Math.min(Math.max(0, -i64 - 1), 0x20000000000000); // Clamp it to actual.\n i64 = i64.toString(16);\n return _serializeValue(1 /* SignedInteger */, 27 /* Int64 */, i64);\n}\nexports.i64 = i64;\n/**\n * Encode a number using the smallest amount of bytes, by calling the methods\n * above. e.g. If the number fits in a u8, it will use that.\n */\nfunction number(n) {\n if (n >= 0) {\n if (n < 24) {\n return uSmall(n);\n }\n else if (n <= 0xff) {\n return u8(n);\n }\n else if (n <= 0xffff) {\n return u16(n);\n }\n else if (n <= 0xffffffff) {\n return u32(n);\n }\n else {\n return u64(n);\n }\n }\n else {\n if (n >= -24) {\n return iSmall(n);\n }\n else if (n >= -0xff) {\n return i8(n);\n }\n else if (n >= -0xffff) {\n return i16(n);\n }\n else if (n >= -0xffffffff) {\n return i32(n);\n }\n else {\n return i64(n);\n }\n }\n}\nexports.number = number;\n/**\n * Encode a byte array. This is different than the `raw()` method.\n */\nfunction bytes(bytes) {\n return _concat(_serializeNumber(2 /* ByteString */, bytes.byteLength), bytes);\n}\nexports.bytes = bytes;\n/**\n * Encode a JavaScript string.\n */\nfunction string(str) {\n return _serializeString(str);\n}\nexports.string = string;\n/**\n * Encode an array of cbor values.\n */\nfunction array(items) {\n return _concat(_serializeNumber(4 /* Array */, items.length), ...items);\n}\nexports.array = array;\n/**\n * Encode a map of key-value pairs. The keys are string, and the values are CBOR\n * encoded.\n */\nfunction map(items, stable = false) {\n if (!(items instanceof Map)) {\n items = new Map(Object.entries(items));\n }\n let entries = Array.from(items.entries());\n if (stable) {\n entries = entries.sort(([keyA], [keyB]) => keyA.localeCompare(keyB));\n }\n return _concat(_serializeNumber(5 /* Map */, items.size), ...entries.map(([k, v]) => _concat(_serializeString(k), v)));\n}\nexports.map = map;\n/**\n * Encode a single (32 bits) precision floating point number.\n */\nfunction singleFloat(f) {\n const single = new Float32Array([f]);\n return _concat(new Uint8Array([(7 /* SimpleValue */ << 5) + 26]), new Uint8Array(single.buffer));\n}\nexports.singleFloat = singleFloat;\n/**\n * Encode a double (64 bits) precision floating point number.\n */\nfunction doubleFloat(f) {\n const single = new Float64Array([f]);\n return _concat(new Uint8Array([(7 /* SimpleValue */ << 5) + 27]), new Uint8Array(single.buffer));\n}\nexports.doubleFloat = doubleFloat;\nfunction bool(v) {\n return v ? true_() : false_();\n}\nexports.bool = bool;\n/**\n * Encode the boolean true.\n */\nfunction true_() {\n return raw(new Uint8Array([(7 /* SimpleValue */ << 5) + 21]));\n}\nexports.true_ = true_;\n/**\n * Encode the boolean false.\n */\nfunction false_() {\n return raw(new Uint8Array([(7 /* SimpleValue */ << 5) + 20]));\n}\nexports.false_ = false_;\n/**\n * Encode the constant null.\n */\nfunction null_() {\n return raw(new Uint8Array([(7 /* SimpleValue */ << 5) + 22]));\n}\nexports.null_ = null_;\n/**\n * Encode the constant undefined.\n */\nfunction undefined_() {\n return raw(new Uint8Array([(7 /* SimpleValue */ << 5) + 23]));\n}\nexports.undefined_ = undefined_;\n//# sourceMappingURL=value.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Codes used by the replica for rejecting a message.\n * See {@link https://sdk.dfinity.org/docs/interface-spec/#reject-codes | the interface spec}.\n */\nexport var ReplicaRejectCode;\n(function (ReplicaRejectCode) {\n ReplicaRejectCode[ReplicaRejectCode[\"SysFatal\"] = 1] = \"SysFatal\";\n ReplicaRejectCode[ReplicaRejectCode[\"SysTransient\"] = 2] = \"SysTransient\";\n ReplicaRejectCode[ReplicaRejectCode[\"DestinationInvalid\"] = 3] = \"DestinationInvalid\";\n ReplicaRejectCode[ReplicaRejectCode[\"CanisterReject\"] = 4] = \"CanisterReject\";\n ReplicaRejectCode[ReplicaRejectCode[\"CanisterError\"] = 5] = \"CanisterError\";\n})(ReplicaRejectCode || (ReplicaRejectCode = {}));\n//# sourceMappingURL=api.js.map","import { sha256 as jsSha256 } from 'js-sha256';\nimport borc from 'borc';\nimport { Buffer } from 'buffer/';\nimport { blobFromBuffer, blobFromUint8Array, blobToHex, lebEncode, } from '@dfinity/candid';\nimport { Principal } from '@dfinity/principal';\n/**\n * get RequestId as hex-encoded blob.\n * @param requestId - RequestId to hex\n */\nexport function toHex(requestId) {\n return blobToHex(requestId);\n}\n/**\n * sha256 hash the provided Buffer\n * @param data - input to hash function\n */\nexport function hash(data) {\n const hashed = jsSha256.create().update(data).arrayBuffer();\n return blobFromUint8Array(new Uint8Array(hashed));\n}\nfunction hashValue(value) {\n if (value instanceof borc.Tagged) {\n return hashValue(value.value);\n }\n else if (typeof value === 'string') {\n return hashString(value);\n }\n else if (typeof value === 'number') {\n return hash(lebEncode(value));\n }\n else if (Buffer.isBuffer(value)) {\n return hash(blobFromUint8Array(new Uint8Array(value)));\n }\n else if (value instanceof Uint8Array || value instanceof ArrayBuffer) {\n return hash(blobFromUint8Array(new Uint8Array(value)));\n }\n else if (Array.isArray(value)) {\n const vals = value.map(hashValue);\n return hash(Buffer.concat(vals));\n }\n else if (value instanceof Principal) {\n return hash(blobFromUint8Array(value.toUint8Array()));\n }\n else if (typeof value === 'object' &&\n value !== null &&\n typeof value.toHash === 'function') {\n return hashValue(value.toHash());\n // TODO This should be move to a specific async method as the webauthn flow required\n // the flow to be synchronous to ensure Safari touch id works.\n // } else if (value instanceof Promise) {\n // return value.then(x => hashValue(x));\n }\n else if (typeof value === 'bigint') {\n // Do this check much later than the other bigint check because this one is much less\n // type-safe.\n // So we want to try all the high-assurance type guards before this 'probable' one.\n return hash(lebEncode(value));\n }\n throw Object.assign(new Error(`Attempt to hash a value of unsupported type: ${value}`), {\n // include so logs/callers can understand the confusing value.\n // (when stringified in error message, prototype info is lost)\n value,\n });\n}\nconst hashString = (value) => {\n const encoder = new TextEncoder();\n const encoded = encoder.encode(value);\n return hash(Buffer.from(encoded));\n};\n/**\n * Concatenate many blobs.\n * @param bs - blobs to concatenate\n */\nfunction concat(bs) {\n return blobFromBuffer(Buffer.concat(bs));\n}\n/**\n * Get the RequestId of the provided ic-ref request.\n * RequestId is the result of the representation-independent-hash function.\n * https://sdk.dfinity.org/docs/interface-spec/index.html#hash-of-map\n * @param request - ic-ref request to hash into RequestId\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function requestIdOf(request) {\n const hashed = Object.entries(request)\n .filter(([, value]) => value !== undefined)\n .map(([key, value]) => {\n const hashedKey = hashString(key);\n const hashedValue = hashValue(value);\n return [hashedKey, hashedValue];\n });\n const traversed = hashed;\n const sorted = traversed.sort(([k1], [k2]) => {\n return Buffer.compare(Buffer.from(k1), Buffer.from(k2));\n });\n const concatenated = concat(sorted.map(concat));\n const requestId = hash(concatenated);\n return requestId;\n}\n//# sourceMappingURL=request_id.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Buffer } from 'buffer/';\nimport { Principal } from '@dfinity/principal';\nimport { requestIdOf } from './request_id';\nimport { blobFromBuffer } from '@dfinity/candid';\nconst domainSeparator = Buffer.from(new TextEncoder().encode('\\x0Aic-request'));\n/**\n * An Identity that can sign blobs.\n */\nexport class SignIdentity {\n /**\n * Get the principal represented by this identity. Normally should be a\n * `Principal.selfAuthenticating()`.\n */\n getPrincipal() {\n if (!this._principal) {\n this._principal = Principal.selfAuthenticating(this.getPublicKey().toDer());\n }\n return this._principal;\n }\n /**\n * Transform a request into a signed version of the request. This is done last\n * after the transforms on the body of a request. The returned object can be\n * anything, but must be serializable to CBOR.\n * @param request - internet computer request to transform\n */\n async transformRequest(request) {\n const { body } = request, fields = __rest(request, [\"body\"]);\n const requestId = await requestIdOf(body);\n return Object.assign(Object.assign({}, fields), { body: {\n content: body,\n sender_pubkey: this.getPublicKey().toDer(),\n sender_sig: await this.sign(blobFromBuffer(Buffer.concat([domainSeparator, requestId]))),\n } });\n }\n}\nexport class AnonymousIdentity {\n getPrincipal() {\n return Principal.anonymous();\n }\n async transformRequest(request) {\n return Object.assign(Object.assign({}, request), { body: { content: request.body } });\n }\n}\n/**\n * Create an IdentityDescriptor from a @dfinity/authentication Identity\n * @param identity - identity describe in returned descriptor\n */\nexport function createIdentityDescriptor(identity) {\n const identityIndicator = 'getPublicKey' in identity\n ? { type: 'PublicKeyIdentity', publicKey: identity.getPublicKey().toDer().toString('hex') }\n : { type: 'AnonymousIdentity' };\n return identityIndicator;\n}\n/**\n * Type Guard for whether the unknown value is an IdentityDescriptor or not.\n * @param value - value to type guard\n */\nexport function isIdentityDescriptor(value) {\n var _a, _b;\n switch ((_a = value) === null || _a === void 0 ? void 0 : _a.type) {\n case 'AnonymousIdentity':\n return true;\n case 'PublicKeyIdentity':\n if (typeof ((_b = value) === null || _b === void 0 ? void 0 : _b.publicKey) !== 'string') {\n return false;\n }\n return true;\n }\n return false;\n}\n//# sourceMappingURL=auth.js.map","// tslint:disable:max-classes-per-file\n// This file is based on:\n// tslint:disable-next-line: max-line-length\n// https://github.com/dfinity-lab/dfinity/blob/9bca65f8edd65701ea6bdb00e0752f9186bbc893/docs/spec/public/index.adoc#cbor-encoding-of-requests-and-responses\nimport borc from 'borc';\nimport { Buffer } from 'buffer/';\nimport * as cbor from 'simple-cbor';\nimport { SelfDescribeCborSerializer } from 'simple-cbor';\nimport { blobFromBuffer, blobFromHex } from '@dfinity/candid';\n// We are using hansl/simple-cbor for CBOR serialization, to avoid issues with\n// encoding the uint64 values that the HTTP handler of the client expects for\n// canister IDs. However, simple-cbor does not yet provide deserialization so\n// we are using `Uint8Array` so that we can use the dignifiedquire/borc CBOR\n// decoder.\nclass PrincipalEncoder {\n get name() {\n return 'Principal';\n }\n get priority() {\n return 0;\n }\n match(value) {\n return value && value._isPrincipal === true;\n }\n encode(v) {\n return cbor.value.bytes(v.toUint8Array().buffer);\n }\n}\nclass BufferEncoder {\n get name() {\n return 'Buffer';\n }\n get priority() {\n return 1;\n }\n match(value) {\n return Buffer.isBuffer(value);\n }\n encode(v) {\n return cbor.value.bytes(new Uint8Array(v));\n }\n}\nclass BigIntEncoder {\n get name() {\n return 'BigInt';\n }\n get priority() {\n return 1;\n }\n match(value) {\n return typeof value === `bigint`;\n }\n encode(v) {\n // Always use a bigint encoding.\n if (v > BigInt(0)) {\n return cbor.value.tagged(2, cbor.value.bytes(blobFromHex(v.toString(16))));\n }\n else {\n return cbor.value.tagged(3, cbor.value.bytes(blobFromHex((BigInt('-1') * v).toString(16))));\n }\n }\n}\nconst serializer = SelfDescribeCborSerializer.withDefaultEncoders(true);\nserializer.addEncoder(new PrincipalEncoder());\nserializer.addEncoder(new BufferEncoder());\nserializer.addEncoder(new BigIntEncoder());\nexport var CborTag;\n(function (CborTag) {\n CborTag[CborTag[\"Uint64LittleEndian\"] = 71] = \"Uint64LittleEndian\";\n CborTag[CborTag[\"Semantic\"] = 55799] = \"Semantic\";\n})(CborTag || (CborTag = {}));\nexport const encode = (value) => {\n return blobFromBuffer(Buffer.from(serializer.serialize(value)));\n};\nfunction decodePositiveBigInt(buf) {\n const len = buf.byteLength;\n let res = BigInt(0);\n for (let i = 0; i < len; i++) {\n // tslint:disable-next-line:no-bitwise\n res = res * BigInt(0x100) + BigInt(buf[i]);\n }\n return res;\n}\nexport function decode(input) {\n const decoder = new borc.Decoder({\n size: input.byteLength,\n tags: {\n // Override tags 2 and 3 for BigInt support (borc supports only BigNumber).\n 2: val => decodePositiveBigInt(val),\n 3: val => -decodePositiveBigInt(val),\n [CborTag.Semantic]: (value) => value,\n },\n });\n const result = decoder.decodeFirst(input);\n return result;\n}\n//# sourceMappingURL=cbor.js.map","import * as cbor from 'simple-cbor';\nimport { makeNonce, lebEncode } from '@dfinity/candid';\nconst NANOSECONDS_PER_MILLISECONDS = BigInt(1000000);\nconst REPLICA_PERMITTED_DRIFT_MILLISECONDS = BigInt(60 * 1000);\nexport class Expiry {\n constructor(deltaInMSec) {\n // Use bigint because it can overflow the maximum number allowed in a double float.\n this._value =\n (BigInt(Date.now()) + BigInt(deltaInMSec) - REPLICA_PERMITTED_DRIFT_MILLISECONDS) *\n NANOSECONDS_PER_MILLISECONDS;\n }\n toCBOR() {\n // TODO: change this to take the minimum amount of space (it always takes 8 bytes now).\n return cbor.value.u64(this._value.toString(16), 16);\n }\n toHash() {\n return lebEncode(this._value);\n }\n}\n/**\n * Create a Nonce transform, which takes a function that returns a Buffer, and adds it\n * as the nonce to every call requests.\n * @param nonceFn A function that returns a buffer. By default uses a semi-random method.\n */\nexport function makeNonceTransform(nonceFn = makeNonce) {\n return async (request) => {\n // Nonce are only useful for async calls, to prevent replay attacks. Other types of\n // calls don't need Nonce so we just skip creating one.\n if (request.endpoint === \"call\" /* Call */) {\n request.body.nonce = nonceFn();\n }\n };\n}\n/**\n * Create a transform that adds a delay (by default 5 minutes) to the expiry.\n *\n * @param delayInMilliseconds The delay to add to the call time, in milliseconds.\n */\nexport function makeExpiryTransform(delayInMilliseconds) {\n return async (request) => {\n request.body.ingress_expiry = new Expiry(delayInMilliseconds);\n };\n}\n//# sourceMappingURL=transforms.js.map","// tslint:enable:camel-case\n// The types of values allowed in the `request_type` field for submit requests.\nexport var SubmitRequestType;\n(function (SubmitRequestType) {\n SubmitRequestType[\"Call\"] = \"call\";\n})(SubmitRequestType || (SubmitRequestType = {}));\n//# sourceMappingURL=types.js.map","import { Buffer } from 'buffer/';\nimport { AnonymousIdentity } from '../../auth';\nimport * as cbor from '../../cbor';\nimport { Principal } from '@dfinity/principal';\nimport { requestIdOf } from '../../request_id';\nimport { blobFromHex, blobFromUint8Array } from '@dfinity/candid';\nimport { Expiry } from './transforms';\nimport { SubmitRequestType, } from './types';\nexport * from './transforms';\nexport var RequestStatusResponseStatus;\n(function (RequestStatusResponseStatus) {\n RequestStatusResponseStatus[\"Received\"] = \"received\";\n RequestStatusResponseStatus[\"Processing\"] = \"processing\";\n RequestStatusResponseStatus[\"Replied\"] = \"replied\";\n RequestStatusResponseStatus[\"Rejected\"] = \"rejected\";\n RequestStatusResponseStatus[\"Unknown\"] = \"unknown\";\n RequestStatusResponseStatus[\"Done\"] = \"done\";\n})(RequestStatusResponseStatus || (RequestStatusResponseStatus = {}));\n// Default delta for ingress expiry is 5 minutes.\nconst DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS = 5 * 60 * 1000;\n// Root public key for the IC, encoded as hex\nconst IC_ROOT_KEY = '308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100814' +\n 'c0e6ec71fab583b08bd81373c255c3c371b2e84863c98a4f1e08b74235d14fb5d9c0cd546d968' +\n '5f913a0c0b2cc5341583bf4b4392e467db96d65b9bb4cb717112f8472e0d5a4d14505ffd7484' +\n 'b01291091c5f87b98883463f98091a0baaae';\nfunction getDefaultFetch() {\n const result = typeof window === 'undefined'\n ? typeof global === 'undefined'\n ? typeof self === 'undefined'\n ? undefined\n : self.fetch.bind(self)\n : global.fetch.bind(global)\n : window.fetch.bind(window);\n if (!result) {\n throw new Error('Could not find default `fetch` implementation.');\n }\n return result;\n}\n// A HTTP agent allows users to interact with a client of the internet computer\n// using the available methods. It exposes an API that closely follows the\n// public view of the internet computer, and is not intended to be exposed\n// directly to the majority of users due to its low-level interface.\n//\n// There is a pipeline to apply transformations to the request before sending\n// it to the client. This is to decouple signature, nonce generation and\n// other computations so that this class can stay as simple as possible while\n// allowing extensions.\nexport class HttpAgent {\n constructor(options = {}) {\n this._pipeline = [];\n this._rootKeyFetched = false;\n this.rootKey = blobFromHex(IC_ROOT_KEY);\n if (options.source) {\n if (!(options.source instanceof HttpAgent)) {\n throw new Error(\"An Agent's source can only be another HttpAgent\");\n }\n this._pipeline = [...options.source._pipeline];\n this._identity = options.source._identity;\n this._fetch = options.source._fetch;\n this._host = options.source._host;\n this._credentials = options.source._credentials;\n }\n else {\n this._fetch = options.fetch || getDefaultFetch() || fetch.bind(global);\n }\n if (options.host !== undefined) {\n if (!options.host.match(/^[a-z]+:/) && typeof window !== 'undefined') {\n this._host = new URL(window.location.protocol + '//' + options.host);\n }\n else {\n this._host = new URL(options.host);\n }\n }\n else if (options.source !== undefined) {\n // Safe to ignore here.\n this._host = options.source._host;\n }\n else {\n const location = typeof window !== 'undefined' ? window.location : undefined;\n if (!location) {\n throw new Error('Must specify a host to connect to.');\n }\n this._host = new URL(location + '');\n }\n if (options.credentials) {\n const { name, password } = options.credentials;\n this._credentials = `${name}${password ? ':' + password : ''}`;\n }\n this._identity = Promise.resolve(options.identity || new AnonymousIdentity());\n }\n addTransform(fn, priority = fn.priority || 0) {\n // Keep the pipeline sorted at all time, by priority.\n const i = this._pipeline.findIndex(x => (x.priority || 0) < priority);\n this._pipeline.splice(i >= 0 ? i : this._pipeline.length, 0, Object.assign(fn, { priority }));\n }\n async getPrincipal() {\n return (await this._identity).getPrincipal();\n }\n async call(canisterId, options, identity) {\n const id = (await (identity !== undefined ? await identity : await this._identity));\n const canister = Principal.from(canisterId);\n const ecid = options.effectiveCanisterId\n ? Principal.from(options.effectiveCanisterId)\n : canister;\n const sender = id.getPrincipal() || Principal.anonymous();\n const submit = {\n request_type: SubmitRequestType.Call,\n canister_id: canister,\n method_name: options.methodName,\n arg: options.arg,\n sender: sender,\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest = (await this._transform({\n request: {\n body: null,\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),\n },\n endpoint: \"call\" /* Call */,\n body: submit,\n }));\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n const body = cbor.encode(transformedRequest.body);\n // Run both in parallel. The fetch is quite expensive, so we have plenty of time to\n // calculate the requestId locally.\n const [response, requestId] = await Promise.all([\n this._fetch('' + new URL(`/api/v2/canister/${ecid.toText()}/call`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body })),\n requestIdOf(submit),\n ]);\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n return {\n requestId,\n response: {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n },\n };\n }\n async query(canisterId, fields, identity) {\n const id = await (identity !== undefined ? await identity : await this._identity);\n const canister = typeof canisterId === 'string' ? Principal.fromText(canisterId) : canisterId;\n const sender = (id === null || id === void 0 ? void 0 : id.getPrincipal()) || Principal.anonymous();\n const request = {\n request_type: \"query\" /* Query */,\n canister_id: canister,\n method_name: fields.methodName,\n arg: fields.arg,\n sender: sender,\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n };\n // TODO: remove this any. This can be a Signed or UnSigned request.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest = await this._transform({\n request: {\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),\n },\n endpoint: \"read\" /* Query */,\n body: request,\n });\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n const body = cbor.encode(transformedRequest.body);\n const response = await this._fetch('' + new URL(`/api/v2/canister/${canister.toText()}/query`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body }));\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n return cbor.decode(Buffer.from(await response.arrayBuffer()));\n }\n async readState(canisterId, fields, identity) {\n const canister = typeof canisterId === 'string' ? Principal.fromText(canisterId) : canisterId;\n const id = await (identity !== undefined ? await identity : await this._identity);\n const sender = (id === null || id === void 0 ? void 0 : id.getPrincipal()) || Principal.anonymous();\n // TODO: remove this any. This can be a Signed or UnSigned request.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest = await this._transform({\n request: {\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),\n },\n endpoint: \"read_state\" /* ReadState */,\n body: {\n request_type: \"read_state\" /* ReadState */,\n paths: fields.paths,\n sender: sender,\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n },\n });\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n const body = cbor.encode(transformedRequest.body);\n const response = await this._fetch('' + new URL(`/api/v2/canister/${canister}/read_state`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body }));\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n return cbor.decode(Buffer.from(await response.arrayBuffer()));\n }\n async status() {\n const headers = this._credentials\n ? {\n Authorization: 'Basic ' + btoa(this._credentials),\n }\n : {};\n const response = await this._fetch('' + new URL(`/api/v2/status`, this._host), { headers });\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n const buffer = await response.arrayBuffer();\n return cbor.decode(new Uint8Array(buffer));\n }\n async fetchRootKey() {\n if (!this._rootKeyFetched) {\n // Hex-encoded version of the replica root key\n this.rootKey = blobFromUint8Array((await this.status()).root_key);\n this._rootKeyFetched = true;\n }\n return this.rootKey;\n }\n _transform(request) {\n let p = Promise.resolve(request);\n for (const fn of this._pipeline) {\n p = p.then(r => fn(r).then(r2 => r2 || r));\n }\n return p;\n }\n}\n//# sourceMappingURL=index.js.map","import { Principal } from '@dfinity/principal';\nexport var ProxyMessageKind;\n(function (ProxyMessageKind) {\n ProxyMessageKind[\"Error\"] = \"err\";\n ProxyMessageKind[\"GetPrincipal\"] = \"gp\";\n ProxyMessageKind[\"GetPrincipalResponse\"] = \"gpr\";\n ProxyMessageKind[\"Query\"] = \"q\";\n ProxyMessageKind[\"QueryResponse\"] = \"qr\";\n ProxyMessageKind[\"Call\"] = \"c\";\n ProxyMessageKind[\"CallResponse\"] = \"cr\";\n ProxyMessageKind[\"ReadState\"] = \"rs\";\n ProxyMessageKind[\"ReadStateResponse\"] = \"rsr\";\n ProxyMessageKind[\"Status\"] = \"s\";\n ProxyMessageKind[\"StatusResponse\"] = \"sr\";\n})(ProxyMessageKind || (ProxyMessageKind = {}));\n// A Stub Agent that forwards calls to another Agent implementation.\nexport class ProxyStubAgent {\n constructor(_frontend, _agent) {\n this._frontend = _frontend;\n this._agent = _agent;\n }\n onmessage(msg) {\n switch (msg.type) {\n case ProxyMessageKind.GetPrincipal:\n this._agent.getPrincipal().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.GetPrincipalResponse,\n response: response.toText(),\n });\n });\n break;\n case ProxyMessageKind.Query:\n this._agent.query(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.QueryResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Call:\n this._agent.call(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.CallResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.ReadState:\n this._agent.readState(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.ReadStateResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Status:\n this._agent.status().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.StatusResponse,\n response,\n });\n });\n break;\n default:\n throw new Error(`Invalid message received: ${JSON.stringify(msg)}`);\n }\n }\n}\n// An Agent that forwards calls to a backend. The calls are serialized\nexport class ProxyAgent {\n constructor(_backend) {\n this._backend = _backend;\n this._nextId = 0;\n this._pendingCalls = new Map();\n this.rootKey = null;\n }\n onmessage(msg) {\n const id = msg.id;\n const maybePromise = this._pendingCalls.get(id);\n if (!maybePromise) {\n throw new Error('A proxy get the same message twice...');\n }\n this._pendingCalls.delete(id);\n const [resolve, reject] = maybePromise;\n switch (msg.type) {\n case ProxyMessageKind.Error:\n return reject(msg.error);\n case ProxyMessageKind.GetPrincipalResponse:\n case ProxyMessageKind.CallResponse:\n case ProxyMessageKind.QueryResponse:\n case ProxyMessageKind.ReadStateResponse:\n case ProxyMessageKind.StatusResponse:\n return resolve(msg.response);\n default:\n throw new Error(`Invalid message being sent to ProxyAgent: ${JSON.stringify(msg)}`);\n }\n }\n async getPrincipal() {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.GetPrincipal,\n }).then(principal => {\n if (typeof principal !== 'string') {\n throw new Error('Invalid principal received.');\n }\n return Principal.fromText(principal);\n });\n }\n readState(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.ReadState,\n args: [canisterId.toString(), fields],\n });\n }\n call(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Call,\n args: [canisterId.toString(), fields],\n });\n }\n status() {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Status,\n });\n }\n query(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Query,\n args: [canisterId.toString(), fields],\n });\n }\n async _sendAndWait(msg) {\n return new Promise((resolve, reject) => {\n this._pendingCalls.set(msg.id, [resolve, reject]);\n this._backend(msg);\n });\n }\n async fetchRootKey() {\n // Hex-encoded version of the replica root key\n const rootKey = (await this.status()).root_key;\n this.rootKey = rootKey;\n return rootKey;\n }\n}\n//# sourceMappingURL=proxy.js.map","export * from './api';\nexport * from './http';\nexport * from './proxy';\nexport function getDefaultAgent() {\n const agent = typeof window === 'undefined'\n ? typeof global === 'undefined'\n ? typeof self === 'undefined'\n ? undefined\n : self.ic.agent\n : global.ic.agent\n : window.ic.agent;\n if (!agent) {\n throw new Error('No Agent could be found.');\n }\n return agent;\n}\n//# sourceMappingURL=index.js.map","/**\n * This file is generated from the candid for asset management.\n */\n/* tslint:disable */\n// @ts-ignore\nexport default ({ IDL }) => {\n const canister_id = IDL.Principal;\n const wasm_module = IDL.Vec(IDL.Nat8);\n const CanisterSettings = IDL.Record({\n compute_allocation: IDL.Opt(IDL.Nat),\n memory_allocation: IDL.Opt(IDL.Nat),\n });\n return IDL.Service({\n provisional_create_canister_with_cycles: IDL.Func([IDL.Record({ amount: IDL.Opt(IDL.Nat), settings: IDL.Opt(CanisterSettings) })], [IDL.Record({ canister_id: canister_id })], []),\n create_canister: IDL.Func([], [IDL.Record({ canister_id: canister_id })], []),\n install_code: IDL.Func([\n IDL.Record({\n mode: IDL.Variant({ install: IDL.Null, reinstall: IDL.Null, upgrade: IDL.Null }),\n canister_id: canister_id,\n wasm_module: wasm_module,\n arg: IDL.Vec(IDL.Nat8),\n }),\n ], [], []),\n set_controller: IDL.Func([IDL.Record({ canister_id: canister_id, new_controller: IDL.Principal })], [], []),\n });\n};\n//# sourceMappingURL=management_idl.js.map","import { Actor } from '../actor';\nimport { Principal } from '@dfinity/principal';\nimport managementCanisterIdl from './management_idl';\n/* tslint:enable */\n/**\n * Create a management canister actor.\n * @param config\n */\nexport function getManagementCanister(config) {\n function transform(methodName, args, callConfig) {\n const first = args[0];\n let effectiveCanisterId = Principal.fromHex('');\n if (first && typeof first === 'object' && first.canister_id) {\n effectiveCanisterId = Principal.from(first.canister_id);\n }\n return { effectiveCanisterId };\n }\n return Actor.createActor(managementCanisterIdl, Object.assign(Object.assign(Object.assign({}, config), { canisterId: Principal.fromHex('') }), {\n callTransform: transform,\n queryTransform: transform,\n }));\n}\n//# sourceMappingURL=management.js.map","/**\n * An error that happens in the Agent. This is the root of all errors and should be used\n * everywhere in the Agent code (this package).\n *\n * @todo https://github.com/dfinity/agent-js/issues/420\n */\nexport class AgentError extends Error {\n}\n//# sourceMappingURL=errors.js.map","import * as base64Arraybuffer from 'base64-arraybuffer';\n/* tslint:disable */\n/* eslint-disable */\nlet wasm;\n// This WASM is generated from the BLS Rust code of the Agent RS (see\n// http://github.com/dfinity/agent-rs/)\n// Once the WASM is compiled, simply base64 encode it and include it in this string.\nconst wasmBytesBase64 = `\n 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\n g8AAEF8CQAJAIAZB6AFqEFoNACAGQShqEIQBDQAgBkGIPWoQS0EAIQcgBkGIwwBqQTgQchogBkG4IWpBOBByGiAGQYjA\n AGoQSyAGQcjEAGoQSyAGQcjJAGoQSyAGQcjMAGoQSyAGQagGahBLIAZBsAxqEEsgBkHIzwBqEEsgBkHQ1QBqEEsgBkHY\n 2wBqEEsgBkG4FWoQSyAGQZgjaiAGQcjJAGpBwAEQZxogBkHYJGogBkHIzABqQcABEGcaIAZBmCZqIAZBqAZqQcABEGca\n IAZB2CdqIAZBsAxqQcABEGcaIAZBmClqIAZByM8AakHAARBnGiAGQdgqaiAGQdDVAGpBwAEQZxogBkGYLGogBkHY2wBq\n QcABEGcaIAZB2C1qIAZBuBVqQcABEGcaIAZBuBVqQecAEHIaIAZBiMAAaiAGQShqEH8gBkGIwABqEBggBkGYI2ogBkEo\n ahB/A0AgB0HACkYEQCAGQbghaiAGQegBahBrIAYpA7ghIRcgBkG4IWpBARCdASAGQbghahBEIAYpA7ghIRYgBkGIwwBq\n IAZBuCFqEGsgBkGIwwBqQQEQnQEgBkGIwwBqEEQgBkG4IWogBkGIwwBqIBdCAoGnEE8gBkGIwABqIAZBKGogFkICgacQ\n bSAGQcjEAGogBkGIwABqEH8gBkG4IWoQKUEDaiIJQQJ2IgdBAWohAkEAIQgCQAJAAkADQAJAIAZBuCFqQQUQjAEhAyAC\n IAhGBEAgCUGYA0kNASACQecAQbCEwAAQPAALIAhB5wBGDQIgBkG4FWogCGogA0FwaiIDOgAAIAZBuCFqIANBGHRBGHUQ\n ngEgBkG4IWoQRCAGQbghakEEEDsgCEEBaiEIDAELCyAGQbgVaiACaiADOgAAIANBGHRBGHVBf2oiA0EBdiECIANBD0sN\n ASAGQYg9aiAGQZgjaiACQcABbGoQfwNAIAdBf0YEQCAGQYg9aiAGQcjEAGoQcyAGQZgjaiAGQYg9akHAARBnGgwICyAH\n QeYASw0DIAZBiMAAaiAGQZgjaiAGQbgVaiAHaiwAABAfIAdBf2ohByAGQYg9ahAYIAZBiD1qEBggBkGIPWoQGCAGQYg9\n ahAYIAZBiD1qIAZBiMAAahAMDAALAAtB5wBB5wBBoITAABA8AAsgAkEIQcCEwAAQPAALIAdB5wBB0ITAABA8AAUgBkHI\n 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\n UtcEAKAIAIgFBASACdCICcQRAIAAoAggMAQtB1LXBACABIAJyNgIAIAALIQEgACAENgIIIAEgBDYCDCAEIAA2AgwgBCAB\n NgIIC0EAIQVB6LjBACgCACIAIAZNDQBB6LjBACAAIAZrIgI2AgBB8LjBAEHwuMEAKAIAIgEgBmoiADYCACAAIAJBAXI2A\n gQgASAGQQNyNgIEIAFBCGoPCyAFDwsgASAHNgIYIAMoAhAiAARAIAEgADYCECAAIAE2AhgLIANBFGooAgAiAEUNACABQR\n RqIAA2AgAgACABNgIYCwJAIAVBEE8EQCADIAZBA3I2AgQgAyAGaiIEIAVBAXI2AgQgBCAFaiAFNgIAQeS4wQAoAgAiAAR\n AIABBA3YiAkEDdEHctcEAaiEAQey4wQAoAgAhBwJ/QdS1wQAoAgAiAUEBIAJBH3F0IgJxBEAgACgCCAwBC0HUtcEAIAEg\n AnI2AgAgAAshAiAAIAc2AgggAiAHNgIMIAcgADYCDCAHIAI2AggLQey4wQAgBDYCAEHkuMEAIAU2AgAMAQsgAyAFIAZqI\n gBBA3I2AgQgACADaiIAIAAoAgRBAXI2AgQLIANBCGoLtA8BA38jAEGAC2siAiQAIAJBCGoQSyACQcgBakE4EHIaIAJBAT\n YCgAIgAkGIAmpBOBByGiACQQE2AsACIAJByAJqQTgQchogAkEBNgKAAyACQYgDakE4EHIaIAJBATYCwAMgAkHIA2pBOBB\n yGiACQQE2AoAEIAJBiARqQQEQigEgAkHIBGpBOBByGiACQQE2AoAFIAJBiAVqQTgQchogAkEBNgLABSACQcgFaiABEIUB\n IAJBiAZqQTgQchogAkEBNgLABiACQcgGakE4EHIaIAJBATYCgAcgAkGIB2pBOBByGiACQQE2AsAHIAJByAdqQTgQchogA\n kEBNgKACCACQcgFahBYIQMgAkHICWpB4ITAABBfIAJBiApqIAJByAlqEIsBIAJByAFqIAJBiApqEKUBIAJByAlqQZiFwA\n AQXyACQYgKaiACQcgJahCLASACQYgCaiACQYgKahClASACQcgFahADIAJByAVqQQsQUiACQYgGaiACQcgFahClASACQYg\n GaiACQYgEahB4IAJBiAZqEEQgAkGIBmogAkHIBWoQSCACQYgFaiACQcgBahClASACQYgFaiACQYgGahBIIAJBiAZqIAJB\n iARqEHggAkGIBmoQRCACQYgGaiACQYgCahBIIAJBiAZqEEEgAkGIBmoQRCACQYgDaiACQYgGahClASACQcgDaiACQcgFa\n hClASACQcgDaiACQYgDahBIIAJByAdqIAJBiANqEKUBIAJByAdqEAMgAkHIBmogAkGIBWoQpQEgAkHIBmoQAyACQYgGai\n ACQcgBahClASACQYgGaiACQcgGahBIIAJByAdqIAJBiAZqEHggAkHIB2oQRCACQcgHaiACQYgDahBIIAJByAZqIAJBiAV\n qEEggAkGIBmogAkGIAmoQpQEgAkGIBmogAkHIBmoQSCACQcgHaiACQYgGahB4IAJByAdqEEQgAkGIBmogAkHIB2oQpQEg\n AkGIBmogAkGIBWoQSCACQYgGaiACQYgHahBcIQQgAkGIBWogAkGIBmoQpQEgAkGIBWogAkGIB2oQNCACQYgFaiACQcgHa\n hBIIAJBiANqIAJBiAVqEEggAkHIA2ogAkGIBWoQSCACQcgFaiABEEggAkHIBmogAkGIBWoQpQEgAkHIBmoQAyACQYgFai\n ACQcgGahClASACQYgFaiACQcgFahBIIAJByAVqIAJBiAZqEKUBIAJByAVqQQsQUiACQcgJakHQhcAAEF8gAkGICmogAkH\n ICWoQiwEgAkHIAmogAkGICmoQpQEgAkHIAmogAkGIB2oQSCACQYgDaiACQcgDakEBIARrIgEQeSACQcgGaiACQYgFaiAB\n EHkgAkGIBmogAkHIBWogARB5IAJBiAdqIAJByAJqIAEQeSACQYgKaiACQYgGaiACQYgHahAjIAJByARqIAJBiApqEKUBI\n AJByARqIAJByAZqEEggAkHIBGoQWCEBIAJBiAZqIAJByARqEKUBIAJBiAZqEEEgAkGIBmoQRCACQcgEaiACQYgGaiABIA\n NzEHkgAkGICmpBiIbAABBfIAJBiAhqIAJBiApqEIsBQTghAQNAIAFBoAVGRQRAIAJBiAhqIAJBiANqEEggAkHICWogAUG\n IhsAAahBfIAFBOGohASACQYgKaiACQcgJahCLASACQYgGaiACQYgKahClASACQYgIaiACQYgGahB4IAJBiAhqEEQMAQsL\n IAJByAhqIAJBiANqEIUBIAJByAlqQaiLwAAQXyACQYgKaiACQcgJahCLASACQYgGaiACQYgKahClASACQcgIaiACQYgGa\n hB4IAJByAhqEERBACEBA0AgAUH4A0ZFBEAgAkHICGogAkGIA2oQSCACQcgJaiABQeCLwABqEF8gAUE4aiEBIAJBiApqIA\n JByAlqEIsBIAJBiAZqIAJBiApqEKUBIAJByAhqIAJBiAZqEHggAkHICGoQRAwBCwsgAkGICmpB2I/AABBfIAJBiAlqIAJ\n BiApqEIsBQQAhAQNAIAFByAZGBEACQCACQcgJaiACQYgDahCFASACQcgKakHYlsAAEF8gAkGICmogAkHICmoQiwEgAkGI\n BmogAkGICmoQpQEgAkHICWogAkGIBmoQeCACQcgJahBEQQAhAQNAIAFBkAZGDQEgAkHICWogAkGIA2oQSCACQcgKaiABQ\n ZCXwABqEF8gAUE4aiEBIAJBiApqIAJByApqEIsBIAJBiAZqIAJBiApqEKUBIAJByAlqIAJBiAZqEHggAkHICWoQRAwACw\n ALBSACQYgJaiACQYgDahBIIAJByAlqIAFBkJDAAGoQXyABQThqIQEgAkGICmogAkHICWoQiwEgAkGIBmogAkGICmoQpQE\n gAkGICWogAkGIBmoQeCACQYgJahBEDAELCyACQYgJaiACQcgEahBIIAJBiAZqIAJBiAhqEKUBIAJBiAZqIAJByAlqEEgg\n AkEIaiACQYgGahClASACQYgGaiACQYgJahClASACQYgGaiACQcgIahBIIAJByABqIAJBiAZqEKUBIAJBiAZqIAJByAhqE\n KUBIAJBiAZqIAJByAlqEEggAkGIAWogAkGIBmoQpQEgACACQQhqQcABEGcaIAJBgAtqJAALzQ0CE38IfiMAQYADayIBJA\n AgADQCOCIUIBR+QoCAgBBaBEAgABASCyABQeABakHoABByGiABQcgBaiAAKQMAIhggGEI/hyIZIBggGRAxIAEgASkDyAE\n iFEL//////////wODNwPYASABQdABaikDACIXQgaGIBRCOoiEIRUgF0I6iCEaIABBCGoiCyEFIAAhBkEBIQcDQCAHQQZP\n BEAgAEEYaiEMIABBKGohCyAAQRBqIQcgACkDMCEYQQQhBkEAIQkgAUGgAWohDUEDIQpBAiEIQQchBQJAAkADQCAFQQpLD\n QIgBiAIIAYgCEsbIQ4gBiAKIAYgCksbQQN0QWhqIQ8gAUGYAWogBUEDdCIQIABqQVBqKQMAIhQgFEI/hyAYIBhCP4ciGR\n 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\n OBByGiACQQE2AvgMIAJBgA1qQTgQchogAkG4DWpBATYCACACQYAIakE4EHIaIAJBATYCuAggAkHACGpBOBByGiACQfgIa\n kEBNgIAIAJBgApqIABBgANqIgMQXiACQYAIaiACQYAKahCQASACQYAKaiABQYADaiIFEF4gAkGACGogAkGACmoQDyACQc\n AMahCpASAERQRAIAJBgApqIAMQXiACQcAMaiACQYAKahCQASACQYAKaiABQYACahBeIAJBwAxqIAJBgApqEA8LIAAoAoA\n GQQRHBEAgAkGACmogAEGAAmoQXiACQcAMaiACQYAKahCQASACQYAKaiAFEF4gAkHADGogAkGACmoQDwsgAkGABGogAkHA\n DGogAkGACGoQoQEgAkGABGoQZgsgAkGACGogABCOASACQYAKaiABEI4BIAJBgAhqIABBgAJqIgQQlgEgAkGACGoQrAEgA\n kGACmogAUGAAmoiBRCWASACQYAKahCsASACQYACaiACQYAIahCSASACQYACaiACQYAKahAZIAJBgAhqIAQQkgEgAkGACG\n ogAEGABGoiAxCWASACQYAIahCsASACQYAKaiAFEJIBIAJBgApqIAFBgARqIgUQlgEgAkGACmoQrAEgAkGABmogAkGACGo\n QkgEgAkGABmogAkGACmoQGSACQYAIaiACEJIBIAJBgAhqECsgAkGACmogAkGABGoQkgEgAkGACmoQKyACQYACaiACQYAI\n ahCWASAEIAJBgAJqEJIBIAQgAkGACmoQlgEgAkGABmogAkGACmoQlgEgAkGABGogAkGACGoQlgEgAkGACGogABCSASACQ\n YAIaiADEJYBIAJBgAhqEKwBIAJBgApqIAEQkgEgAkGACmogBRCWASACQYAKahCsASACQYAIaiACQYAKahAZIAJBgARqIA\n JBgAhqEJYBIAJBgAhqIAMQkgEgAkGACGogBRAZIAJBgApqIAJBgAhqEJIBIAJBgApqECsgAyACQYAEahCSASADIAJBgAp\n qEJYBIAJBgAZqIAJBgApqEJYBIAJBgAhqEGYgBCACQYAIahCWAQwDCyAAIAEQBgwECyACQcAMaiABQYAFahBeIAJBgAxq\n IAJBwAxqQcAAEGcaIAJBgAZqIAJBgAxqEKMBCyACQYAGahBmIAJBgAhqIAIQkgEgAkGACGoQKyACQYACaiACQYAIahCWA\n SAFIAJBgAJqEJIBIAJBgARqIAJBgAhqEJIBIAJBgAhqIAAQkgEgAkGACGogAxCWASACQYAIahCsASACQYAKaiABEJIBIA\n JBgApqIAFBgARqEJYBIAJBgApqEKwBIAJBgAhqIAJBgApqEBkgAkGABGogAkGACGoQlgEgAkGACGogAxCSAQJAIARBAkc\n EQCACQcAMaiABQYAFahBeIAJBgAhqIAJBwAxqEKIBDAELIAJBwAxqIAFBgAVqEF4gAkGADGogAkHADGpBwAAQZxogAkGA\n CGogAkGADGoQowELIAJBgAhqEGYgAkGACmogAkGACGoQkgEgAkGACmoQKyADIAJBgARqEJIBIAMgAkGACmoQlgEgAkGAB\n mogAkGACmoQlgEgAkGACGoQZiAFIAJBgAhqEJYBCyACQYAGahCsASACQYAGahBmIAAgAhCSASAAIAJBgAZqEJYBIABBBT\n YCgAYgABCZAQwBCyAAIAEQbAsgAkHADWokAAuaCQIPfwt+IwBBwAJrIgIkACACQeAAakGgp8AAEF8gAEE4EHIhDCACQZg\n BakHwABByGiACQZACakEwEHIaIAwQdCACIAEpAwAiFEL9//P/z///+QF+Qv//////////A4MiETcDiAIgAkHQAGogEUIA\n IAIpA2AiGCAYQj+HIhoQMSAUIAIpA1AiEXwiFiARVK0gAkHYAGopAwAgFEI/h3x8IhRCOocgASkDCCIRQj+HfCARIBRCB\n oYgFkI6iIQiEXwiEiARVK18IRNBASEDAkADQAJAIANBB0YEQCACQZACaiEJIAJB6ABqIQpBByEEIAJB4ABqIQ0gAkGIAm\n ohDkEGIQ8MAQsgA0EBdiIAQQFqIQUgCiAAayEGIAkgAEEDdCIHayEAIAdBCGohCCACQUBrIANBA3QiBCACQeAAamopAwA\n iFiAWQj+HIhQgAikDiAIiESARQj+HEDEgAkHIAGopAwAgEiAVfCIRIBJUrSATIBd8fHwgESACKQNAfCITIBFUrXwhEiAD\n QQFqIQcDQCADIAVNBEAgAkGIAmogBGogE0L9//P/z///+QF+Qv//////////A4MiETcDACACQTBqIBFCACAYIBoQMSACQ\n SBqIBFCACAWIBQQMSACQZgBaiADQQR0aiIAIAJBKGopAwAiGzcDCCAAIAIpAyAiGTcDACACKQMwIhEgE3wiFiARVK0gAk\n E4aikDACASfHwiFEI6hyABIAdBA3RqKQMAIhFCP4d8IBEgFEIGhiAWQjqIhCIRfCISIBFUrXwhEyAVIBl8IhUgGVStIBc\n gG3x8IRcgCUEIaiEJIApBAWohCiAHIQMMAwsgBkEGSw0DIAJBEGogAkHgAGogCGopAwAgAkHgAGogAGopAwB9IhEgEUI/\n hyACQYgCaiAAaikDACACQYgCaiAIaikDAH0iESARQj+HEDEgAikDECIRIBN8IhMgEVStIAJBGGopAwAgEnx8IRIgBUEBa\n iEFIABBeGohACAGQX9qIQYgCEEIaiEIDAALAAsLA0ACQCAEQQ1HBEAgDyAEQQF2IgBrIQUgDiAAQQN0IgtrIRAgDSALay\n EIIBMgF3wgEiAVfCITIBJUrXwhEiAEQQFqIQdBMCEAIAkhBiAKIQMDQCAAIAtGDQIgBUEGTQRAIAIgAyALaikDACAAIAh\n qKQMAfSIRIBFCP4cgACAQaikDACAGIAtqKQMAfSIRIBFCP4cQMSACKQMAIhEgE3wiEyARVK0gAkEIaikDACASfHwhEiAF\n QX9qIQUgBkEIaiEGIANBCGohAyAAQXhqIQAMAQsLIAVBB0HknsAAEDwACyAMIBJC//////////8DgzcDMCACQcACaiQAD\n wsgBEEDdCAMakFIaiATQv//////////A4M3AwAgEkI6hyABIAdBA3RqKQMAIhFCP4d8IBEgEkIGhiATQjqIhCIRfCISIB\n FUrXwhEyAXIARBBHQgAmpBOGoiAEEIaikDAH0gFSAAKQMAIhFUrX0hFyAOQQhqIQ4gDUEIaiENIA9BAWohDyAVIBF9IRU\n gByEEDAALAAsgBkEHQdSewAAQPAAL+QkBBH8jAEGACWsiAiQAIAJBgAhqIAAQXiACIAJBgAhqEF4gAkGACGogAEGAAWoi\n BBBeIAJBgAFqIAJBgAhqEF4gAkGACGogARBeIAIgAkGACGoQDyACQYAIaiABQYABaiIFEF4gAkGAAWogAkGACGoQDyAAK\n AKABiEDAkACQCABKAKABkECRwRAIANBAkYNASACQYAIaiAAQYAFahBeIAJBgAJqIAJBgAhqEF4gAkGACGogAUGABWoQXi\n ACQYACaiACQYAIahAPDAILIANBAkYEQCACQYAIaiAAQYAFahBeIAJBgAdqIAJBgAhqQcAAEGcaIAJBgAZqIAJBgAdqEIU\n BIAJBgAhqIAFBgAVqEF4gAkGAB2ogAkGACGpBwAAQZxogAkGABmogAkGAB2oQSCACQYAIakE4EHIaIAJBATYCuAggAkHA\n CGpBOBByIAJB+AhqQQE2AgAgAkGACGogAkGABmoQpQEQsgEgAkGAAmogAkGACGpBgAEQZxoMAgsgAkGACGogAEGABWoQX\n iACQYACaiACQYAIahBeIAJBgAhqIAFBgAVqEF4gAkGAB2ogAkGACGpBwAAQZxogAkGAAmogAkGAB2oQoAEMAQsgAkGACG\n ogAUGABWoQXiACQYACaiACQYAIahBeIAJBgAhqIABBgAVqEF4gAkGAB2ogAkGACGpBwAAQZxogAkGAAmogAkGAB2oQoAE\n LIAJBgAhqIAAQXiACQYADaiACQYAIahBeIAJBgAhqIAEQXiACQYAEaiACQYAIahBeIAJBgAhqIAQQXiACQYADaiACQYAI\n ahCVASACQYADahCoASACQYAIaiAFEF4gAkGABGogAkGACGoQlQEgAkGABGoQqAEgAkGABWogAkGAA2oQXiACQYAFaiACQ\n YAEahAPIAJBgAZqIAIQXiACQYAGaiACQYABahCVASACQYAGahA6IAJBgAVqIAJBgAZqEJUBIAJBgAhqIAAQXiACQYADai\n ACQYAIahCQASACQYAIaiAAQYAFaiIDEF4gAkGAA2ogAkGACGoQlQEgAkGAA2oQqAEgAkGACGogARBeIAJBgARqIAJBgAh\n qEJABIAJBgAhqIAFBgAVqIgEQXiACQYAEaiACQYAIahCVASACQYAEahCoASACQYAHaiACQYADahBeIAJBgAdqIAJBgARq\n EA8gAkGABmogAhCQASACQYAGaiACQYACahCVASACQYAGahA6IAJBgAdqIAJBgAZqEJUBIAJBgAhqIAQQXiACQYADaiACQ\n YAIahCQASACQYAIaiADEF4gAkGAA2ogAkGACGoQlQEgAkGAA2oQqAEgAkGACGogBRBeIAJBgARqIAJBgAhqEJABIAJBgA\n hqIAEQXiACQYAEaiACQYAIahCVASACQYAEahCoASACQYAIaiACQYADahBeIAJBgAhqIAJBgARqEA8gAkGABmogAkGAAWo\n QkAEgAkGABmogAkGAAmoQlQEgAkGABmoQOiACQYAIaiACQYAGahCVASACQYABahBVIAIgAkGAAWoQlQEgACACIAJBgAVq\n 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\n GogAkGABWoQfSACQYAEahCoASACQYAFaiAAEJABIAJBgAVqIAQQlQEgAkGABWoQqAEgAkGABmogARBeIAJBgAZqIAYQlQ\n EgAkGABmoQqAEgAkGABWogAkGABmoQDyACQYAGaiACEJABIAJBgAZqIAJBgAJqEJUBIAJBgAZqIAJBgAVqELUBIAJBgAZ\n qEKgBIAJBgAVqIAIQkAEgAkGABWogAhCVASACIAJBgAVqEJUBIAIQqAEgAkGAAmpBDBCfASACQYACahBVIAJBgAJqEKgB\n IAJBgAdqIAJBgAFqEF4gAkGAB2ogAkGAAmoQlQEgAkGAB2oQqAEgAkGAAWogAkGAAmoQfSACQYABahCoASACQYAGakEME\n J8BIAJBgAZqEFUgAkGABmoQqAEgAkGABWogAkGABmoQkAEgAkGABWogAkGABGoQDyACQYACaiACQYADahCQASACQYACai\n ACQYABahAPIAJBgAVqIAJBgAJqELUBIAJBgAZqIAIQDyACQYABaiACQYAHahAPIAJBgAZqIAJBgAFqEJUBIAIgAkGAA2o\n QDyACQYAHaiACQYAEahAPIAJBgAdqIAIQlQEgACACQYAFahCQASAAEKgBIAMgAkGABmoQkAEgAxCoASAEIAJBgAdqEJAB\n IAQQqAEgAkGACGokAAv2BQEFfyMAQYAEayICJAAgAiAAEIUBIAIgARBIIAJBQGsgAEFAayIDEIUBIAJBQGsgAUFAayIFE\n EggAkGAAWogAEGAAWoiBBCFASACQYABaiABQYABaiIGEEggAkHAAWogABCFASACQcABaiADEHggAkHAAWoQRCACQYACai\n ABEIUBIAJBgAJqIAUQeCACQYACahBEIAJBwAFqIAJBgAJqEEggAkGAAmogAhClASACQYACaiACQUBrEHggAkHAAWogAkG\n AAmoQgAEgAkHAAWoQRCACQYACaiADEKUBIAJBgAJqIAQQeCACQYACahBEIAJBwAJqIAUQhQEgAkHAAmogBhB4IAJBwAJq\n EEQgAkGAAmogAkHAAmoQSCACQcACaiACQUBrEKUBIAJBwAJqIAJBgAFqEHggAkGAAmogAkHAAmoQgAEgAkGAAmoQRCACQ\n cACaiAAEKUBIAJBwAJqIAQQeCACQcACahBEIAJBgANqIAEQhQEgAkGAA2ogBhB4IAJBgANqEEQgAkHAAmogAkGAA2oQSC\n ACQYADaiACEKUBIAJBgANqIAJBgAFqEHggAkGAA2ogAkHAAmoQswEgAkGAA2oQRCACQcACaiACEKUBIAJBwAJqIAIQeCA\n CIAJBwAJqEHggAhBEIAJBgAFqQQwQUiACQcADaiACQUBrEIUBIAJBwANqIAJBgAFqEHggAkHAA2oQRCACQUBrIAJBgAFq\n EIABIAJBQGsQRCACQYADakEMEFIgAkHAAmogAkGAA2oQpQEgAkHAAmogAkGAAmoQSCACQYABaiACQcABahClASACQYABa\n iACQUBrEEggAkHAAmogAkGAAWoQswEgAkGAA2ogAhBIIAJBQGsgAkHAA2oQSCACQYADaiACQUBrEHggAiACQcABahBIIA\n JBwANqIAJBgAJqEEggAkHAA2ogAhB4IAAgAkHAAmoQpQEgABBEIAMgAkGAA2oQpQEgAxBEIAQgAkHAA2oQpQEgBBBEIAJ\n BgARqJAALxQUBBH8jAEHwEmsiACQAIAAQOEF/IQEgABCIAUUEQCAAQYADakE4EHIaIABBuANqQTgQchogAEG4A2ogAEGA\n A2oQVCAAQfAKakG4gMAAEF8gAEHwDWpB8IDAABBfIABB8ANqIABB8ApqIABB8A1qEEkgAEHwBGpBOBByGiAAQQE2AqgFI\n ABBsAVqQTgQchogAEHoBWpBATYCACAAQfAFakE4EHIaIABBATYCqAYgAEGwBmpBOBByGiAAQegGakEBNgIAIABB8AZqQT\n gQchogAEEBNgKoByAAQbAHakE4EHIaIABB6AdqQQE2AgBBf2ohAyAAQfAHahAqIABB8AdqIAAQfiAAQfAKahAqIABB8Ap\n qIABB8AdqEH4gAEHwDWoQKiAAQfANaiAAQfAHahB+IABB8A1qEJwBAkACQAJAA0AgAiEBIANBAkkNAyAAQfAKaiAAQfAE\n aiAAQfAFaiAAQfAGahAlIAFBxABNBEAgAEHwEGogAEHwBGogAEHwBWogAEHwBmoQRiABQQh0QdCrwABqIABB8BBqEJIBI\n AFBAWohAgJAAkAgAEG4A2ogA0F/aiIDEFcgAEGAA2ogAxBXa0EBag4DAQMAAwsgAEHwCmogAEHwB2ogAEHwBGogAEHwBW\n ogAEHwBmoQHiABQcMASw0DIABB8BBqIABB8ARqIABB8AVqIABB8AZqEEYgAkEIdEHQq8AAaiAAQfAQahCSASABQQJqIQI\n MAgsgAEHwCmogAEHwDWogAEHwBGogAEHwBWogAEHwBmoQHiABQcMASw0DIABB8BBqIABB8ARqIABB8AVqIABB8AZqEEYg\n AkEIdEHQq8AAaiAAQfAQahCSASABQQJqIQIMAQsLIAFBxQBBvIHAABA8AAtBxQBBxQBBzIHAABA8AAtBxQBBxQBB3IHAA\n BA8AAtBACEBCyAAQfASaiQAIAEL8gQBBH8jAEGADGsiAiQAIAIgABCOASACQYACahAvIAJBgARqIABBgAJqIgMQjgEgAk\n GABmoQLyACQYAIaiAAEI4BIAJBgApqIAEQjgEgAiABEBkgAkGABGogAUGAAmoiBBAZIAJBgAhqIAMQlgEgAkGACmogBBC\n WASACQYAIahCsASACQYAKahCsASACQYACaiACQYAIahCSASACQYACaiACQYAKahAZIAJBgAhqIAMQkgEgAkGACGogAEGA\n BGoiBRCWASACQYAKaiAEEJIBIAJBgApqIAFBgARqIgQQlgEgAkGACGoQrAEgAkGACmoQrAEgAkGABmogAkGACGoQkgEgA\n kGABmogAkGACmoQGSACQYAIaiACEJIBIAJBgAhqECsgAkGACmogAkGABGoQkgEgAkGACmoQKyACQYACaiACQYAIahCWAS\n ADIAJBgAJqEJIBIAMgAkGACmoQlgEgAkGABmogAkGACmoQlgEgAkGABGogAkGACGoQlgEgAkGACGogABCSASACQYAIaiA\n FEJYBIAJBgAhqEKwBIAJBgApqIAEQkgEgAkGACmogBBCWASACQYAKahCsASACQYAIaiACQYAKahAZIAJBgARqIAJBgAhq\n EJYBIAJBgAhqIAUQkgEgAkGACGogBBAZIAJBgApqIAJBgAhqEJIBIAJBgApqECsgBSACQYAEahCSASAFIAJBgApqEJYBI\n AJBgAZqIAJBgApqEJYBIAJBgAhqEGYgAyACQYAIahCWASACQYAGahCsASACQYAGahBmIAAgAhCSASAAIAJBgAZqEJYBIA\n BBBTYCgAYgABCZASACQYAMaiQAC68EAQV/IwBBkAZrIgIkACAAQUBrIQQCQCABQfgAaigCACABKAI4aqwgAEH4AGooAgA\n iAyAAKAI4IgVqrH5CgICAEFMNACAFQQJOBH8gABASIAAoAngFIAMLQQJIDQAgBBASCyACQaCnwAAQX0EAIQMgAkE4akHw\n ABByGiABQUBrIQUDQCADQThGBEAgAkHwAGohBkEAIQMDQCADQThGRQRAIAMgBmogAiADaikDADcDACADQQhqIQMMAQsLI\n AJBqAFqIAAQXyACQeABaiABEF8gAkGYAmogACABEAggAkGIA2ogBCAFEAggAkGoAWogBBBhIAJBqAFqEEQgAkHgAWogBR\n BhIAJB4AFqEEQgAkH4A2ogAkGoAWogAkHgAWoQCEEAIQMgAkHoBGpB8AAQchoDQCADQfAARkUEQCACQegEaiADaiACQZg\n CaiADaikDADcDACADQQhqIQMMAQsLIAJB6ARqIAJBiANqEGVBACEDA0AgA0HwAEZFBEAgAkGIA2ogA2oiASACQThqIANq\n KQMAIAEpAwB9NwMAIANBCGohAwwBCwsgAkGYAmogAkGIA2oQZSACQZgCahBFIAJB+ANqIAJB6ARqEGQgAkH4A2oQRSACQ\n dgFaiACQZgCahAFIAAgAkHYBWoQayAAQQM2AjggAkHYBWogAkH4A2oQBSAEIAJB2AVqEGsgAEECNgJ4IAJBkAZqJAAFIA\n JBOGogA2pCADcDACADQQhqIQMMAQsLC5QEAQF/IwBB0CJrIgMkACADQcAWakG4gMAAEF8gA0HIHGpB8IDAABBfIANBCGo\n gA0HAFmogA0HIHGoQSSADQYgBakE4EHIaIANBwAFqQTgQchogA0H4AWoQKgJAIAIQhAFFBEAgA0H4BGoQKiADQfgEaiAB\n EH4gA0H4BGoQSiADQfgHahBLIANB+AdqIAIQfyADQfgHahBHIANByBxqIANB+AdqEIUBIANBuAlqIANByBxqEIUBIANBy\n BxqIANBuAhqEIUBIANB+AlqIANByBxqEIUBIANBuApqECogA0G4DWoQYCADQbgKaiADQfgEahB+IANBwBNqECogA0HAE2\n ogA0H4BGoQfiADQcATahCcASADQcABaiADQYgBahBUQX9qIQIDQCACQQFNBEAgA0G4DWoQkwEgACADQbgNakGIBhBnGgw\n DBSADQbgNahAbIANBwBZqIANBuApqIANBuAlqIANB+AlqEBcCQAJAAkAgA0HAAWogAkF/aiICEFcgA0GIAWogAhBXa0EB\n ag4DAQIAAgsgA0HIHGogA0G4CmogA0H4BGogA0G4CWogA0H4CWoQFiADQcAWaiADQcgcahAGDAELIANByBxqIANBuApqI\n ANBwBNqIANBuAlqIANB+AlqEBYgA0HAFmogA0HIHGoQBgsgA0G4DWogA0HAFmoQBAwBCwALAAsgABBgCyADQdAiaiQAC8\n MDARV/A0AgAUHAAUYEQAJAIABBKGohCyAAQRRqKAIAIgwhCCAAQRBqKAIAIg0hAyAAQQxqKAIAIg4hAiAAKAIIIg8hASA\n AQRhqKAIAIhAhCiAAQRxqKAIAIhEhBCAAQSBqKAIAIhIhByAAQSRqKAIAIhMhBgNAIAchCSAEIQcgCiEEIAVBgAJGDQEg\n AiADcSEUIAIgA3MhFSAFIAtqKAIAIAVB9J7AAGooAgAgBEEadyAEQRV3cyAEQQd3cyAGaiAJIARBf3NxIAQgB3FyampqI\n gYgCGohCiAFQQRqIQUgAyEIIAIhAyABIQIgAUEedyABQRN3cyABQQp3cyAUIAEgFXFzaiAGaiEBIAkhBgwACwALBSAAIA\n FqIgNB6ABqIANBzABqKAIAIANBKGooAgAgA0EsaigCACICQRl3IAJBDndzIAJBA3ZzIANB4ABqKAIAIgJBD3cgAkENd3M\n gAkEKdnNqamo2AgAgAUEEaiEBDAELCyAAIAYgE2o2AiQgACAJIBJqNgIgIAAgByARajYCHCAAIAQgEGo2AhggACAIIAxq\n NgIUIAAgAyANajYCECAAIAIgDmo2AgwgACABIA9qNgIIC9YDAgZ/An4jAEHwAGsiASQAIAFBoKfAABBfIAFBOGogARBfI\n AAQRAJAAkACQCABAn8gACgCOCICQRBMBEAgAkF/ahA5DAELIAEpAzAiCEIBfCIHIAhUDQEgACkDMCIIQoCAgICAgICAgH\n 9RQQAgB0J/URsNAiABQThqIAggB3+nECghByABIAEpA2ggB0I6hnw3A2ggACABQThqEGIgABBEQQILIgMQLSAAQQhqIQQ\n DQCADRQ0DIAEgASkDCEI5hkKAgICAgICAgAKDIAEpAwBCAYeEIgc3AwAgASAAKQMAIAd9IgdC//////////8DgzcDOEEA\n IQIDQCAHQjqHIQcgAkEoRkUEQCABIAJqIgVBCGoiBiAFQRBqKQMAQjmGQoCAgICAgICAAoMgBikDAEIBh4QiCDcDACABI\n AJqQUBrIAIgBGopAwAgCH0gB3wiB0L//////////wODNwMAIAJBCGohAgwBCwsgASABKQMwQgGHIgg3AzAgASAAKQMwIA\n h9IAd8Igc3A2ggACABQThqIAdCP4enQQFqEE8gA0F/aiEDDAALAAtBoKLAAEEZQbyiwAAQWwALQdCiwABBH0G8osAAEFs\n ACyAAQQE2AjggAUHwAGokAAuhAwEBfyMAQZADayIGJAAgBkEIakHAABByGiAGQcgAakGoAhByGiAGQcgAahBDA0AgAQRA\n IAZByABqQQAQPiABQX9qIQEMAQUCQCACBEAgBkHIAGogAiADEHoLIAQEQCAGQcgAaiAEIAUQegsgBkGIA2pCADcDACAGQ\n YADakIANwMAIAZB+AJqQgA3AwAgBkIANwPwAiAGKAJIIQEgBigCTCECIAZByABqQYABED4DQCAGKAJIQf8DcUHAA0ZFBE\n AgBkHIAGpBABA+DAELCyAGQawBaiABNgIAIAZBqAFqIAI2AgAgBkHIAGoQEUEAIQJBACEBA0AgAUEgRkUEQCAGQfACaiA\n BaiABQXxxIAZqQdAAaigCACACQX9zQRhxdjoAACACQQhqIQIgAUEBaiEBDAELCyAGQcgAahBDQQAhAQNAIAFBIEZFBEAg\n BkEIaiABaiAGQfACaiABai0AADoAACABQQFqIQEMAQsLQQAhAQNAIAFBIEYNASAAIAFqIAZBCGogAWotAAA6AAAgAUEBa\n iEBDAALAAsLCyAGQZADaiQAC6EDAQN/IwBBgAZrIgEkACABIABBgAFqIgMQXiABQYABaiADEF4gAUGAAWoQMiABQYACai\n ABEF4gAUGAAmogAEGAAmoiAhAPIAFBgANqIAIQXiABQYADahAyIAIgAUGAAWoQkAEgAiABQYABahCVASACEKgBIAIQpwE\n gAhCnASACEKgBIAFBgANqQQwQnwEgAUGAA2oQVSABQYADahCoASABQYAEaiABQYADahBeIAFBgARqIAIQDyABQYAFaiAB\n QYABahBeIAFBgAVqIAFBgANqEJUBIAFBgAVqEKgBIAIgAUGAAmoQDyABQYACaiABQYADahCQASABQYACaiABQYADahCVA\n SABQYADaiABQYACahCVASABQYADahCoASABQYABaiABQYADahB9IAFBgAFqEKgBIAFBgAVqIAFBgAFqEA8gAUGABWogAU\n GABGoQlQEgAUGAAmogABCQASABQYACaiABEA8gACABQYABahCQASAAEKgBIAAgAUGAAmoQDyAAEKcBIAAQqAEgAyABQYA\n FahCQASADEKgBIAFBgAZqJAALhQMBBH8CQAJAIAFBgAJPBEAgAEEYaigCACEEAkACQCAAIAAoAgwiAkYEQCAAQRRBECAA\n QRRqIgIoAgAiAxtqKAIAIgENAUEAIQIMAgsgACgCCCIBIAI2AgwgAiABNgIIDAELIAIgAEEQaiADGyEDA0AgAyEFIAEiA\n kEUaiIDKAIAIgFFBEAgAkEQaiEDIAIoAhAhAQsgAQ0ACyAFQQA2AgALIARFDQIgACAAQRxqKAIAQQJ0QeS3wQBqIgEoAg\n BHBEAgBEEQQRQgBCgCECAARhtqIAI2AgAgAkUNAwwCCyABIAI2AgAgAg0BQdi1wQBB2LXBACgCAEF+IAAoAhx3cTYCAA8\n LIABBDGooAgAiAiAAQQhqKAIAIgBHBEAgACACNgIMIAIgADYCCA8LQdS1wQBB1LXBACgCAEF+IAFBA3Z3cTYCAAwBCyAC\n IAQ2AhggACgCECIBBEAgAiABNgIQIAEgAjYCGAsgAEEUaigCACIARQ0AIAJBFGogADYCACAAIAI2AhgLC7MCAQF/IwBBg\n AtrIgUkACAFEC8gBUGAAmoQLyAFQYAEahAvIAVBgAZqQTgQchogBUEBNgK4BiAFQcAGakE4EHIaIAVB+AZqQQE2AgAgBU\n GAB2pBOBByGiAFQQE2ArgHIAVBwAdqQTgQchogBUH4B2pBATYCACAFQYAIakE4EHIaIAVBATYCuAggBUHACGpBOBByGiA\n FQfgIakEBNgIAIAEgAiAFQYAGaiAFQYAHaiAFQYAIahAeIAVBgAhqIAMQoAEgBUGABmogBBCgASAFQYAJaiAFQYAGaiAF\n QYAHahCRASAFIAVBgAlqEJIBIAVBgAlqIAVBgAhqEJsBIAVBgARqIAVBgAlqEJIBIAVBgARqEGYgACAFIAVBgAJqIAVBg\n ARqEHYgAEEDNgKABiAFQYALaiQAC7ECAQF/IwBBgAtrIgQkACAEEC8gBEGAAmoQLyAEQYAEahAvIARBgAZqQTgQchogBE\n EBNgK4BiAEQcAGakE4EHIaIARB+AZqQQE2AgAgBEGAB2pBOBByGiAEQQE2ArgHIARBwAdqQTgQchogBEH4B2pBATYCACA\n EQYAIakE4EHIaIARBATYCuAggBEHACGpBOBByGiAEQfgIakEBNgIAIAEgBEGABmogBEGAB2ogBEGACGoQJSAEQYAIaiAC\n EKABIARBgAZqIAMQoAEgBEGACWogBEGABmogBEGAB2oQkQEgBCAEQYAJahCSASAEQYAJaiAEQYAIahCbASAEQYAEaiAEQ\n YAJahCSASAEQYAEahBmIAAgBCAEQYACaiAEQYAEahB2IABBAzYCgAYgBEGAC2okAAvJAgEDfyMAQcACayIBJAAgASAAQU\n BrIgMQhQEgARADIAFBQGsgAxCFASABQUBrIABBgAFqIgIQSCABQYABaiACEIUBIAFBgAFqEAMgAiABEKUBIAIgARB4IAI\n QRCACEE4gAhBOIAIQRCABQYABakEMEFIgAUHAAWogAUGAAWoQhQEgAUHAAWogAhBIIAFBgAJqIAEQhQEgAUGAAmogAUGA\n AWoQeCABQYACahBEIAIgAUFAaxBIIAFBQGsgAUGAAWoQpQEgAUFAayABQYABahB4IAFBgAFqIAFBQGsQeCABIAFBgAFqE\n IABIAEQRCABQYACaiABEEggAUGAAmogAUHAAWoQeCABQUBrIAAQpQEgAUFAayADEEggACABEKUBIAAQRCAAIAFBQGsQSC\n AAEE4gABBEIAMgAUGAAmoQpQEgAxBEIAFBwAJqJAALrQIBA38jAEGABGsiAiQAIAIgABBeIAJBgAFqIABBgAFqIgMQXiA\n CQYACakE4EHIaIAJBATYCuAIgAkHAAmpBOBByGiACQfgCakEBNgIAIAJBgANqIAMQXiACIAEQDyACQYABaiABQYABaiIE\n EA8gAkGAAmogBBCQASACQYACaiABEJUBIAJBgANqIAAQlQEgAkGAAmoQqAEgAkGAA2oQqAEgAkGAA2ogAkGAAmoQDyACQ\n YACaiACEJABIAJBgAJqEDogAkGAA2ogAkGAAmoQlQEgAkGAA2oQqAEgAkGAAmogAkGAAWoQkAEgAkGAAmoQOiADIAJBgA\n NqEJABIAMgAkGAAmoQlQEgAkGAAWoQVSAAIAJBgAFqEJABIAAgAhCVASAAEKwBIAJBgARqJAALvQIBA38jAEGACGsiASQ\n AIAEgABCOASABQYACaiAAQYAEaiICEI4BIAFBgARqIABBgAJqIgMQjgEgAUGABmoQLyAAECIgAUGABmogABCSASABQYAG\n aiAAEJYBIAAgAUGABmoQlgEgABCsASABELYBIAEQrwEgACABEJYBIAFBgAJqECIgAUGAAmoQZiABQYAGaiABQYACahCSA\n SABQYAGaiABQYACahCWASABQYACaiABQYAGahCWASABQYACahCsASABQYAEahAiIAFBgAZqIAFBgARqEJIBIAFBgAZqIA\n FBgARqEJYBIAFBgARqIAFBgAZqEJYBIAFBgARqEKwBIAMQrgEgAxCvASACELYBIAIQrwEgAyABQYACahCWASACIAFBgAR\n qEJYBIABBBTYCgAYgABCaASABQYAIaiQAC7ICAQN/IwBBgAhrIgEkACAAKAKABkEBRwRAIAEgABCOASABQYACaiAAQYAC\n aiIDEI4BIAFBgARqIABBgARqIgIQjgEgAUGABmogABCOASABECIgAUGAAmogAhAZIAFBgAJqEK8BIAFBgAJqEKwBIAFBg\n ARqECIgAUGABmogAxAZIAFBgAZqEK8BIAIgABCWASACIAMQlgEgAhCsASACECIgACABEJIBIAEgAUGAAmoQlgEgARCsAS\n ABIAFBgARqEJYBIAEgAUGABmoQlgEgARCsASABECsgAUGAAmoQZiABQYAEahBmIAAgAUGAAmoQlgEgAyABQYAEahCSASA\n DIAFBgAZqEJYBIAIgARCWASAAQQRBBSAAKAKABkF+cUECRhs2AoAGIAAQmQELIAFBgAhqJAALigIBAn8jAEHgAWsiAiQA\n IAAQRCACQQhqQTAQchogAkIBNwMAIAJBOGogABBfIAJB8ABqIAEQXyACQagBakE4EHIaIAAQdANAIAJBOGogAkHwAGoQN\n UF/TARAA0ACQCADQQBMDQAgAkHwAGpBARA7IAJBARA7IAJBqAFqIAJBOGoQayACQagBaiACQfAAahBiIAJBqAFqEEQgAk\n E4aiACQagBaiACKQPYAUI/h6dBAWoiARBPIAJBqAFqIAAQayACQagBaiACEGEgAkGoAWoQRCAAIAJBqAFqIAEQTyADQX9\n qIQMMAQsLBSACQQEQLSACQfAAakEBEC0gA0EBaiEDDAELCyACQeABaiQAC54CAQF/IwBBgA1rIgMkACADIAEQaiADEJkB\n IANBiAZqIAIQXyADQYgGahBEIANBwAZqIANBiAZqEF8gA0HABmpBAxAoGiADQcAGahBEIANB+AZqIAMQagJAIANBwAZqE\n FpFBEAgA0HABmoQKUF/aiECA0AgAkEBTQRAIANB+AZqEJoBDAMLIANB+AZqEBoCQAJAIANBwAZqIAJBf2oiAhBXIANBiA\n ZqIAIQV2tBAWoOAwECAAILIANB+AZqIAMQDgwBCyADEJMBIANB+AZqIAMQDiADEJMBDAALAAsgA0H4BmoQsAEgA0H4B2o\n QqQEgA0H4CGoQrQEgA0H4CmoQrQEgA0EBNgL4DAsgACADQfgGakGIBhBnGiADQYANaiQAC5ACAQJ/IwBBgAJrIgUkACAF\n QYABaiAAEF4gAiAFQYABahCQASAFQYABaiAAQYABahBeIAQgBUGAAWoQkAEgBUGAAWogAEGAAmoiBhBeIAUgBUGAAWoQX\n iAFQYABaiAGEF4gAyAFQYABahCQASAFQYABaiABQYABaiIGEF4gBSAFQYABahAPIAVBgAFqIAEQXiADIAVBgAFqEA8gAi\n ADEH0gAhCoASAEIAUQfSAEEKgBIAUgAhCQASACEFUgAhCoASAFQYABaiAGEF4gBSAFQYABahAPIAMgBBCQASAFQYABaiA\n BEF4gAyAFQYABahAPIAMgBRB9IAMQqAEgBBA6IAQQqAEgACABEAsgBUGAAmokAAvkAQECfyMAQcABayIDJAAgAxBLIAAg\n ASACQR91IgQgAnMgBEF/c2pBAm0iAkF/akEfdhBtIAAgAUHAAWogAkEBc0F/akEfdhBtIAAgAUGAA2ogAkECc0F/akEfd\n hBtIAAgAUHABGogAkEDc0F/akEfdhBtIAAgAUGABmogAkEEc0F/akEfdhBtIAAgAUHAB2ogAkEFc0F/akEfdhBtIAAgAU\n GACWogAkEGc0F/akEfdhBtIAAgAUHACmogAkEHc0F/akEfdhBtIAMgABB/IAMQpgEgACADIARBAXEQbSADQcABaiQAC+Q\n BAQJ/IwBBgANrIgMkACADECogACABIAJBH3UiBCACcyAEQX9zakECbSICQX9qQR92EG8gACABQYADaiACQQFzQX9qQR92\n EG8gACABQYAGaiACQQJzQX9qQR92EG8gACABQYAJaiACQQNzQX9qQR92EG8gACABQYAMaiACQQRzQX9qQR92EG8gACABQ\n YAPaiACQQVzQX9qQR92EG8gACABQYASaiACQQZzQX9qQR92EG8gACABQYAVaiACQQdzQX9qQR92EG8gAyAAEH4gAxCcAS\n AAIAMgBEEBcRBvIANBgANqJAALvAEBAn8jAEGwAWsiAiQAIAJBMBByIQIDQCADQTBGBEACQCABQTBqIQEgAkEwaiACEHV\n BACEDA0AgA0EwRg0BIAIgA2ogASADai0AADoAACADQQFqIQMMAAsACwUgAiADaiABIANqLQAAOgAAIANBAWohAwwBCwsg\n AkHwAGogAhB1IABBOBByIgBBATYCOCAAQUBrQTgQciAAQfgAakEBNgIAIAAgAkHwAGoQpQEgAkEwahClASACQbABaiQAC\n 9QBAQJ/IwBBgANrIgEkACABIAAQXiABQYABaiAAQYABaiICEF4gAUGAAmogABBeIAFBgAJqIAIQDyABIAIQlQEgAUGAAW\n oQVSABQYABaiAAEJUBIAEQqAEgAUGAAWoQqAEgACABEJABIAAgAUGAAWoQDyABQYABaiABQYACahCQASABQYABahBVIAF\n BgAFqIAFBgAJqEJUBIAFBgAFqEKgBIAFBgAFqEDogACABQYABahCVASABQYACahCnASACIAFBgAJqEJABIAAQrAEgAUGA\n A2okAAvEAQEBfyMAQYADayIDJAAgA0EIaiABEIUBAkAgAkUEQCADQQhqEAcMAQsgA0EIaiACEKUBCyADQcgAakHYo8AAE\n F8gA0GAAWogA0HIAGoQiwEgA0HAAWogA0EIahCFASADQcABahADIANBwAFqIAEQSCAAIAEQhQEgACADQQhqEEggA0GAAm\n ogA0HAAWoQhQEgABBYIQEgA0HAAmogABCFASADQcACahBBIANBwAJqEEQgACADQcACaiABEHkgA0GAA2okAAufAQEBfyM\n AQfAAayICJAAgAiABEF9BACEBIAJBOGpBOBByGiAAEEQCQCAAIAIQNUEASA0AA0AgAkEBEC0gAUEBaiEBIAAgAhA1QX9K\n DQALA0AgAUEATA0BIAJBARA7IAJBOGogABBrIAJBOGogAhBiIAJBOGoQRCAAIAJBOGogAikDaEI/h6dBAWoQTyABQX9qI\n QEMAAsACyACQfAAaiQAC7IBAQF/IwBBgAJrIgQkACAEQYABaiAAEF4gAyAEQYABahCQASAEQYABaiAAQYABahBeIAQgBE\n GAAWoQXiAEQYABaiAAQYACahBeIAIgBEGAAWoQkAEgASAEEJABIAEgAhAPIAMQMiAEEDIgAhAyIAEQpwEgARA6IAEQqAE\n gARBVIAEQqAEgAkEMEJ8BIANBAxCfASACEFUgAhCoASACIAQQfSACEKgBIAAQFCAEQYACaiQAC58BAQJ/IwBBgAJrIgIk\n ACAAIAEQXiAAEDIgAkGIAWpB2KTAABBfIAJBCGpBOBByGiACQQE2AkAgAkHIAGpBOBByIAJBgAFqQQE2AgAgAkHAAWogA\n kGIAWoQiwEgAkEIaiACQcABahClARCyASACQQhqEKgBIAJBCGoQVSACQQhqEKgBIAAgARAPIAAgAkEIahCVASAAEKsBIA\n JBgAJqJAALowEBAX8jAEEwayIGJAAgBkEQaiAAIAEQsQEgBiAGKAIUIgA2AhwgBiAGKAIQIgE2AhggBkEIaiACIAMQsQE\n gBiAGKAIMIgI2AiQgBiAGKAIIIgM2AiAgBiAEIAUQsQEgBiAGKAIEIgQ2AiwgBiAGKAIAIgU2AiggASAAIAMgAiAFIAQQ\n ACAGQShqEKQBIAZBIGoQpAEgBkEYahCkASAGQTBqJAALiAECA38DfiMAQRBrIgIkAAN+IANBOEYEfiACQRBqJAAgBgUgA\n iAAIANqIgQpAwAiBSAFQj+HIAGsIgUgBUI/hxAxIAQgAikDACIHIAZ8IgVC//////////8DgzcDACAFIAdUrSACQQhqKQ\n MAIAZCP4d8fEIGhiAFQjqIhCEGIANBCGohAwwBCwsLhAECA38BfiMAQUBqIgEkACABQQhqIAAQXyABQQhqEEQgAUE4aiE\n CQQYhA0HcAiEAAn8DQEEAIANBAEgNARogAikDACIEUARAIAJBeGohAiAAQUZqIQAgA0F/aiEDDAELCwN/IARQBH8gAAUg\n AEEBaiEAIARCAn8hBAwBCwsLIAFBQGskAAuHAQEBfyMAQcABayIBJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByGiAAQfgAa\n kEBNgIAIAEQUCABQYgBakE4EHIaIABBgAFqIAFBgAEQZxogAEGAAmpBOBByGiAAQbgCakEBNgIAIABBvAJqIAFBhAFqQT\n wQZxogAEH4AmpBATYCACABQcABaiQAC48BAQJ/IwBBgAJrIgEkACAAEKwBIAEgABBeIAFBgAFqQTgQchogAUEBNgK4ASA\n BQcABakE4EHIaIAFB+AFqQQE2AgAgASAAQYABaiICEJUBIAEQOiABQYABaiABEJABIAFBgAFqIAIQlQEgAiABEJABIAIg\n ABCVASAAIAFBgAFqEJABIAAQrAEgAUGAAmokAAt9AgF/An4jAEGAAWsiASQAIAFBCGogABCFASABQQhqEBIgAUHIAGogA\n UEIahCDAUEIIQADQCAAQThGRQRAIAFByABqIABqKQMAIAKEIQIgAEEIaiEADAELCyABKQNIIQMgAUGAAWokACACQn98IA\n NCAYVCf3yDQjqIp0EBcQuJAQIBfwJ+IAAgACkDMCABQT9xrSIDhiAAKQMoQTogAWtBP3GtIgSHhDcDMCAAQShqIQFBBiE\n CA0AgAkEBTQRAIAAgACkDACADhkL//////////wODNwMABSABIAEpAwAgA4ZC//////////8DgyABQXhqIgEpAwAgBIeE\n NwMAIAJBf2ohAgwBCwsLiQECAX8CfiAAIAApA2BBOiABQTpwIgFrrSIEhyAAKQNoIAGtIgOGhDcDaCAAQeAAaiEBQQ0hA\n gNAIAJBAU0EQCAAIAApAwAgA4ZC//////////8DgzcDAAUgASABKQMAIAOGQv//////////A4MgAUF4aiIBKQMAIASHhD\n cDACACQX9qIQIMAQsLC3EBAX8jAEFAaiIBJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByGiAAQfgAakEBNgIAIAFBCGpBOBB\n yGiAAQYABakE4EHIaIABBuAFqQQE2AgAgAEG8AWogAUEEakE8EGcaIABB+AFqQQE2AgAgAUFAayQAC4EBAgF/AX4gAEHw\n ABByIQADQCACQThGBEACQCAAIAEpAzAiA0I6hzcDOCAAIANC//////////8DgzcDMCAAQUBrIQBBACECA0AgAkEwRg0BI\n AAgAmpCADcDACACQQhqIQIMAAsACwUgACACaiABIAJqKQMANwMAIAJBCGohAgwBCwsLdQECfiAAIANCIIgiBSABQiCIIg\n Z+IAIgA358IAEgBH58IANC/////w+DIgIgAUL/////D4MiAX4iA0IgiCACIAZ+fCICQiCIfCABIAV+IAJC/////w+DfCI\n BQiCIfDcDCCAAIANC/////w+DIAFCIIaENwMAC3YBAn8jAEHAAWsiASQAIAEgABCFASABQUBrIAAQhQEgAUGAAWogAEFA\n ayICEIUBIAEgAhB4IAFBQGsgABB4IAFBQGsQRCACIAFBQGsQSCABQYABahBBIAAgAUGAAWoQeCABEEQgABBEIAAgARBII\n AFBwAFqJAALkwEBAn9B0LXBAEHQtcEAKAIAQQFqNgIAAkACQEGYucEAKAIAQQFGBEBBnLnBAEGcucEAKAIAQQFqIgA2Ag\n AgAEECSw0CQaC5wQAoAgAiAUF/Sg0BDAILQZi5wQBCgYCAgBA3AwBBoLnBACgCACIAQQBIDQFBoLnBACAANgIAAAtBoLn\n BACABNgIAIABBAUsNAAALAAtnAQJ/IwBBQGoiAiQAIAAQRCACIAAQhQECQCABRQRAIAAQBwwBCyAAIAEQpQELQQAhAQNA\n IAFBAUsgA3JFBEAgABADIAFBAEchAyABIAFFaiEBDAELCyAAIAIQSCAAEBIgAkFAayQAC18CAX8EfkIBIQNBMCECA38gA\n kF4RgR/IARCAYYgA3ynQX9qBSABIAJqKQMAIgUgACACaikDACIGfUI6hyADgyAEhCEEIAJBeGohAiAFIAaFQn98QjqHIA\n ODIQMMAQsLC2ACAX8EfkIBIQNB6AAhAgN/IAJBeEYEfyAEQgGGIAN8p0F/agUgASACaikDACIFIAAgAmopAwAiBn1COoc\n gA4MgBIQhBCACQXhqIQIgBSAGhUJ/fEI6hyADgyEDDAELCwt3AQN/IwBBgAJrIgIkACACIAEQXiACQYABaiABEF4gAhAy\n IAJBgAFqIAIQDyAAIAJBgAFqEJcBIABBgAJqIgMgAkGAAWoQlwEgAEGABGoiBCACQYABahCXASADIAEQogEgBCACEKIBI\n ABBBTYCgAYgAkGAAmokAAt6AQF/IwBB4ANrIgEkACABQYABakHApcAAEF8gAUG4AWpB+KXAABBfIAEgAUGAAWogAUG4AW\n oQSSABQfACakGwpsAAEF8gAUGoA2pB6KbAABBfIAFB8AFqIAFB8AJqIAFBqANqEEkgACABIAFB8AFqED8gAUHgA2okAAt\n nACAAQQF2IAByIgBBAnYgAHIiAEEEdiAAciIAQQh2IAByIgBBEHYgAHIiACAAQQF2QdWq1aoFcWsiAEECdkGz5syZA3Eg\n AEGz5syZA3FqIgBBBHYgAGpBj568+ABxQYGChAhsQRh2C2cBAn8jAEGAAWsiASQAIAEgABCFASABQUBrQTgQchogAUEBN\n gJ4IAEgAEFAayICEHggARBBIAFBQGsgARClASABQUBrIAIQeCACIAEQpQEgAiAAEHggACABQUBrEKUBIAFBgAFqJAALaA\n IBfwJ+IAFBP3GtIQNBOiABa0E/ca0hBEEAIQEDQCABQTBGBEAgACAAKQMwIAOHNwMwBSAAIAFqIgIgAkEIaikDACAEhkL\n //////////wODIAIpAwAgA4eENwMAIAFBCGohAQwBCwsLbAEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYC\n ACADQSxqQQI2AgAgA0ICNwIMIANBlKjAADYCCCADQQI2AiQgAyADQSBqNgIYIAMgAzYCKCADIANBBGo2AiAgA0EIaiACE\n HAAC2wBAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakECNgIAIANCAjcCDCADQbCqwAA2AgggA0\n ECNgIkIAMgA0EgajYCGCADIANBBGo2AiggAyADNgIgIANBCGogAhBwAAtlAQJ/IAAgACgCACICQQhqIgM2AgAgACACQQN\n 2QTxxakEoaiICIAFB/wFxIAIoAgBBCHRyNgIAAkACQCADRQRAIABBADYCACAAIAAoAgRBAWo2AgQMAQsgA0H/A3ENAQsg\n ABARCwtnAQF/IwBBgAJrIgMkACAAECogACABEJABIABBgAFqIgEgAhCQASAAQYACahCwASAAEKgBIAMgABAmIANBgAFqI\n AEQXiADQYABahAyIANBgAFqIAMQe0UEQCAAEJgBCyADQYACaiQAC18BAn8jAEGAAWsiASQAIAAQqAEgASAAEIUBIAFBQG\n sgAEFAayICEIUBIAEQAyABQUBrEAMgASABQUBrEHggAUEAEDQgACABEEggARBBIAEQRCACIAEQSCABQYABaiQAC10BAn8\n jAEFAaiIBJAAgAUEIakGgp8AAEF8gAUEIaiAAKAI4QX9qEDkiAhAtIAAgAUEIahBjIABBASACQQFqQR9xdCICNgI4IAJB\n gICAEE4EQCAAEBILIAFBQGskAAtfAgF/AX4jAEHwAGsiASQAIAFBoKfAABBfIAApAwAhAiABQThqIAAQXyAAQQEQOyABQ\n ThqIAEQYSABQThqEEQgAUE4akEBEDsgACABQThqIAJCAoGnEE8gAUHwAGokAAt7AQJ/IABBKGohAgNAIAFBgAJGBEAgAE\n LnzKfQ1tDrs7t/NwIIIABCADcCACAAQSBqQquzj/yRo7Pw2wA3AgAgAEEYakL/pLmIxZHagpt/NwIAIABBEGpC8ua746O\n n/aelfzcCAAUgASACakEANgIAIAFBBGohAQwBCwsLaQICfwF+IAAgACkDACIDQv//////////A4M3AwBBCCEBA0AgA0I6\n hyEDIAFBMEYEQCAAIAApAzAgA3w3AzAFIAAgAWoiAiACKQMAIAN8IgNC//////////8DgzcDACABQQhqIQEMAQsLC2oCA\n n8BfiAAIAApAwAiA0L//////////wODNwMAQQghAQNAIANCOochAyABQegARgRAIAAgACkDaCADfDcDaAUgACABaiICIA\n IpAwAgA3wiA0L//////////wODNwMAIAFBCGohAQwBCwsLWQEBfyMAQYADayIEJAAgBCADEF4gBBBAIARBgAFqIAEQXiA\n EQYACaiACEF4gBEGAAWogBBAPIARBgAJqIAQQDyAAIARBgAFqIARBgAJqEJEBIARBgANqJAALWQECfyMAQUBqIgEkAAJA\n IAAQhAENACABQQEQigEgAEGAAWoiAiABEFkNACACQQAQNCAAIAIQSCAAEBIgAEFAayIAIAIQSCAAEBIgAiABEKUBCyABQ\n UBrJAALVwEBfyMAQbABayICJAAgATQCOCAANAI4fkKAgIAQWQRAIAAQEgsgAkEIaiAAIAEQCCACQfgAaiACQQhqEAUgAC\n ACQfgAahBrIABBAjYCOCACQbABaiQAC08BAn8jAEFAaiIDJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByIABB+ABqQQE2AgA\n gAyABEIsBIAAgAxClASADIAIQiwEgAxClASADQUBrJAALWQECfyMAQYABayIBJAACQCAAEIgBDQAgARBQIABBgAJqIgIg\n ARB7DQAgAhBAIAAgAhAPIAAQqwEgAEGAAWoiACACEA8gABCrASACIAEQkAELIAFBgAFqJAALSwEBfyMAQUBqIgEkACAAQ\n TgQciIAQQE2AjggAUEBEIoBIABBQGsgAUHAABBnGiAAQYABakE4EHIaIABBuAFqQQE2AgAgAUFAayQAC0sBAn8jAEHwAG\n siASQAIAAQd0UEQCABQaCnwAAQXyABQThqIAAQgwEgASABQThqEGIgARBEIAFBOGogARA1IQILIAFB8ABqJAAgAgtPAQF\n /IwBBgAFrIgIkACAAIAEQhQEgABADIAJByABqQdikwAAQXyACQQhqIAJByABqEIsBIAAgARBIIAAgAkEIahB4IAAQEiAC\n QYABaiQAC0kBAn8DQCABQThGRQRAIAAgAWoiAiACKQMAQgGGNwMAIAFBCGohAQwBCwsgACAAKAI4QQF0IgE2AjggAUGAg\n IAQTgRAIAAQEgsLQgIBfwJ+QQAgAmusIQQDQCADQThHBEAgACADaiICIAIpAwAiBSABIANqKQMAhSAEgyAFhTcDACADQQ\n hqIQMMAQsLC0YBAn8jAEFAaiIBJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByIABB+ABqQQE2AgAgAUEBEIoBIAAgARClARC\n yASABQUBrJAALTgEBfyMAQYAEayIBJAAgABAvIAEQLyABQYACahAvIABBgAJqIAFBgAIQZxogAEGABGogAUGAAmpBgAIQ\n ZxogAEEANgKABiABQYAEaiQAC0sBAX8jAEFAaiICJAACQCAAKAI4IAFsQYCAgBBOBEAgAiABEIoBIAAgAhBIDAELIAAgA\n RAoGiAAIAAoAjggAWw2AjgLIAJBQGskAAtKAAJ/IAFBgIDEAEcEQEEBIAAoAhggASAAQRxqKAIAKAIQEQMADQEaCyACRQ\n RAQQAPCyAAKAIYIAJBACAAQRxqKAIAKAIMEQUACwtCAQF/IwBBQGoiAiQAIAJBCGpBgIDAABBfIAEgAkEIahBrIAEQRCA\n AIAEQayAAQQMQKBogABBEIAAQKSACQUBrJAALSQECfyMAQcABayIBJAAgASAAEF4gAUGAAWogABCFASAAIABBQGsiAhCl\n ASAAEEEgAiABQYABahClASAAIAEQlQEgAUHAAWokAAtIAQF/IwBB4AFrIgEkACABQeihwAAQXyABQThqIAAgARAIIAFBq\n AFqIAFBOGoQBSAAIAFBqAFqEGsgAEECNgI4IAFB4AFqJAALPgEBfyABQTpuIQIgAUGVA00EQCAAIAJBA3RqKQMAQgEgAU\n H//wNxQTpwrYaDQgBVDwsgAkEHQdSdwAAQPAALQAIBfwF+IwBBgAFrIgEkACABQQhqIAAQhQEgAUEIahASIAFByABqIAF\n BCGoQgwEgASkDSCABQYABaiQAQgKBpws8AQF/IwBBgAFrIgIkACACIAAQhQEgAkFAayABEIUBIAIQEiACQUBrEBIgAiAC\n QUBrEDUgAkGAAWokAEULPAIBfwF+A38gAUE4RgR/IAJCf3xCgICAgICAgIAEg0I6iKcFIAAgAWopAwAgAoQhAiABQQhqI\n QEMAQsLC0cBAX8jAEEgayIDJAAgA0EUakEANgIAIANB9KrAADYCECADQgE3AgQgAyABNgIcIAMgADYCGCADIANBGGo2Ag\n AgAyACEHAACzkBAX8jAEFAaiICJAAgAiAAEIUBIAIQByABBEAgASACEKUBCyACEAMgAiAAEEggAhAsIAJBQGskAAs6AQF\n /IABBOBByIQADQCACQTBGRQRAIABBCBAtIAAgACkDACABIAJqMQAAfDcDACACQQFqIQIMAQsLCzQBAX8gAEE4EHIiAEEB\n NgI4IABBQGtBOBByIABB+ABqQQE2AgAgACABEKUBIAFBQGsQpQELMAEBfyAAQTgQciEAA0AgAkE4RwRAIAAgAmogASACa\n ikDADcDACACQQhqIQIMAQsLCz8BAX8jAEGAAmsiASQAIAAQUSABEG4gACABEJIBIABBgAJqEK0BIABBgARqEK0BIABBAT\n YCgAYgAUGAAmokAAswAQJ/A0AgAkE4RwRAIAAgAmoiAyADKQMAIAEgAmopAwB8NwMAIAJBCGohAgwBCwsLMAECfwNAIAJ\n BOEcEQCAAIAJqIgMgAykDACABIAJqKQMAfTcDACACQQhqIQIMAQsLCzABAn8DQCACQThHBEAgACACaiIDIAEgAmopAwAg\n AykDAH03AwAgAkEIaiECDAELCwsxAQJ/A0AgAkHwAEcEQCAAIAJqIgMgAykDACABIAJqKQMAfTcDACACQQhqIQIMAQsLC\n zEBAn8DQCACQfAARwRAIAAgAmoiAyADKQMAIAEgAmopAwB8NwMAIAJBCGohAgwBCwsLOQECfyMAQYABayIBJAAgASAAQY\n ABaiICEF4gAiAAEJABIAEQVSAAIAEQkAEgABCsASABQYABaiQACzMBAX8gAgRAIAAhAwNAIAMgAS0AADoAACABQQFqIQE\n gA0EBaiEDIAJBf2oiAg0ACwsgAAtIAQN/IwBBEGsiASQAIAAoAgwhAyAAKAIIIgJFBEBB9KrAAEErQaCrwAAQWwALIAEg\n AzYCCCABIAA2AgQgASACNgIAIAEQcQALMgEBfyAAQgE3AwBBCCEBA0AgAUE4RkUEQCAAIAFqQgA3AwAgAUEIaiEBDAELC\n yAAEFYLNwAgABBRIAAgARCSASAAQYACaiABQYACahCSASAAQYAEaiABQYAEahCSASAAIAEoAoAGNgKABgsoAQF/A0AgAk\n E4RwRAIAAgAmogASACaikDADcDACACQQhqIQIMAQsLCzMAIAAgARCSASAAQYACaiABQYACahCSASAAQYAEaiABQYAEahC\n SASAAIAEoAoAGNgKABgsoACAAIAEgAhB5IABBQGsgAUFAayACEHkgAEGAAWogAUGAAWogAhB5Cy4BAX8jAEGAAWsiASQA\n IAAQLyABEFAgACABEJABIABBgAFqEKkBIAFBgAFqJAALLQAgACABIAIQjwEgAEGAAWogAUGAAWogAhCPASAAQYACaiABQ\n YACaiACEI8BCzQBAX8jAEEQayICJAAgAiABNgIMIAIgADYCCCACQaSowAA2AgQgAkH0qsAANgIAIAIQaAALPgEBfyMAQR\n BrIgEkACABQQhqIABBCGooAgA2AgAgASAAKQIANwMAIAEoAgAiAEEUaigCABogACgCBBoQMwALKQEBfyABBEAgACECA0A\n gAkEAOgAAIAJBAWohAiABQX9qIgENAAsLIAALKwEBfyMAQcABayICJAAgAhBLIAIgARB/IAIQpgEgACACEAwgAkHAAWok\n AAsiAQF/A0AgAUE4RwRAIAAgAWpCADcDACABQQhqIQEMAQsLCycBAX8jAEFAaiICJAAgAkEIaiABEF0gACACQQhqEIsBI\n AJBQGskAAsrACAAEFEgACABEJIBIABBgAJqIAIQkgEgAEGABGogAxCSASAAQQU2AoAGCyMBAX8jAEFAaiIBJAAgASAAEI\n UBIAEQEiABEFogAUFAayQACykAIAAgARBhIAAgACgCOCABKAI4aiIBNgI4IAFBgICAEE4EQCAAEBILCyUAIAAgASACEE8\n gAEEAIAJrIAAoAjgiACABKAI4c3EgAHM2AjgLIwADQCACBEAgACABLQAAED4gAkF/aiECIAFBAWohAQwBCwsLIgACQCAA\n IAEQWUUNACAAQUBrIAFBQGsQWUUNAEEBDwtBAAskAAJAIABBfE0EQCAARQRAQQQhAAwCCyAAEAEiAA0BCwALIAALJwEBf\n yMAQYABayICJAAgAiABEF4gAhA6IAAgAhCVASACQYABaiQACycAIAAgARCQASAAQYABaiABQYABahCQASAAQYACaiABQY\n ACahCQAQslACAAIAEQpQEgAEFAayABQUBrEKUBIABBgAFqIAFBgAFqEKUBCyUBAX8jAEFAaiICJAAgAiABEIUBIAIQQSA\n AIAIQeCACQUBrJAALKAEBfyMAQYACayICJAAgAiABEI4BIAIQKyAAIAIQlgEgAkGAAmokAAsjAEGEAiACSQRAIAJBhAIg\n AxA9AAsgACACNgIEIAAgATYCAAsiAQF/IwBB8ABrIgIkACACIAEQMCAAIAIQBSACQfAAaiQACxwAAkAgABB3RQ0AIABBg\n AFqEHdFDQBBAQ8LQQALHwAgAEE4EHIiAEEBNgI4IAAgARBrIAAgASgCODYCOAseAAJAIAAQhwFFDQAgAEGAAWoQhwFFDQ\n BBAQ8LQQALGwACQCAAEHdFDQAgAEFAaxB3RQ0AQQEPC0EACx4AAkAgABCHAUUNACAAQYACahCHAUUNAEEBDwtBAAsaAQF\n /IAAQWCIBIABBQGsQWCABcyAAEHdxcwsaACAAQTgQciIAQQE2AjggACABEJ0BIAAQVgsZACAAQTgQciIAQQE2AjggACAB\n EGsgABBWCxcAIAAQRCAAKAIAQX8gAUEfcXRBf3NxCxoAIAAgARBfIAAgAhAkIAAgAhBjIAAgAhAkCxwAIAAQLyAAIAEQk\n AEgAEGAAWogAUGAAWoQkAELGAAgACABIAIQeSAAQUBrIAFBQGsgAhB5CxYAIAAgARClASAAQUBrIAFBQGsQpQELGAAgAB\n AvIAAgARCQASAAQYABaiACEJABCxgAIAAgARCQASAAQYABaiABQYABahCQAQsZACAAEK4BIABBgAJqELYBIABBgARqEK4\n BCxcAIAAQsgEgAEFAaxBpIABBgAFqELIBCxQAIAAgARB4IABBQGsgAUFAaxB4CxgAIAAgARCVASAAQYABaiABQYABahCV\n AQsYACAAEKYBIABBgAFqIgAQpgEgACABEA8LGQAgABCpASAAQYABahCwASAAQYACahCpAQsZACAAEKwBIABBgAJqEKwBI\n ABBgARqEKwBCxkAIAAQqgEgAEGAAmoQqgEgAEGABGoQqgELFgAgABAvIAAgARCQASAAQYABahCpAQsWACAAQYABaiIAEK\n gBIAAQOiAAEKgBCxQAIAAQRCAAIAApAwAgAax8NwMACxQAIAAQRCAAIAApAwAgAax9NwMACxEAIAAgARBSIABBQGsgARB\n SCxEAIAAgARBIIABBQGsgARBICxQAIAAgARCQASAAQYABaiACEJABCxIAIAAgARAPIABBgAFqIAEQDwsUACAAIAEQoAEg\n AEGAAWogARCgAQsRACAAKAIEBEAgACgCABAJCwsSACAAIAEQayAAIAEoAjg2AjgLDwAgAEFAayIAEEEgABBECw0AIAAQT\n iAAQUBrEE4LDQAgABBEIABBQGsQRAsPACAAELIBIABBQGsQsgELEAAgABCrASAAQYABahCrAQsNACAAEBIgAEFAaxASCx\n AAIAAQqAEgAEGAAWoQqAELEAAgABCpASAAQYABahCpAQsPACAAQYABahA6IAAQrAELEAAgABCnASAAQYABahCnAQsOACA\n AEGkgAEFAaxCyAQsQACAAIAI2AgQgACABNgIACw0AIAAQdCAAQQE2AjgLDAAgABBBIAAgARB4CwwAIAAgARBrIAAQVgsN\n ACAAEDogACABEJUBCwsAIAAQOiAAEKwBCwwAQunQotvMouq7RgsDAAELAwABCwv+PZoCAEGCgMAACwcBAAAAAQI0AEG4g\n MAAC9sBuF8jku11BwFjT+D5WE+pA2dPnKtLeD0Akew9ffXy9AMD1g8fDSwgAK1vjPCZwa4A8DtNkAEAAADzStxtEor3AI\n uwH1tTsFYDgvLFYx+X7AAysL/NHtseAkehVLifHyMCQHo6ogw4sQGz4sMPAAAAAHNyYy9ibHMxMjM4MS9wYWlyLnJzqAA\n QABQAAAAHAQAACQAAAKgAEAAUAAAADAEAAA0AAACoABAAFAAAABEBAAANAAAAAAAAAAEAAAD///8Dv/+W/78AaQM7VYAd\n moCAAefMIPV1pkwBp+1zAEGogsAACyz+//7///8BAosAgILYBPYB4Y1oiW++kwLOdqvfPagdAMZpulHOdt8Dy1nGFwBB4\n ILAAAuRAZABEAATAAAA0AEAABgAAACQARAAEwAAANQBAAARAAAAkAEQABMAAADWAQAAHAAAAHNyYy9ibHMxMjM4MS9lY3\n AucnMAkAEQABMAAAAZBQAADQAAAJABEAATAAAAGwUAAAkAAACQARAAEwAAABwFAAARAAAAkAEQABMAAAAfBQAAHAAAAAA\n AAAABAAEAAAABAjQAQaCEwAALuSCQARAAEwAAAGcEAAARAAAAkAEQABMAAABsBAAADQAAAJABEAATAAAAbgQAABUAAACQ\n ARAAEwAAAHAEAAAgAAAAHUxYLQgo9ADXXz44aOPbAInJGoj9roEBomOjmrkPTgGY6rCCSW3JAoBOWs9QOu4AimlEAQAAA\n ADgKxeO6UjMAXSpOluMVsgAolXvNe/8FADngsIBPcnDA8EWIDvuPnUAusRiAAwgWgDRCCkuAQAAALgh6L1iEMUA3/4Vlz\n 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\n GZYzb76G2KA7ycH+3PFk8AK2qmngEAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAbxEQABIAAAB8AQAAFAAAAAA\n AAABhdHRlbXB0IHRvIGRpdmlkZSB3aXRoIG92ZXJmbG93c3JjL2JsczEyMzgxL2ZwLnJzAAAAbxEQABIAAAASAgAADQAA\n AG8REAASAAAAHgIAACYAAABvERAAEgAAAB4CAAAjAAAAbxEQABIAAAAkAgAAFwAAAG8REAASAAAAJAIAABQAAAAAAAAAq\n qr//////gHu//9UrP//AupBYg9rDyoBw5z9ShTOEwJLd2TXrEtDAu3pxpKm+V8Cox4RoAEAAABAEhAAFAAAABUBAAATAA\n AAQBIQABQAAAAeAQAAGAAAAEASEAAUAAAAJAEAABwAAABzcmMvYmxzMTIzODEvZWNwMi5ycwAAAAAEAEGQpcAAC7wGQBI\n QABQAAADmAgAACQAAAEASEAAUAAAA7gIAAA0AAABAEhAAFAAAAP4CAAAhAAAAuL0hwchWgAD1+24BqskAA7pwFz2uR7YA\n RNEK7ADpUwN65MZREMUtA0kBgkmkwiMALyuqJAAAAAB+KwRdBX2sAflVF+WERDwDNJME9ce9GwJp12rYgmRCA9BrWWVPJ\n 4gA6DRrH9hnnAAFtgI+AQAAAAEouAiGVJMBeKIo6w5zsgIjyRINFpWmAQq1nU73MqoCm/2tGjUu2gJxczJjhFufAHdSXc\n 4AAAAAvnlf8F8HqQJqaAc710nDAfOzmulytSoB0pm8jp0W+gEoPsuZi8IrAKw0qwwzzakDAkpsYAAAAACrqv/////+Ae7\n //1Ss//8C6kFiD2sPKgHDnP1KFM4TAkt3ZNesS0MC7enGkqb5XwKjHhGgAQAAAAgUEAALAAAAjwEAAA8AAAAIFBAACwAA\n AKcBAAATAAAACBQQAAsAAACqAQAADQAAAHNyYy9obWFjLnJzADQUEAAgAAAAVBQQABIAAAADAAAAAAAAAAEAAAAEAAAAa\n W5kZXggb3V0IG9mIGJvdW5kczogdGhlIGxlbiBpcyAgYnV0IHRoZSBpbmRleCBpcyAwMDAxMDIwMzA0MDUwNjA3MDgwOT\n EwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ\n 0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5\n ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OQAAQBUQABAAAABQFRAAIgAAAHJhbmdlIGVuZCBpb\n mRleCAgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIG\n EgYE5vbmVgIHZhbHVlALAVEAAcAAAA7gEAAB4AAABsaWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzAEGIrMAACwEBAEH\n IrMAACwEBAEGIrcAACwEBAEHIrcAACwEBAEGIrsAACwEBAEHIrsAACwEBAEGIr8AACwEBAEHIr8AACwEBAEGIsMAACwEB\n AEHIsMAACwEBAEGIscAACwEBAEHIscAACwEBAEGIssAACwEBAEHIssAACwEBAEGIs8AACwEBAEHIs8AACwEBAEGItMAAC\n wEBAEHItMAACwEBAEGItcAACwEBAEHItcAACwEBAEGItsAACwEBAEHItsAACwEBAEGIt8AACwEBAEHIt8AACwEBAEGIuM\n AACwEBAEHIuMAACwEBAEGIucAACwEBAEHIucAACwEBAEGIusAACwEBAEHIusAACwEBAEGIu8AACwEBAEHIu8AACwEBAEG\n IvMAACwEBAEHIvMAACwEBAEGIvcAACwEBAEHIvcAACwEBAEGIvsAACwEBAEHIvsAACwEBAEGIv8AACwEBAEHIv8AACwEB\n AEGIwMAACwEBAEHIwMAACwEBAEGIwcAACwEBAEHIwcAACwEBAEGIwsAACwEBAEHIwsAACwEBAEGIw8AACwEBAEHIw8AAC\n wEBAEGIxMAACwEBAEHIxMAACwEBAEGIxcAACwEBAEHIxcAACwEBAEGIxsAACwEBAEHIxsAACwEBAEGIx8AACwEBAEHIx8\n AACwEBAEGIyMAACwEBAEHIyMAACwEBAEGIycAACwEBAEHIycAACwEBAEGIysAACwEBAEHIysAACwEBAEGIy8AACwEBAEH\n Iy8AACwEBAEGIzMAACwEBAEHIzMAACwEBAEGIzcAACwEBAEHIzcAACwEBAEGIzsAACwEBAEHIzsAACwEBAEGIz8AACwEB\n AEHIz8AACwEBAEGI0MAACwEBAEHI0MAACwEBAEGI0cAACwEBAEHI0cAACwEBAEGI0sAACwEBAEHI0sAACwEBAEGI08AAC\n wEBAEHI08AACwEBAEGI1MAACwEBAEHI1MAACwEBAEGI1cAACwEBAEHI1cAACwEBAEGI1sAACwEBAEHI1sAACwEBAEGI18\n AACwEBAEHI18AACwEBAEGI2MAACwEBAEHI2MAACwEBAEGI2cAACwEBAEHI2cAACwEBAEGI2sAACwEBAEHI2sAACwEBAEG\n I28AACwEBAEHI28AACwEBAEGI3MAACwEBAEHI3MAACwEBAEGI3cAACwEBAEHI3cAACwEBAEGI3sAACwEBAEHI3sAACwEB\n AEGI38AACwEBAEHI38AACwEBAEGI4MAACwEBAEHI4MAACwEBAEGI4cAACwEBAEHI4cAACwEBAEGI4sAACwEBAEHI4sAAC\n wEBAEGI48AACwEBAEHI48AACwEBAEGI5MAACwEBAEHI5MAACwEBAEGI5cAACwEBAEHI5cAACwEBAEGI5sAACwEBAEHI5s\n AACwEBAEGI58AACwEBAEHI58AACwEBAEGI6MAACwEBAEHI6MAACwEBAEGI6cAACwEBAEHI6cAACwEBAEGI6sAACwEBAEH\n I6sAACwEBAEGI68AACwEBAEHI68AACwEBAEGI7MAACwEBAEHI7MAACwEBAEGI7cAACwEBAEHI7cAACwEBAEGI7sAACwEB\n AEHI7sAACwEBAEGI78AACwEBAEHI78AACwEBAEGI8MAACwEBAEHI8MAACwEBAEGI8cAACwEBAEHI8cAACwEBAEGI8sAAC\n wEBAEHI8sAACwEBAEGI88AACwEBAEHI88AACwEBAEGI9MAACwEBAEHI9MAACwEBAEGI9cAACwEBAEHI9cAACwEBAEGI9s\n AACwEBAEHI9sAACwEBAEGI98AACwEBAEHI98AACwEBAEGI+MAACwEBAEHI+MAACwEBAEGI+cAACwEBAEHI+cAACwEBAEG\n I+sAACwEBAEHI+sAACwEBAEGI+8AACwEBAEHI+8AACwEBAEGI/MAACwEBAEHI/MAACwEBAEGI/cAACwEBAEHI/cAACwEB\n AEGI/sAACwEBAEHI/sAACwEBAEGI/8AACwEBAEHI/8AACwEBAEGIgMEACwEBAEHIgMEACwEBAEGIgcEACwEBAEHIgcEAC\n wEBAEGIgsEACwEBAEHIgsEACwEBAEGIg8EACwEBAEHIg8EACwEBAEGIhMEACwEBAEHIhMEACwEBAEGIhcEACwEBAEHIhc\n EACwEBAEGIhsEACwEBAEHIhsEACwEBAEGIh8EACwEBAEHIh8EACwEBAEGIiMEACwEBAEHIiMEACwEBAEGIicEACwEBAEH\n IicEACwEBAEGIisEACwEBAEHIisEACwEBAEGIi8EACwEBAEHIi8EACwEBAEGIjMEACwEBAEHIjMEACwEBAEGIjcEACwEB\n AEHIjcEACwEBAEGIjsEACwEBAEHIjsEACwEBAEGIj8EACwEBAEHIj8EACwEBAEGIkMEACwEBAEHIkMEACwEBAEGIkcEAC\n wEBAEHIkcEACwEBAEGIksEACwEBAEHIksEACwEBAEGIk8EACwEBAEHIk8EACwEBAEGIlMEACwEBAEHIlMEACwEBAEGIlc\n EACwEBAEHIlcEACwEBAEGIlsEACwEBAEHIlsEACwEBAEGIl8EACwEBAEHIl8EACwEBAEGImMEACwEBAEHImMEACwEBAEG\n ImcEACwEBAEHImcEACwEBAEGImsEACwEBAEHImsEACwEBAEGIm8EACwEBAEHIm8EACwEBAEGInMEACwEBAEHInMEACwEB\n AEGIncEACwEBAEHIncEACwEBAEGInsEACwEBAEHInsEACwEBAEGIn8EACwEBAEHIn8EACwEBAEGIoMEACwEBAEHIoMEAC\n wEBAEGIocEACwEBAEHIocEACwEBAEGIosEACwEBAEHIosEACwEBAEGIo8EACwEBAEHIo8EACwEBAEGIpMEACwEBAEHIpM\n EACwEBAEGIpcEACwEBAEHIpcEACwEBAEGIpsEACwEBAEHIpsEACwEBAEGIp8EACwEBAEHIp8EACwEBAEGIqMEACwEBAEH\n IqMEACwEBAEGIqcEACwEBAEHIqcEACwEBAEGIqsEACwEBAEHIqsEACwEBAEGIq8EACwEBAEHIq8EACwEBAEGIrMEACwEB\n AEHIrMEACwEBAEGIrcEACwEBAEHIrcEACwEBAEGIrsEACwEBAEHIrsEACwEBAEGIr8EACwEBAEHIr8EACwEBAEGIsMEAC\n wEBAEHIsMEACwEBAEGIscEACwEBAEHIscEACwEBAEGIssEACwEBAEHIssEACwEBAEGIs8EACwEBAEHIs8EACwEBAEGItM\n EACwEBAEHItMEACwEBAEGItcEACwEBAEHItcEACwEBAHsJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2V\n kLWJ5AwVydXN0Yx0xLjQ5LjAgKGUxODg0YThlMyAyMDIwLTEyLTI5KQZ3YWxydXMGMC4xOC4wDHdhc20tYmluZGdlbhIw\n LjIuNzAgKGI2MzU1YzI3MCk=\n`.replace(/[^0-9a-zA-Z/+]/g, '');\nconst wasmBytes = base64Arraybuffer.decode(wasmBytesBase64);\n/**\n * @returns {number}\n */\nexport function bls_init() {\n let ret = wasm.bls_init();\n return ret;\n}\nlet cachegetUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1);\n getUint8Memory0().set(arg, ptr / 1);\n return [ptr, arg.length];\n}\n/**\n * @param {Uint8Array} sig\n * @param {Uint8Array} m\n * @param {Uint8Array} w\n * @returns {number}\n */\nexport function bls_verify(sig, m, w) {\n const [ptr0, len0] = passArray8ToWasm0(sig, wasm.__wbindgen_malloc);\n const [ptr1, len1] = passArray8ToWasm0(m, wasm.__wbindgen_malloc);\n const [ptr2, len2] = passArray8ToWasm0(w, wasm.__wbindgen_malloc);\n const ret = wasm.bls_verify(ptr0, len0, ptr1, len1, ptr2, len2);\n return ret;\n}\nasync function load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n }\n else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n }\n else {\n return instance;\n }\n }\n}\nasync function init() {\n const imports = {};\n const { instance, module } = await load(wasmBytes, imports);\n wasm = instance.exports;\n init.__wbindgen_wasm_module = module;\n return wasm;\n}\n/**\n * If `module_or_path` is {RequestInfo} or {URL}, makes a request and\n * for everything else, calls `WebAssembly.instantiate` directly.\n *\n * @param {InitInput | Promise} module_or_path\n *\n * @returns {Promise}\n */\nexport default init;\n//# sourceMappingURL=bls.js.map","import init, { bls_init, bls_verify } from '../vendor/bls/bls';\nexport let verify;\n/**\n *\n * @param pk primary key: Uint8Array\n * @param sig signature: Uint8Array\n * @param msg message: Uint8Array\n * @returns Promise resolving a boolean\n */\nexport async function blsVerify(pk, sig, msg) {\n if (!verify) {\n await init();\n if (bls_init() !== 0) {\n throw new Error('Cannot initialize BLS');\n }\n verify = (pk1, sig1, msg1) => {\n // Reorder things from what the WASM expects (sig, m, w).\n return bls_verify(sig1, msg1, pk1) === 0;\n };\n }\n return verify(pk, sig, msg);\n}\n//# sourceMappingURL=bls.js.map","import { Buffer } from 'buffer/';\nimport { getDefaultAgent } from './agent';\nimport * as cbor from './cbor';\nimport { AgentError } from './errors';\nimport { hash } from './request_id';\nimport { blobFromBuffer, blobFromText, blobFromUint8Array, blobToHex, blobToUint8Array, } from '@dfinity/candid';\nimport { blsVerify } from './utils/bls';\n/**\n * A certificate needs to be verified (using {@link Certificate.prototype.verify})\n * before it can be used.\n */\nexport class UnverifiedCertificateError extends AgentError {\n constructor() {\n super(`Cannot lookup unverified certificate. Call 'verify()' first.`);\n }\n}\n/**\n * Make a human readable string out of a hash tree.\n * @param tree\n */\nexport function hashTreeToString(tree) {\n const indent = (s) => s\n .split('\\n')\n .map(x => ' ' + x)\n .join('\\n');\n function labelToString(label) {\n const decoder = new TextDecoder(undefined, { fatal: true });\n try {\n return JSON.stringify(decoder.decode(label));\n }\n catch (e) {\n return `data(...${label.byteLength} bytes)`;\n }\n }\n switch (tree[0]) {\n case 0:\n return '()';\n case 1: {\n const left = hashTreeToString(tree[1]);\n const right = hashTreeToString(tree[2]);\n return `sub(\\n left:\\n${indent(left)}\\n---\\n right:\\n${indent(right)}\\n)`;\n }\n case 2: {\n const label = labelToString(tree[1]);\n const sub = hashTreeToString(tree[2]);\n return `label(\\n label:\\n${indent(label)}\\n sub:\\n${indent(sub)}\\n)`;\n }\n case 3: {\n return `leaf(...${tree[1].byteLength} bytes)`;\n }\n case 4: {\n return `pruned(${blobToHex(blobFromUint8Array(new Uint8Array(tree[1])))}`;\n }\n default: {\n return `unknown(${JSON.stringify(tree[0])})`;\n }\n }\n}\nfunction isBufferEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\nexport class Certificate {\n constructor(response, _agent = getDefaultAgent()) {\n this._agent = _agent;\n this.verified = false;\n this._rootKey = null;\n this.cert = cbor.decode(response.certificate);\n }\n lookupEx(path) {\n this.checkState();\n return lookupPathEx(path, this.cert.tree);\n }\n lookup(path) {\n this.checkState();\n return lookup_path(path, this.cert.tree);\n }\n async verify() {\n const rootHash = await reconstruct(this.cert.tree);\n const derKey = await this._checkDelegation(this.cert.delegation);\n const sig = this.cert.signature;\n const key = extractDER(derKey);\n const msg = Buffer.concat([domain_sep('ic-state-root'), rootHash]);\n const res = await blsVerify(key, sig, msg);\n this.verified = res;\n return res;\n }\n checkState() {\n if (!this.verified) {\n throw new UnverifiedCertificateError();\n }\n }\n async _checkDelegation(d) {\n if (!d) {\n if (!this._rootKey) {\n if (this._agent.rootKey) {\n this._rootKey = this._agent.rootKey;\n return this._rootKey;\n }\n throw new Error(`Agent does not have a rootKey. Do you need to call 'fetchRootKey'?`);\n }\n return this._rootKey;\n }\n const cert = new Certificate(d, this._agent);\n if (!(await cert.verify())) {\n throw new Error('fail to verify delegation certificate');\n }\n const lookup = cert.lookupEx(['subnet', d.subnet_id, 'public_key']);\n if (!lookup) {\n throw new Error(`Could not find subnet key for subnet 0x${d.subnet_id.toString('hex')}`);\n }\n return Buffer.from(lookup);\n }\n}\nconst DER_PREFIX = Buffer.from('308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100', 'hex');\nconst KEY_LENGTH = 96;\nfunction extractDER(buf) {\n const expectedLength = DER_PREFIX.length + KEY_LENGTH;\n if (buf.length !== expectedLength) {\n throw new TypeError(`BLS DER-encoded public key must be ${expectedLength} bytes long`);\n }\n const prefix = buf.slice(0, DER_PREFIX.length);\n if (!isBufferEqual(prefix, DER_PREFIX)) {\n throw new TypeError(`BLS DER-encoded public key is invalid. Expect the following prefix: ${DER_PREFIX}, but get ${prefix}`);\n }\n return buf.slice(DER_PREFIX.length);\n}\n/**\n * @param t\n */\nexport async function reconstruct(t) {\n switch (t[0]) {\n case 0 /* Empty */:\n return hash(domain_sep('ic-hashtree-empty'));\n case 4 /* Pruned */:\n return Buffer.from(t[1]);\n case 3 /* Leaf */:\n return hash(Buffer.concat([\n domain_sep('ic-hashtree-leaf'),\n Buffer.from(t[1]),\n ]));\n case 2 /* Labeled */:\n return hash(Buffer.concat([\n domain_sep('ic-hashtree-labeled'),\n Buffer.from(t[1]),\n Buffer.from(await reconstruct(t[2])),\n ]));\n case 1 /* Fork */:\n return hash(Buffer.concat([\n domain_sep('ic-hashtree-fork'),\n Buffer.from(await reconstruct(t[1])),\n Buffer.from(await reconstruct(t[2])),\n ]));\n default:\n throw new Error('unreachable');\n }\n}\nfunction domain_sep(s) {\n const buf = Buffer.alloc(1);\n buf.writeUInt8(s.length, 0);\n return Buffer.concat([buf, Buffer.from(s)]);\n}\n/**\n *\n * @param path\n * @param tree\n */\nexport function lookupPathEx(path, tree) {\n const maybeReturn = lookup_path(path.map(p => {\n if (typeof p === 'string') {\n return blobFromText(p);\n }\n else {\n return blobFromUint8Array(new Uint8Array(p));\n }\n }), tree);\n return maybeReturn && blobToUint8Array(blobFromBuffer(maybeReturn));\n}\n/**\n * @param path\n * @param tree\n */\nexport function lookup_path(path, tree) {\n if (path.length === 0) {\n switch (tree[0]) {\n case 3 /* Leaf */: {\n return Buffer.from(tree[1]);\n }\n default: {\n return undefined;\n }\n }\n }\n const t = find_label(path[0], flatten_forks(tree));\n if (t) {\n return lookup_path(path.slice(1), t);\n }\n}\nfunction flatten_forks(t) {\n switch (t[0]) {\n case 0 /* Empty */:\n return [];\n case 1 /* Fork */:\n return flatten_forks(t[1]).concat(flatten_forks(t[2]));\n default:\n return [t];\n }\n}\nfunction find_label(l, trees) {\n if (trees.length === 0) {\n return undefined;\n }\n for (const t of trees) {\n if (t[0] === 2 /* Labeled */) {\n const p = Buffer.from(t[1]);\n if (isBufferEqual(l, p)) {\n return t[2];\n }\n }\n }\n}\n//# sourceMappingURL=certificate.js.map","import { RequestStatusResponseStatus } from '../agent';\nimport { Certificate } from '../certificate';\nimport { toHex as requestIdToHex } from '../request_id';\nimport { blobFromText } from '@dfinity/candid';\nexport * as strategy from './strategy';\nexport { defaultStrategy } from './strategy';\n/**\n * Polls the IC to check the status of the given request then\n * returns the response bytes once the request has been processed.\n * @param agent The agent to use to poll read_state.\n * @param canisterId The effective canister ID.\n * @param requestId The Request ID to poll status for.\n * @param strategy A polling strategy.\n */\nexport async function pollForResponse(agent, canisterId, requestId, strategy) {\n const path = [blobFromText('request_status'), requestId];\n const state = await agent.readState(canisterId, { paths: [path] });\n const cert = new Certificate(state, agent);\n const verified = await cert.verify();\n if (!verified) {\n throw new Error('Fail to verify certificate');\n }\n const maybeBuf = cert.lookup([...path, blobFromText('status')]);\n let status;\n if (typeof maybeBuf === 'undefined') {\n // Missing requestId means we need to wait\n status = RequestStatusResponseStatus.Unknown;\n }\n else {\n status = maybeBuf.toString();\n }\n switch (status) {\n case RequestStatusResponseStatus.Replied: {\n return cert.lookup([...path, blobFromText('reply')]);\n }\n case RequestStatusResponseStatus.Received:\n case RequestStatusResponseStatus.Unknown:\n case RequestStatusResponseStatus.Processing:\n // Execute the polling strategy, then retry.\n await strategy(canisterId, requestId, status);\n return pollForResponse(agent, canisterId, requestId, strategy);\n case RequestStatusResponseStatus.Rejected: {\n const rejectCode = cert.lookup([...path, blobFromText('reject_code')]).toString();\n const rejectMessage = cert.lookup([...path, blobFromText('reject_message')]).toString();\n throw new Error(`Call was rejected:\\n` +\n ` Request ID: ${requestIdToHex(requestId)}\\n` +\n ` Reject code: ${rejectCode}\\n` +\n ` Reject text: ${rejectMessage}\\n`);\n }\n case RequestStatusResponseStatus.Done:\n // This is _technically_ not an error, but we still didn't see the `Replied` status so\n // we don't know the result and cannot decode it.\n throw new Error(`Call was marked as done but we never saw the reply:\\n` +\n ` Request ID: ${requestIdToHex(requestId)}\\n`);\n }\n throw new Error('unreachable');\n}\n//# sourceMappingURL=index.js.map","import { Buffer } from 'buffer/';\nimport { getDefaultAgent, ReplicaRejectCode, } from './agent';\nimport { getManagementCanister } from './canisters/management';\nimport { AgentError } from './errors';\nimport { IDL } from '@dfinity/candid';\nimport { pollForResponse, strategy } from './polling';\nimport { Principal } from '@dfinity/principal';\nimport { toHex as requestIdToHex } from './request_id';\nexport class ActorCallError extends AgentError {\n constructor(canisterId, methodName, type, props) {\n super([\n `Call failed:`,\n ` Canister: ${canisterId.toText()}`,\n ` Method: ${methodName} (${type})`,\n ...Object.getOwnPropertyNames(props).map(n => ` \"${n}\": ${JSON.stringify(props[n])}`),\n ].join('\\n'));\n this.canisterId = canisterId;\n this.methodName = methodName;\n this.type = type;\n this.props = props;\n }\n}\nexport class QueryCallRejectedError extends ActorCallError {\n constructor(canisterId, methodName, result) {\n var _a;\n super(canisterId, methodName, 'query', {\n Status: result.status,\n Code: (_a = ReplicaRejectCode[result.reject_code]) !== null && _a !== void 0 ? _a : `Unknown Code \"${result.reject_code}\"`,\n Message: result.reject_message,\n });\n this.result = result;\n }\n}\nexport class UpdateCallRejectedError extends ActorCallError {\n constructor(canisterId, methodName, requestId, response) {\n super(canisterId, methodName, 'update', {\n 'Request ID': requestIdToHex(requestId),\n 'HTTP status code': response.status.toString(),\n 'HTTP status text': response.statusText,\n });\n this.requestId = requestId;\n this.response = response;\n }\n}\n/**\n * The mode used when installing a canister.\n */\nexport var CanisterInstallMode;\n(function (CanisterInstallMode) {\n CanisterInstallMode[\"Install\"] = \"install\";\n CanisterInstallMode[\"Reinstall\"] = \"reinstall\";\n CanisterInstallMode[\"Upgrade\"] = \"upgrade\";\n})(CanisterInstallMode || (CanisterInstallMode = {}));\nconst metadataSymbol = Symbol.for('ic-agent-metadata');\n/**\n * An actor base class. An actor is an object containing only functions that will\n * return a promise. These functions are derived from the IDL definition.\n */\nexport class Actor {\n constructor(metadata) {\n this[metadataSymbol] = Object.freeze(metadata);\n }\n /**\n * Get the Agent class this Actor would call, or undefined if the Actor would use\n * the default agent (global.ic.agent).\n * @param actor The actor to get the agent of.\n */\n static agentOf(actor) {\n return actor[metadataSymbol].config.agent;\n }\n /**\n * Get the interface of an actor, in the form of an instance of a Service.\n * @param actor The actor to get the interface of.\n */\n static interfaceOf(actor) {\n return actor[metadataSymbol].service;\n }\n static canisterIdOf(actor) {\n return Principal.from(actor[metadataSymbol].config.canisterId);\n }\n static async install(fields, config) {\n const mode = fields.mode === undefined ? CanisterInstallMode.Install : fields.mode;\n // Need to transform the arg into a number array.\n const arg = fields.arg ? [...fields.arg] : [];\n // Same for module.\n const wasmModule = [...fields.module];\n const canisterId = typeof config.canisterId === 'string'\n ? Principal.fromText(config.canisterId)\n : config.canisterId;\n await getManagementCanister(config).install_code({\n mode: { [mode]: null },\n arg,\n wasm_module: wasmModule,\n canister_id: canisterId,\n });\n }\n static async createCanister(config) {\n const { canister_id: canisterId } = await getManagementCanister(config || {}).provisional_create_canister_with_cycles({ amount: [], settings: [] });\n return canisterId;\n }\n static async createAndInstallCanister(interfaceFactory, fields, config) {\n const canisterId = await this.createCanister(config);\n await this.install(Object.assign({}, fields), Object.assign(Object.assign({}, config), { canisterId }));\n return this.createActor(interfaceFactory, Object.assign(Object.assign({}, config), { canisterId }));\n }\n static createActorClass(interfaceFactory) {\n const service = interfaceFactory({ IDL });\n class CanisterActor extends Actor {\n constructor(config) {\n const canisterId = typeof config.canisterId === 'string'\n ? Principal.fromText(config.canisterId)\n : config.canisterId;\n super({\n config: Object.assign(Object.assign(Object.assign({}, DEFAULT_ACTOR_CONFIG), config), { canisterId }),\n service,\n });\n for (const [methodName, func] of service._fields) {\n this[methodName] = _createActorMethod(this, methodName, func);\n }\n }\n }\n return CanisterActor;\n }\n static createActor(interfaceFactory, configuration) {\n return new (this.createActorClass(interfaceFactory))(configuration);\n }\n}\n// IDL functions can have multiple return values, so decoding always\n// produces an array. Ensure that functions with single or zero return\n// values behave as expected.\nfunction decodeReturnValue(types, msg) {\n const returnValues = IDL.decode(types, Buffer.from(msg));\n switch (returnValues.length) {\n case 0:\n return undefined;\n case 1:\n return returnValues[0];\n default:\n return returnValues;\n }\n}\nconst DEFAULT_ACTOR_CONFIG = {\n pollingStrategyFactory: strategy.defaultStrategy,\n};\nfunction _createActorMethod(actor, methodName, func) {\n let caller;\n if (func.annotations.includes('query')) {\n caller = async (options, ...args) => {\n var _a, _b;\n // First, if there's a config transformation, call it.\n options = Object.assign(Object.assign({}, options), (_b = (_a = actor[metadataSymbol].config).queryTransform) === null || _b === void 0 ? void 0 : _b.call(_a, methodName, args, Object.assign(Object.assign({}, actor[metadataSymbol].config), options)));\n const agent = options.agent || actor[metadataSymbol].config.agent || getDefaultAgent();\n const cid = Principal.from(options.canisterId || actor[metadataSymbol].config.canisterId);\n const arg = IDL.encode(func.argTypes, args);\n const result = await agent.query(cid, { methodName, arg });\n switch (result.status) {\n case \"rejected\" /* Rejected */:\n throw new QueryCallRejectedError(cid, methodName, result);\n case \"replied\" /* Replied */:\n return decodeReturnValue(func.retTypes, result.reply.arg);\n }\n };\n }\n else {\n caller = async (options, ...args) => {\n var _a, _b;\n // First, if there's a config transformation, call it.\n options = Object.assign(Object.assign({}, options), (_b = (_a = actor[metadataSymbol].config).callTransform) === null || _b === void 0 ? void 0 : _b.call(_a, methodName, args, Object.assign(Object.assign({}, actor[metadataSymbol].config), options)));\n const agent = options.agent || actor[metadataSymbol].config.agent || getDefaultAgent();\n const { canisterId, effectiveCanisterId, pollingStrategyFactory } = Object.assign(Object.assign(Object.assign({}, DEFAULT_ACTOR_CONFIG), actor[metadataSymbol].config), options);\n const cid = Principal.from(canisterId);\n const ecid = effectiveCanisterId !== undefined ? Principal.from(effectiveCanisterId) : cid;\n const arg = IDL.encode(func.argTypes, args);\n const { requestId, response } = await agent.call(cid, {\n methodName,\n arg,\n effectiveCanisterId: ecid,\n });\n if (!response.ok) {\n throw new UpdateCallRejectedError(cid, methodName, requestId, response);\n }\n const pollStrategy = pollingStrategyFactory();\n const responseBytes = await pollForResponse(agent, ecid, requestId, pollStrategy);\n if (responseBytes !== undefined) {\n return decodeReturnValue(func.retTypes, responseBytes);\n }\n else if (func.retTypes.length === 0) {\n return undefined;\n }\n else {\n throw new Error(`Call was returned undefined, but type [${func.retTypes.join(',')}].`);\n }\n };\n }\n const handler = (...args) => caller({}, ...args);\n handler.withOptions =\n (options) => (...args) => caller(options, ...args);\n return handler;\n}\n//# sourceMappingURL=actor.js.map","import { toHex } from '..';\nconst FIVE_MINUTES_IN_MSEC = 5 * 60 * 1000;\n/**\n * A best practices polling strategy: wait 2 seconds before the first poll, then 1 second\n * with an exponential backoff factor of 1.2. Timeout after 5 minutes.\n */\nexport function defaultStrategy() {\n return chain(conditionalDelay(once(), 1000), backoff(1000, 1.2), timeout(FIVE_MINUTES_IN_MSEC));\n}\n/**\n * Predicate that returns true once.\n */\nexport function once() {\n let first = true;\n return async () => {\n if (first) {\n first = false;\n return true;\n }\n return false;\n };\n}\n/**\n * Delay the polling once.\n * @param condition A predicate that indicates when to delay.\n * @param timeInMsec The amount of time to delay.\n */\nexport function conditionalDelay(condition, timeInMsec) {\n return async (canisterId, requestId, status) => {\n if (await condition(canisterId, requestId, status)) {\n return new Promise(resolve => setTimeout(resolve, timeInMsec));\n }\n };\n}\n/**\n * Error out after a maximum number of polling has been done.\n * @param count The maximum attempts to poll.\n */\nexport function maxAttempts(count) {\n let attempts = count;\n return async (canisterId, requestId, status) => {\n if (--attempts <= 0) {\n throw new Error(`Failed to retrieve a reply for request after ${count} attempts:\\n` +\n ` Request ID: ${toHex(requestId)}\\n` +\n ` Request status: ${status}\\n`);\n }\n };\n}\n/**\n * Throttle polling.\n * @param throttleInMsec Amount in millisecond to wait between each polling.\n */\nexport function throttle(throttleInMsec) {\n return () => new Promise(resolve => setTimeout(resolve, throttleInMsec));\n}\n/**\n * Reject a call after a certain amount of time.\n * @param timeInMsec Time in milliseconds before the polling should be rejected.\n */\nexport function timeout(timeInMsec) {\n const end = Date.now() + timeInMsec;\n return async (canisterId, requestId, status) => {\n if (Date.now() > end) {\n throw new Error(`Request timed out after ${timeInMsec} msec:\\n` +\n ` Request ID: ${toHex(requestId)}\\n` +\n ` Request status: ${status}\\n`);\n }\n };\n}\n/**\n * A strategy that throttle, but using an exponential backoff strategy.\n * @param startingThrottleInMsec The throttle in milliseconds to start with.\n * @param backoffFactor The factor to multiple the throttle time between every poll. For\n * example if using 2, the throttle will double between every run.\n */\nexport function backoff(startingThrottleInMsec, backoffFactor) {\n let currentThrottling = startingThrottleInMsec;\n return () => new Promise(resolve => setTimeout(() => {\n currentThrottling *= backoffFactor;\n resolve();\n }, currentThrottling));\n}\n/**\n * Chain multiple polling strategy. This _chains_ the strategies, so if you pass in,\n * say, two throttling strategy of 1 second, it will result in a throttle of 2 seconds.\n * @param strategies A strategy list to chain.\n */\nexport function chain(...strategies) {\n return async (canisterId, requestId, status) => {\n for (const a of strategies) {\n await a(canisterId, requestId, status);\n }\n };\n}\n//# sourceMappingURL=strategy.js.map","export default ({ IDL }) => {\n return IDL.Service({ 'greet' : IDL.Func([IDL.Text], [IDL.Text], []) });\n};\nexport const init = ({ IDL }) => { return []; };","import idlImport from './hello.did.js';\nexport const idlFactory = idlImport;\nexport const canisterId = \"t5aaa-faaaa-aaaah-qab4a-cai\";\n","import { Actor, HttpAgent } from '@dfinity/agent';\nimport { idlFactory as hello_idl, canisterId as hello_id } from 'dfx-generated/hello';\nimport {\n backoff,\n chain,\n conditionalDelay,\n once,\n timeout\n} from '@dfinity/agent/lib/cjs/polling/strategy'\n\n\nconst pollingStrategyFactory = () => {\n return chain(\n conditionalDelay(once(), 0),\n backoff(0, 1),\n timeout(5 * 60 * 1000)\n )\n}\nconst agent = new HttpAgent();\nconst hello = Actor.createActor(hello_idl, { agent, canisterId: hello_id, pollingStrategyFactory});\n\ndocument.getElementById(\"clickMeBtn\").addEventListener(\"click\", async () => {\n const name = document.getElementById(\"name\").value.toString();\n const greeting = await hello.greet(name);\n\n document.getElementById(\"greeting\").innerText = greeting;\n});\n"],"sourceRoot":""}