1 |
- {"version":3,"sources":["webpack:///./node_modules/diffie-hellman/browser.js","webpack:///./node_modules/public-encrypt/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/browserify-aes/modes/ecb.js","webpack:///./node_modules/des.js/lib/des/cipher.js","webpack:///./src/wasm/wasm_exec.js","webpack:///./node_modules/asn1.js/lib/asn1/constants/index.js","webpack:///./node_modules/pdfjs-dist/build/pdf.worker.entry.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///./node_modules/hash-base/node_modules/safe-buffer/index.js","webpack:///./node_modules/hash.js/lib/hash/sha/224.js","webpack:///./node_modules/sha.js/sha.js","webpack:///./node_modules/readable-stream/duplex-browser.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/browserify-aes/streamCipher.js","webpack:///./node_modules/core-js/modules/_to-index.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/browserify-des/modes.js","webpack:///./node_modules/elliptic/lib/elliptic/curves.js","webpack:///./node_modules/des.js/lib/des/cbc.js","webpack:///./node_modules/public-encrypt/privateDecrypt.js","webpack:///./node_modules/core-js/modules/_typed.js","webpack:///./node_modules/browserify-sign/algos.js","webpack:///./node_modules/randombytes/browser.js","webpack:///./node_modules/hash.js/lib/hash/sha/1.js","webpack:///./src/components/pdf-view.vue?c532","webpack:///./node_modules/des.js/lib/des.js","webpack:///./node_modules/node-libs-browser/node_modules/inherits/inherits_browser.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/create-hmac/browser.js","webpack:///./node_modules/crypto-browserify/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./node_modules/browserify-des/index.js","webpack:///./src/wasm sync","webpack:///./node_modules/des.js/lib/des/ede.js","webpack:///./node_modules/pbkdf2/lib/async.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/index.js","webpack:///./node_modules/hash.js/lib/hash/hmac.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///./node_modules/core-js/modules/es6.reflect.construct.js","webpack:///./node_modules/core-js/modules/es6.typed.data-view.js","webpack:///./node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/parse-asn1/index.js","webpack:///./node_modules/readable-stream/writable-browser.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/short.js","webpack:///./node_modules/elliptic/lib/elliptic.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/index.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/core-js/modules/es6.typed.uint8-array.js","webpack:///./node_modules/browserify-aes/modes/cfb.js","webpack:///./node_modules/core-js/modules/_array-fill.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/der.js","webpack:///./node_modules/create-ecdh/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack:///./node_modules/bn.js/lib/bn.js","webpack:///./node_modules/browserify-sign/node_modules/safe-buffer/index.js","webpack:///./node_modules/browserify-aes/aes.js","webpack:///./node_modules/core-util-is/lib/util.js","webpack:///./node_modules/os-browserify/browser.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack:///./node_modules/browserify-aes/ghash.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack:///./node_modules/parse-asn1/asn1.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/index.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///./node_modules/asn1.js/lib/asn1/base/index.js","webpack:///./node_modules/browserify-aes/decrypter.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack:///./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/parse-asn1/fixProc.js","webpack:///./node_modules/des.js/lib/des/des.js","webpack:///./node_modules/sha.js/sha512.js","webpack:///./node_modules/browserify-aes/modes/ofb.js","webpack:///./node_modules/browserify-aes/modes/cfb1.js","webpack:///./node_modules/public-encrypt/withPublic.js","webpack:///./node_modules/pdfjs-dist/build/pdf.worker.js","webpack:///./node_modules/core-js/modules/es6.array.sort.js","webpack:///./node_modules/diffie-hellman/lib/dh.js","webpack:///./node_modules/parse-asn1/certificate.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///./node_modules/diffie-hellman/lib/generatePrime.js","webpack:///./node_modules/hash.js/lib/hash/sha.js","webpack:///./node_modules/create-hash/md5.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/core-js/modules/es6.string.iterator.js","webpack:///./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/des.js/lib/des/utils.js","webpack:///./node_modules/asn1.js/lib/asn1/base/buffer.js","webpack:///./src/components/pdf-catalogue-menu.vue","webpack:///src/components/pdf-catalogue-menu.vue","webpack:///./src/components/pdf-catalogue-menu.vue?f47c","webpack:///./src/components/pdf-catalogue-menu.vue?5345","webpack:///./src/components/pdf-catalogue.vue","webpack:///src/components/pdf-catalogue.vue","webpack:///./src/components/pdf-catalogue.vue?2f02","webpack:///./src/components/pdf-catalogue.vue?8b6e","webpack:///./node_modules/browserify-aes/modes/cfb8.js","webpack:///./node_modules/cipher-base/index.js","webpack:///./node_modules/public-encrypt/browser.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/mont.js","webpack:///./node_modules/core-js/modules/_meta.js","webpack:///./node_modules/sha.js/index.js","webpack:///./node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","webpack:///./node_modules/hmac-drbg/lib/hmac-drbg.js","webpack:///./node_modules/browserify-aes/modes/ctr.js","webpack:///./node_modules/core-js/modules/es6.array.fill.js","webpack:///./node_modules/hash.js/lib/hash/sha/256.js","webpack:///./node_modules/browserify-sign/browser/sign.js","webpack:///./node_modules/sha.js/sha224.js","webpack:///./node_modules/randomfill/browser.js","webpack:///./node_modules/minimalistic-crypto-utils/lib/utils.js","webpack:///./src/components/pdf-catalogue-menu.vue?2050","webpack:///./node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/core-js/modules/es6.date.now.js","webpack:///./node_modules/miller-rabin/lib/mr.js","webpack:///./node_modules/pbkdf2/lib/precondition.js","webpack:///./node_modules/string_decoder/lib/string_decoder.js","webpack:///./node_modules/hash.js/lib/hash.js","webpack:///./node_modules/sha.js/sha1.js","webpack:///./node_modules/asn1.js/lib/asn1.js","webpack:///./node_modules/elliptic/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/browserify-aes/authCipher.js","webpack:///./node_modules/asn1.js/lib/asn1/base/node.js","webpack:///./node_modules/public-encrypt/xor.js","webpack:///./src/components/pdf-view.vue","webpack:///src/components/pdf-view.vue","webpack:///./src/components/pdf-view.vue?9b34","webpack:///./src/components/pdf-view.vue?84c4","webpack:///./node_modules/asn1.js/lib/asn1/encoders/pem.js","webpack:///./node_modules/safe-buffer/index.js","webpack:///./node_modules/browserify-aes/encrypter.js","webpack:///./node_modules/asn1.js/lib/asn1/constants/der.js","webpack:///./node_modules/hash.js/lib/hash/sha/384.js","webpack:///./node_modules/pbkdf2/lib/to-buffer.js","webpack:///./node_modules/buffer-xor/index.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/pem.js","webpack:///./node_modules/node-libs-browser/node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///./node_modules/core-js/modules/es6.reflect.set.js","webpack:///./node_modules/hash-base/index.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack:///./node_modules/pdfjs-dist/build/pdf.js","webpack:///./node_modules/browserify-cipher/browser.js","webpack:///./node_modules/process-nextick-args/index.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/browserify-sign/browser/verify.js","webpack:///./node_modules/create-hash/browser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/errors-browser.js","webpack:///./node_modules/pbkdf2/lib/default-encoding.js","webpack:///./node_modules/pbkdf2/browser.js","webpack:///./node_modules/sha.js/sha256.js","webpack:///./node_modules/browserify-rsa/index.js","webpack:///./node_modules/hash.js/lib/hash/sha/common.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///./node_modules/public-encrypt/publicEncrypt.js","webpack:///./node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/evp_bytestokey/index.js","webpack:///./node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/core-js/modules/_validate-collection.js","webpack:///./node_modules/hash.js/lib/hash/sha/512.js","webpack:///./node_modules/ripemd160/index.js","webpack:///./node_modules/sha.js/hash.js","webpack:///./node_modules/browserify-sign/browser/index.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/signature.js","webpack:///./node_modules/util-deprecate/browser.js","webpack:///./node_modules/sha.js/sha384.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/index.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///./node_modules/core-js/modules/es6.reflect.delete-property.js","webpack:///./node_modules/core-js/modules/_array-copy-within.js","webpack:///./node_modules/browserify-aes/modes/index.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/key.js","webpack:///./node_modules/hash.js/lib/hash/ripemd.js","webpack:///./node_modules/asn1.js/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/browserify-aes/incr32.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/browserify-aes/modes/cbc.js","webpack:///./node_modules/core-js/modules/_collection-strong.js","webpack:///./node_modules/readable-stream/passthrough.js","webpack:///./node_modules/hash.js/lib/hash/utils.js","webpack:///./node_modules/safer-buffer/safer.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/der.js","webpack:///./node_modules/miller-rabin/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js","webpack:///./node_modules/readable-stream/transform.js","webpack:///./node_modules/core-js/modules/es6.reflect.get.js","webpack:///./node_modules/asn1.js/lib/asn1/base/reporter.js","webpack:///./node_modules/create-hmac/legacy.js","webpack:///./node_modules/stream-browserify/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./node_modules/minimalistic-assert/index.js","webpack:///./src/components/pdf-catalogue.vue?44f2","webpack:///./node_modules/readable-stream/lib/_stream_writable.js","webpack:///./src/common/watermark.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/core-js/modules/es6.reflect.apply.js","webpack:///./node_modules/pbkdf2/lib/sync-browser.js","webpack:///./node_modules/core-js/modules/_collection.js","webpack:///./node_modules/create-ecdh/browser.js","webpack:///./node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/base.js","webpack:///./node_modules/core-js/modules/_typed-array.js","webpack:///./node_modules/core-js/modules/_typed-buffer.js","webpack:///./node_modules/hash.js/lib/hash/common.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///./node_modules/node-libs-browser/node_modules/util/util.js","webpack:///./node_modules/asn1.js/lib/asn1/api.js","webpack:///./node_modules/core-js/modules/_bind.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/elliptic/lib/elliptic/utils.js","webpack:///./node_modules/core-js/modules/es6.map.js","webpack:///./node_modules/public-encrypt/mgf.js","webpack:///./node_modules/md5.js/index.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///./node_modules/events/events.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///./node_modules/browserify-aes/browser.js","webpack:///./node_modules/brorand/index.js"],"names":["primes","DH","getDiffieHellman","mod","prime","Buffer","gen","ENCODINGS","createDiffieHellman","enc","generator","genc","isBuffer","undefined","generatePrime","exports","DiffieHellmanGroup","createDiffieHellmanGroup","DiffieHellman","assert","val","msg","Error","inherits","ctor","superCtor","super_","TempCtor","prototype","constructor","BN","number","base","endian","isBN","this","negative","words","length","red","_init","module","wordSize","window","e","parseHex4Bits","string","index","c","charCodeAt","parseHexByte","lowerBound","r","parseBase","str","start","end","mul","len","Math","min","i","num","Array","isArray","max","left","right","cmp","_initNumber","_initArray","toString","replace","_parseHex","_parseBase","toArray","ceil","j","w","off","strip","parseLength","limbLen","limbPow","total","word","imuln","_iaddn","pow","copy","dest","clone","_expand","size","_normSign","inspect","zeros","groupSizes","groupBases","toBitArray","bitLength","bit","wbit","smallMulTo","self","out","a","b","lo","carry","k","ncarry","rword","maxJ","padding","groupSize","groupBase","isZero","modn","idivn","toNumber","ret","toJSON","toBuffer","toArrayLike","ArrayType","byteLength","reqLength","littleEndian","res","q","andln","iushrn","clz32","_countBits","t","_zeroBits","hi","zeroBits","toTwos","width","abs","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","iadd","isub","add","sub","comb10MulTo","mid","o","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","imul","w0","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","fftm","FFTM","mulp","x","y","mulTo","makeRBT","N","l","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","s","rtwdf","cos","PI","itwdf","sin","p","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","n","m","odd","conjugate","normalize13b","ws","round","convert13b","stub","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","iushln","bits","carryMask","newCarry","ishln","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","shift","_wordDiv","mode","bhi","bhiBits","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","acc","egcd","A","B","C","D","g","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","k256","p224","p192","p25519","MPrime","name","tmp","_tmp","K256","call","P224","P192","P25519","_prime","Mont","imod","rinv","minv","ireduce","rlen","split","imulK","_strip","input","output","outLen","prev","next","mod3","one","nOne","lpow","z","inv","windowSize","wnd","current","currentLen","mont","u","encrypt","block","_cipher","encryptBlock","decrypt","decryptBlock","Cipher","options","type","blockSize","buffer","bufferOff","update","data","_updateDecrypt","_updateEncrypt","_buffer","_flushBuffer","_update","inputOff","outputOff","count","final","first","last","_finalEncrypt","_finalDecrypt","concat","_pad","_unpad","equal","global","require","fs","Object","keys","enosys","err","code","outputBuf","constants","O_WRONLY","O_RDWR","O_CREAT","O_TRUNC","O_APPEND","O_EXCL","writeSync","fd","buf","decoder","decode","nl","lastIndexOf","console","log","substr","write","offset","position","callback","chmod","path","chown","uid","gid","close","fchmod","fchown","fstat","fsync","ftruncate","lchown","link","lstat","mkdir","perm","open","flags","read","readdir","readlink","rename","from","to","rmdir","stat","symlink","truncate","unlink","utimes","atime","mtime","process","getuid","getgid","geteuid","getegid","getgroups","pid","ppid","umask","cwd","chdir","crypto","nodeCrypto","getRandomValues","randomFillSync","performance","now","hrtime","sec","nsec","TextEncoder","TextDecoder","encoder","Go","argv","env","exit","warn","_exitPromise","Promise","resolve","_resolveExitPromise","_pendingEvent","_scheduledTimeouts","Map","_nextCallbackTimeoutID","setInt64","addr","v","mem","setUint32","floor","getInt64","low","getUint32","high","getInt32","loadValue","f","getFloat64","isNaN","id","_values","storeValue","nanHead","setFloat64","_ids","get","_idPool","pop","_goRefCounts","set","typeFlag","loadSlice","array","Uint8Array","_inst","loadSliceOfValues","loadString","saddr","DataView","timeOrigin","Date","importObject","go","sp","exited","msec","getTime","setInt32","setTimeout","_resume","has","clearTimeout","delete","push","result","Reflect","getsp","deleteProperty","args","apply","setUint8","construct","parseInt","encode","String","dst","src","Uint8ClampedArray","toCopy","subarray","value","instance","WebAssembly","Instance","NaN","fill","Infinity","strPtr","ptr","bytes","argc","argvPtrs","forEach","arg","sort","key","wasmMinDataAddr","run","resume","event","arguments","main","versions","electron","error","slice","assign","TMPDIR","tmpdir","instantiate","readFileSync","then","on","catch","_reverse","map","der","pdfjsWorker","ERR_INVALID_OPT_VALUE","codes","highWaterMarkFrom","isDuplex","duplexKey","highWaterMark","getHighWaterMark","state","hwm","isFinite","objectMode","copyProps","SafeBuffer","encodingOrOffset","alloc","allocUnsafe","allocUnsafeSlow","create","TypeError","encoding","SlowBuffer","utils","SHA256","SHA224","outSize","hmacStrength","padLength","_digest","toHex32","split32","Hash","K","W","Sha","init","_w","rotl5","rotl30","ft","d","_a","_b","_c","_d","_e","M","readInt32BE","_hash","H","writeInt32BE","Transform","_require$codes","ERR_METHOD_NOT_IMPLEMENTED","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","Duplex","afterTransform","er","ts","_transformState","transforming","cb","writecb","emit","writechunk","rs","_readableState","reading","needReadable","_read","bind","needTransform","writeencoding","sync","_transform","flush","_flush","prefinish","_this","destroyed","done","stream","_writableState","chunk","_write","_destroy","err2","aes","StreamCipher","iv","AES","_prev","_cache","_secCache","_decrypt","_mode","_final","scrub","toInteger","toLength","it","RangeError","PassThrough","des","des3","pre","curves","hash","curve","PresetCurve","short","edwards","validate","isInfinity","defineCurve","defineProperty","configurable","enumerable","sha256","gRed","sha384","sha512","beta","lambda","basis","proto","CBCState","Base","CBC","_cbcInit","_cbcState","inp","inOff","outOff","superProto","parseKeys","mgf","crt","createHash","withPublic","oaep","modulus","iHash","digest","hLen","maskedSeed","maskedDb","seed","db","compare","pkcs1","reverse","p1","status","ps","dif","privateKey","zBuffer","Typed","hide","TYPED","VIEW","ABV","ArrayBuffer","CONSTR","TypedArrayConstructors","MAX_BYTES","MAX_UINT32","oldBrowser","msCrypto","randomBytes","generated","nextTick","common","shaCommon","rotl32","sum32","sum32_5","ft_1","BlockHash","sha1_K","SHA1","DES","EDE","writable","CorkedRequest","entry","finish","onCorkedFinish","Writable","WritableState","internalUtil","deprecate","Stream","OurUint8Array","_uint8ArrayToBuffer","_isUint8Array","obj","realHasInstance","destroyImpl","_require","ERR_INVALID_ARG_TYPE","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","errorOrDestroy","nop","writableObjectMode","finalCalled","needDrain","ending","ended","finished","noDecode","decodeStrings","defaultEncoding","writing","corked","bufferProcessing","onwrite","writelen","bufferedRequest","lastBufferedRequest","pendingcb","prefinished","errorEmitted","emitClose","autoDestroy","bufferedRequestCount","corkedRequestsFree","writev","_writev","destroy","writeAfterEnd","validChunk","decodeChunk","writeOrBuffer","isBuf","newChunk","doWrite","onwriteError","finishMaybe","onwriteStateUpdate","needFinish","clearBuffer","afterWrite","onwriteDrain","holder","allBuffers","callFinal","need","rState","endEmitted","endWritable","once","corkReq","getBuffer","Symbol","hasInstance","Function","object","pipe","cork","uncork","setDefaultEncoding","toLowerCase","indexOf","_undestroy","undestroy","Legacy","md5","RIPEMD160","sha","ZEROS","Hmac","alg","blocksize","_alg","_key","ipad","_ipad","opad","_opad","rng","pseudoRandomBytes","prng","createHmac","algos","algoKeys","hashes","getHashes","pbkdf2","pbkdf2Sync","createCipher","Cipheriv","createCipheriv","Decipher","createDecipher","Decipheriv","createDecipheriv","getCiphers","listCiphers","dh","sign","createSign","Sign","createVerify","Verify","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","rf","randomFill","createCredentials","join","asyncGeneratorStep","reject","_next","_throw","info","_asyncToGenerator","fn","CipherBase","modes","opts","modeName","_des","webpackEmptyContext","req","EDEState","k1","k2","k3","ciphers","_edeState","ZERO_BUF","checkParameters","subtle","toBrowser","sha1","checks","checkNative","algo","browser","importKey","deriveBits","prom","browserPbkdf2","getNextTick","queueMicrotask","setImmediate","password","salt","iterations","resolvePromise","promise","keylen","resp","decoders","pem","inner","outer","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","_objectSpread","target","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","_classCallCheck","Constructor","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","_require2","custom","copyBuffer","BufferList","head","tail","hasStrings","_getString","_getBuffer","nb","depth","customInspect","$export","aFunction","anObject","isObject","fails","rConstruct","NEW_TARGET_BUG","F","ARGS_BUG","S","Target","newTarget","$args","G","util","_this2","asn1","aesid","fixProc","compat","passphrase","subtype","ndata","stripped","tag","certificate","tbsCertificate","subjectPublicKeyInfo","PublicKey","algorithm","RSAPublicKey","subjectPublicKey","subjectPrivateKey","params","pub_key","DSAparam","EncryptedPrivateKey","PrivateKey","RSAPrivateKey","ECPrivateKey","priv_key","DSAPrivateKey","parameters","kde","kdeparams","iters","cipher","cipherText","signature","ShortCurve","conf","tinv","two","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","Point","isRed","BasePoint","inf","JPoint","zOne","betas","_getEndoRoots","lambdas","vec","_getEndoBasis","ntinv","l1","l2","prevR","aprxSqrt","y1","y2","len1","len2","_endoSplit","v1","v2","c1","c2","p2","q1","q2","pointFromX","zero","point","ax","rhs","_endoWnafMulAdd","points","coeffs","jacobianResult","npoints","ncoeffs","_getBeta","_wnafMulAdd","pointFromJSON","fromJSON","precomputed","endoMul","naf","doubles","step","JSON","parse","obj2point","dbl","nx","ny","ys1","dyinv","getX","getY","_hasDoubles","_fixedNafMul","_wnafMul","mulAdd","jmulAdd","_precompute","negate","toJ","jpoint","toP","zinv","zinv2","ay","pz2","z2","u1","u2","s1","s2","h2","h3","nz","mixedAdd","dblp","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","t1","t2","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","ee","yyu4","kbase","z3","pz3","eqXToP","zs","xc","redN","elliptic","version","rand","ec","eddsa","Readable","pipeline","encoders","byteOffset","encryptStart","toObject","toAbsoluteIndex","O","aLen","endPos","Node","DEREncoder","entity","tree","DERNode","body","parent","encodeTag","primitive","cls","reporter","tagByName","hasOwnProperty","tagClassByName","_encode","_encodeComposite","content","encodedTag","header","_createEncoderBuffer","lenOctets","_encodeStr","unused","writeUInt16BE","_isNumstr","_isPrintstr","test","_encodeObjid","values","relative","stringify","splice","ident","objid","_encodeTime","time","date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","_encodeNull","_encodeInt","numArray","unshift","_encodeBool","_use","_getEncoder","_skipDefault","dataBuffer","_baseState","defaultBuffer","_encodeValue","parseBytes","cachedProperty","KeyPair","_secret","secret","isPoint","pub","_pub","_pubBytes","fromPublic","fromSecret","encodePoint","decodePoint","priv","lastIx","encodingLength","decodeInt","privBytes","message","verify","sig","getSecret","getPublic","pubBytes","move","_move","for","modrn","allocate","postfix","_toArrayLikeLE","_toArrayLikeBE","isNegNum","asUInt32Array","readUInt32BE","scrubVec","cryptBlock","keySchedule","SUB_MIX","SBOX","nRounds","t0","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s3","ksRow","RCON","INV_SBOX","INV_SUB_MIX","xi","sx","x4","x8","_reset","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","writeUInt32BE","m1","objectToString","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","isRegExp","isDate","isError","isFunction","isPrimitive","endianness","hostname","location","loadavg","uptime","freemem","Number","MAX_VALUE","totalmem","cpus","release","navigator","appVersion","networkInterfaces","getNetworkInterfaces","arch","platform","tmpDir","EOL","homedir","EdwardsCurve","twisted","mOneA","dd","oneC","_mulA","_mulC","lhs","pointFromY","normalize","_extDbl","nt","_projDbl","_extAdd","_projAdd","zi","other","ZEROES","fromArray","GHASH","cache","ghash","_multiply","lsbVi","Vi","Zi","abl","bl","define","seq","int","use","AlgorithmIdentifier","bitstr","null_","optional","PrivateKeyInfo","octstr","EncryptedPrivateKeyInfo","explicit","ECParameters","choice","namedCurve","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","wrapForNext","lastPromise","AsyncIteratorPrototype","getPrototypeOf","ReadableStreamAsyncIteratorPrototype","setPrototypeOf","asyncIterator","createReadableStreamAsyncIterator","_Object$create","iterator","Reporter","DecoderBuffer","EncoderBuffer","AuthCipher","MODES","ebtk","Splitter","_last","_autopadding","unpad","padded","suite","config","thing","setAutoPadding","setTo","autoPadding","ReadableState","EventEmitter","EElistenerCount","emitter","listeners","debug","debugUtil","debuglog","StringDecoder","ERR_STREAM_PUSH_AFTER_EOF","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","kProxyEvents","prependListener","_events","readableObjectMode","pipes","pipesCount","flowing","emittedReadable","readableListening","resumeScheduled","paused","awaitDrain","readingMore","readable","readableAddChunk","addToFront","skipChunkCheck","onEofChunk","chunkInvalid","addChunk","maybeReadMore","emitReadable","isPaused","setEncoding","clear","MAX_HWM","computeNewHighWaterMark","howMuchToRead","emitReadable_","flow","maybeReadMore_","pipeOnDrain","updateReadableListening","listenerCount","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","xs","nOrig","doRead","pipeOpts","doEnd","stdout","stderr","endFn","onend","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanup","ondrain","cleanedUp","removeListener","onclose","onfinish","onerror","ondata","pause","dests","ev","addListener","removeAllListeners","wrap","method","_fromList","iterable","ERR_STREAM_PREMATURE_CLOSE","called","_len","noop","isRequest","setHeader","abort","eos","onlegacyfinish","writableEnded","readableEnded","onrequest","Signature","R","_R","_S","_Rencoded","Rencoded","_Sencoded","Sencoded","encodeInt","toBytes","toHex","toUpperCase","pna","readableDestroyed","writableDestroyed","emitErrorNT","emitCloseNT","emitErrorAndCloseNT","findProc","startRegex","fullRegex","evp","okey","decrypted","match","cipherKey","match2","DESState","_desState","deriveKeys","shiftTable","kL","kR","pc1","r28shl","pc2","ip","_encrypt","pad","lStart","rStart","keyL","keyR","expand","substitute","rip","Sha512","Ch","maj","sigma0","xl","sigma1","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","ah","bh","ch","eh","fh","gh","hh","al","cl","dl","el","fl","gl","hl","xh","gamma0","gamma0l","gamma1","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","writeInt64BE","getBlock","encryptByte","byteParam","shiftIn","paddedMsg","publicExponent","root","factory","modules","installedModules","__w_pdfjs_require__","moduleId","getter","toStringTag","__esModule","ns","property","_worker","WorkerMessageHandler","WorkerTask","_util","_primitives","_pdf_manager","_writer","_is_node","_message_handler","_worker_stream","_core_utils","terminated","_capability","createPromiseCapability","handler","port","testMessageProcessed","send","supportTransfers","postMessageTransfers","setVerbosityLevel","verbosity","createDocumentHandler","docParams","pdfManager","cancelXHRs","WorkerTasks","getVerbosityLevel","apiVersion","workerVersion","enumerableProperties","ReadableStream","allSettled","docId","docBaseUrl","workerHandlerName","MessageHandler","ensureNotTerminated","startWorkerTask","task","finishWorkerTask","async","loadDocument","recoveryMode","ensureDoc","numPages","fingerprint","all","getPdfManager","evaluatorOptions","pdfManagerCapability","newPdfManager","LocalPdfManager","ex","pdfStream","cachedChunks","PDFWorkerStream","fullRequest","getFullReader","headersReady","isRangeSupported","disableAutoFetch","isStreamingSupported","NetworkPdfManager","msgHandler","contentLength","rangeChunkSize","sendProgressiveData","reason","loaded","flushChunks","pdfFile","arraysToBytes","readPromise","readChunk","arrayByteLength","cancelAllRequests","setupDoc","onSuccess","doc","pdfInfo","onFailure","PasswordException","sendWithPromise","updatePassword","pdfManagerReady","InvalidPDFException","MissingPDFException","UnexpectedResponseException","UnknownErrorException","XRefParseException","requestLoadedStream","onLoadedStream","maxImageSize","disableFontFace","ignoreErrors","isEvalSupported","fontExtraProperties","terminate","AbortException","getPage","pageIndex","page","ensure","rotate","ref","userUnit","view","pageRef","Ref","ensureCatalog","ensureXRef","intent","getAnnotationsData","annotationStorage","filename","promises","document","pdfDocument","save","refs","newRefs","reduce","xref","newXrefInfo","trailer","_info","xrefInfo","stringToPDFString","rootRef","getRaw","newRef","getNewRef","infoRef","fileIds","startXRef","resetNewRef","incrementalUpdate","sink","VerbosityLevel","INFOS","getOperatorList","renderInteractiveForms","operatorListInfo","featureId","UNSUPPORTED_FEATURES","errorOperatorList","onPull","desiredSize","onCancel","extractTextContent","normalizeWhitespace","combineTextItems","fontFallback","waitOn","cleanupPromise","clearPrimitiveCaches","setup","isMessagePort","maybePort","postMessage","isNodeJS","initializeFromPort","bytesToString","escapeString","getModificationDate","isArrayBuffer","isArrayEqual","isBool","isNum","isSameOrigin","createValidAbsoluteUrl","removeNullCharacters","shadow","string32","stringToBytes","stringToUTF8String","utf8StringToString","unreachable","IsEvalSupportedCached","IsLittleEndianCached","createObjectURL","FormatError","Util","TextRenderingMode","StreamType","PermissionFlag","PasswordResponses","CMapCompressionType","ImageKind","FontType","AnnotationType","AnnotationStateModelType","AnnotationReviewState","AnnotationReplyType","AnnotationMarkedState","AnnotationFlag","AnnotationFieldFlag","AnnotationBorderStyleType","OPS","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","BaseException","PRINT","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","MARKED","REVIEW","UNMARKED","ACCEPTED","REJECTED","CANCELLED","COMPLETED","NONE","GROUP","REPLY","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","SOLID","DASHED","BEVELED","INSET","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","TYPE1","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","ERRORS","WARNINGS","BINARY","STREAM","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","restore","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","unknown","forms","javaScript","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorFontToUnicode","errorFontLoadNative","errorFontGetPath","errorMarkedContent","NEED_PASSWORD","INCORRECT_PASSWORD","level","isInteger","cond","baseUrl","otherUrl","URL","origin","_isValidProtocol","url","protocol","absoluteUrl","prop","super","details","NullCharactersRegExp","MAX_ARGUMENT_COUNT","fromCharCode","strBuf","chunkEnd","arr","resultLength","pos","item","itemLength","isLittleEndian","buffer8","view32","Uint32Array","rgbBuf","m2","xt","yt","applyTransform","p3","p4","transpose","second","sy","rect","rect1","rect2","orderedX","orderedY","normalizeRect","PDFStringTranslateTable","charAt","decodeURIComponent","escape","unescape","encodeURIComponent","arr1","arr2","every","element","padStart","capability","isSettled","digits","contentType","forceDataSchema","blob","Blob","ii","d1","d2","d3","d4","nw","isEOF","isCmd","isDict","isName","isRef","isRefsEqual","isStream","RefSetCache","RefSet","Name","Dict","Cmd","EOF","nameCache","nameValue","_clearCache","cmdCache","cmd","cmdValue","nonSerializable","_map","objId","suppressEncryption","__nonSerializable__","assignXref","newXref","key1","key2","key3","fetch","fetchAsync","getKeys","getRawValues","empty","merge","dictArray","mergeSubDicts","mergedDict","dict","entries","properties","subDict","refCache","refValue","_set","Set","aliasRef","getBytes","_chunked_stream","_document","_stream","BasePdfManager","_docId","_password","_docBaseUrl","href","catalog","manuallyTriggered","begin","PDFDocument","_loadedStreamPromise","pdfNetworkStream","streamManager","ChunkedStreamManager","getStream","MissingDataException","requestRange","requestAllChunks","onReceiveData","ChunkedStream","chunkSize","manager","_loadedChunks","numChunks","progressiveDataLength","lastSuccessfulEnsureByteChunk","chunks","numChunksLoaded","beginChunk","endChunk","curChunk","ensureByte","getByte","forceClamped","strEnd","ensureRange","peekedByte","ChunkedStreamSubstream","getMissingChunks","missingChunks","allChunksLoaded","subStream","currRequestId","_chunksNeededByRequest","_requestsByChunk","_promisesByRequest","aborted","_loadedStreamCapability","rangeReader","getRangeReader","onProgress","chunkData","_requestChunks","requestId","chunksNeeded","hasChunk","chunksToRequest","requestIds","groupedChunksToRequest","groupChunks","groupedChunk","sendRequest","getBeginChunk","getEndChunk","ranges","range","includes","groupedChunks","prevChunk","isProgressive","onReceiveProgressiveData","loadedRequests","nextEmptyChunk","lastChunk","getLookupTableFactory","getInheritableProperty","toRomanNumerals","log2","readInt8","readUint16","readUint32","isWhiteSpace","XRefEntryException","initializer","lookup","getArray","stopWhenFound","LOOP_LIMIT","loopCount","ROMAN_NUMBER_MAP","lowerCase","romanBuf","romanStr","Page","_obj","_annotation","_crypto","_parser","_operator_list","_evaluator","DEFAULT_USER_UNIT","LETTER_SIZE_MEDIABOX","isAnnotationRenderable","annotation","viewable","printable","pageDict","globalIdFactory","fontCache","builtInCMapCache","globalImageCache","resourcesPromise","idCounters","_localIdFactory","_getInheritableProperty","box","_getBoundingBox","mediaBox","cropBox","intersect","streams","fetchIfRef","StreamsSequenceStream","NullStream","partialEvaluator","PartialEvaluator","idFactory","_parsedAnnotations","annotations","newRefsPromises","objectLoader","ObjectLoader","resources","load","contentStreamPromise","loadResources","dataPromises","pageListPromise","contentStream","opList","OperatorList","transparency","hasBlendModes","operatorList","pageOpList","totalLength","opListPromises","opLists","addOp","addOpList","getTextContent","annotationsData","parsedAnnotations","annotationPromises","annotationRef","AnnotationFactory","PDF_HEADER_SIGNATURE","STARTXREF_SIGNATURE","ENDOBJ_SIGNATURE","FINGERPRINT_FIRST_BYTES","EMPTY_FINGERPRINT","PDF_HEADER_VERSION_REGEXP","find","limit","backwards","signatureLength","scanBytes","peekBytes","scanLength","signatureEnd","XRef","_pagePromises","_version","_globalIdFactory","Catalog","linearization","Linearization","reset","startXRefLength","found","skip","moveStart","MAX_PDF_VERSION_LENGTH","substring","setStartXRef","fields","recursionDepth","RECURSION_LIMIT","field","_hasOnlyDocumentSignatures","isSignature","isInvisible","formInfo","hasAcroForm","hasXfa","acroForm","xfa","isEmpty","hasFields","sigFlags","hasOnlyDocumentSignatures","DocumentInfoValidators","Title","Author","Subject","Keywords","Creator","Producer","CreationDate","ModDate","Trapped","docInfo","PDFFormatVersion","IsLinearized","IsAcroFormPresent","IsXFAPresent","IsCollectionPresent","collection","infoDict","customValue","Custom","idArray","calculateMD5","getByteRange","fingerprintBuf","hex","objectNumberFirst","pageKidsCountCache","put","getPageDict","pageFirst","_getLinearizationPage","FileSpec","_colorspace","_image_utils","fetchDestination","_catDict","getCatalogObj","GlobalImageCache","streamRef","encryptMetadata","metadata","pagesObj","_readDocumentOutline","items","queue","processed","blackColor","outlineDict","parseDestDictionary","destDict","resultObj","title","color","rgbColor","ColorSpace","singletons","rgb","getRgb","outlineItem","unsafeUrl","newWindow","bold","italic","permissions","_readPermissions","defaultConfig","groupsData","groups","groupRefs","groupRef","group","_readOptionalContentConfig","contentGroupRefs","parseOnOff","onParsed","parseOrder","nestedLevels","order","parsedOrderRefs","nestedOrder","parseNestedOrder","hiddenGroups","MAX_NESTED_LEVELS","nestedName","creator","baseState","toplevelPagesDict","_readDests","NameTree","names","getAll","destinationId","_readPageLabels","pageLabels","style","prefix","numberTree","NumberTree","nums","currentLabel","currentIndex","labelDict","st","LIMIT","A_UPPER_CASE","A_LOWER_CASE","baseCharCode","letterIndex","character","charBuf","jj","pageLayout","pageMode","ViewerPreferencesValidators","HideToolbar","HideMenubar","HideWindowUI","FitWindow","CenterWindow","DisplayDocTitle","NonFullScreenPageMode","Direction","ViewArea","ViewClip","PrintArea","PrintClip","PrintScaling","PickTrayByPDFSize","PrintPageRange","NumCopies","prefs","prefValue","isValid","openAction","action","attachments","nameTree","serializable","appendIfJavaScriptDict","jsDict","js","translatedFonts","translatedFont","loadedName","fallback","translated","nodesToVisit","visitedNodes","currentPageIndex","currentNode","kids","pagesBeforeRef","kidRef","parentRef","node","getAsync","kidPromises","kid","addDefaultProtocolToUrl","startsWith","tryConvertUrlEncoding","actionType","actionName","urlDict","remoteDest","namedAction","jsAction","URL_OPEN_METHODS","regex","RegExp","jsUrl","exec","xrefstms","_cacheMap","stats","streamTypes","fontTypes","_newRefNum","startXRefQueue","trailerDict","indexObjects","readXRef","ids","fileId","CipherTransformFactory","processXRefTable","parser","tableState","entryNum","streamPos","lexer","parserBuf1","buf1","parserBuf2","buf2","readXRefTable","getObj","firstEntryNum","entryCount","free","uncompressed","processXRefStream","streamParameters","byteWidths","streamState","entryRanges","readXRefStream","typeFieldWidth","offsetFieldWidth","generationFieldWidth","generation","TAB","LF","CR","SPACE","PERCENT","LT","readToken","token","skipUntil","what","dataLength","skipped","objRegExp","endobjRegExp","nestedObjRegExp","CHECK_CONTENT_LENGTH","trailerBytes","startxrefBytes","objBytes","xrefBytes","trailers","xrefStms","startPos","checkPos","tokenStr","objToken","xrefTagOffset","Parser","Lexer","allowStreams","rootDict","startXRefParsedCache","topDict","getEntry","xrefEntry","cacheEntry","fetchUncompressed","fetchCompressed","makeSubStream","obj1","obj2","obj3","createCipherTransform","tableOffset","NameOrNumberTree","_type","kidsOrEntries","MAX_LEVELS","limits","currentKey","description","contentAvailable","pickPlatformItem","_filename","contentRef","fileObj","mayHaveChildren","addChildren","rawValue","refSet","_walk","nodesToRevisit","pendingRequests","getBaseStreams","baseStreams","foundMissingData","requestRanges","remove","_ccitt_stream","_jbig2_stream","_jpeg_stream","_jpx_stream","MAX_LENGTH_TO_CACHE","MAX_ADLER32_LENGTH","computeAdler32","bytesLength","imageCache","refill","cipherTransform","makeInlineImage","makeStream","decryptString","E","I","NUL","maybeEIPos","followingBytes","knownCommands","nextObj","peekObj","endOffset","peekByte","markerLength","foundEOI","getUint16","findDefaultInlineStreamEnd","inlineStreamSkipEI","TILDE","GT","tildePos","maybeEI","dictLength","beginInlineImagePos","filterName","filterZero","findDCTDecodeInlineStreamEnd","findASCII85DecodeInlineStreamEnd","findASCIIHexDecodeInlineStreamEnd","cacheKey","imageStream","imageBytes","initialStreamPos","dictBytes","createStream","SCAN_BLOCK_LENGTH","skipToNextLine","nextChar","tryShift","ENDSTREAM_SIGNATURE","actualLength","_findStreamLength","MAX_TRUNCATION","TRUNCATED_SIGNATURE","maybeLength","lastByte","makeFilter","filterArray","paramsArray","xrefStreamStats","PredictorStream","FlateStream","earlyChange","LZWStream","JpegStream","JpxStream","Ascii85Stream","AsciiHexStream","CCITTFaxStream","RunLengthStream","Jbig2Stream","specialChars","toHexDigit","_hexStringNumWarn","currentChar","eNotation","divideBy","baseValue","powerValue","powerValueSign","currentDigit","peekChar","numParen","charBuffered","previousCh","MAX_HEX_STRING_NUM_WARN","firstDigit","secondDigit","isFirstHex","_hexStringWarn","comment","getNumber","getString","getName","getHexString","knownCommandFound","possibleCommand","getInt","linDict","allowZeroValue","getHints","hints","hintsLength","endFirst","mainXRefEntriesOffset","StringStream","DecodeStream","DecryptStream","arrayBuffer","emptyBuffer","maybeMinBufferLength","_rawMinBufferLength","bufferLength","eof","minBufferLength","readBlock","ensureBuffer","requested","buffer2","bufEnd","newLength","codeLenCodeMap","Int32Array","lengthDecode","distDecode","fixedLitCodeTab","fixedDistCodeTab","cmf","flg","codeSize","codeBuf","getBits","getCode","table","maxLen","codeLen","codeVal","generateHuffmanTable","lengths","code2","hdr","litCodeTable","distCodeTable","numLitCodes","numDistCodes","numCodeLenCodes","codeLenCodeLengths","codeLenCodeTab","bitsLength","bitsOffset","codeLengths","repeatLength","code1","dist","blockLen","check","predictor","readBlockTiff","readBlockPng","colors","columns","pixBytes","rowBytes","rawBytes","inbuf","outbuf","inbits","outbits","bytesPerPixel","sum","compArray","bitMask","kk","prevRow","up","upLeft","pa","pb","pc","nextChunk","initialized","hasMoreData","TILDA_CHAR","Z_LOWER_CHAR","UPSTREAM_BLOCK_SIZE","maxDecodeLength","digit","repeatHeader","cachedData","bitsCached","maxLzwDictionarySize","lzwState","codeLength","nextCode","dictionaryValues","dictionaryLengths","Uint16Array","dictionaryPrevCodes","currentSequence","currentSequenceLength","readBits","lastCode","estimatedDecodedSize","decodedSizeDelta","prevCode","decodedLength","currentBufferLength","hasPrev","_ccitt","ccittFaxDecoder","CCITTFaxDecoder","EndOfLine","EncodedByteAlign","Columns","Rows","EndOfBlock","BlackIs1","readNextChar","ccittEOL","ccittEOF","twoDimPass","twoDimHoriz","twoDimVert0","twoDimVertR1","twoDimVertL1","twoDimVertR2","twoDimVertL2","twoDimVertR3","twoDimVertL3","twoDimTable","whiteTable1","whiteTable2","blackTable1","blackTable2","blackTable3","eoline","byteAlign","rows","eoblock","black","codingLine","refLine","codingPos","row","nextLine2D","inputBits","inputBuf","outputBits","rowsDone","_lookBits","_eatBits","refPos","blackPixels","code3","_getTwoDimCode","_addPixels","_getBlackCode","_getWhiteCode","_addPixelsNeg","gotEOL","limitValue","_findTableCode","_jbig","jbig2Image","Jbig2Image","globalsStream","globals","parseChunks","_arithmetic_decoder","Jbig2Error","ContextCache","DecodingContext","decodeInteger","contextCache","procedure","contexts","getContexts","readBit","decodeIAID","Int8Array","ArithmeticDecoder","SegmentTypes","CodingTemplates","RefinementTemplates","coding","reference","ReusedContexts","RefinementReusedContexts","decodeBitmapTemplate0","height","decodingContext","contextLabel","pixel","row1","row2","bitmap","OLD_PIXEL_MASK","decodeBitmap","mmr","templateIndex","prediction","at","Reader","decodeMMRBitmap","useskip","template","templateLength","templateX","templateY","changingTemplateEntries","reuseMask","minX","maxX","minY","changingEntriesLength","changingTemplateX","changingTemplateY","changingTemplateBit","i0","j0","sbb_left","sbb_top","sbb_right","pseudoPixelContext","ltp","sltp","decodeRefinement","referenceBitmap","offsetX","offsetY","codingTemplate","codingTemplateLength","codingTemplateX","codingTemplateY","referenceTemplate","referenceTemplateLength","referenceTemplateX","referenceTemplateY","referenceWidth","referenceHeight","decodeSymbolDictionary","huffman","refinement","numberOfNewSymbols","numberOfExportedSymbols","huffmanTables","refinementTemplateIndex","refinementAt","huffmanInput","newSymbols","currentHeight","symbolCodeLength","tableB1","symbolWidths","getStandardTable","deltaHeight","tableDeltaHeight","currentWidth","totalWidth","firstSymbol","deltaWidth","tableDeltaWidth","numberOfInstances","decodeTextRegion","symbolId","rdx","rdy","symbol","bitmapSize","tableBitmapSize","collectiveBitmap","readUncompressedBitmap","originalEnd","bitmapEnd","numberOfSymbolsDecoded","xMax","bitmapWidth","symbolBitmap","xMin","exportedSymbols","currentFlag","totalSymbolsLength","runLength","defaultPixelValue","numberOfSymbolInstances","stripSize","inputSymbols","transposed","dsOffset","referenceCorner","combinationOperator","logStripSize","stripT","tableDeltaT","firstS","deltaT","deltaFirstS","tableFirstS","currentS","currentT","symbolIDTable","applyRefinement","symbolWidth","symbolHeight","rdw","rdh","symbolRow","offsetT","offsetS","maxWidth","deltaS","tableDeltaS","decodePatternDictionary","patternWidth","patternHeight","maxPatternIndex","collectiveWidth","patterns","patternBitmap","decodeHalftoneRegion","regionWidth","regionHeight","enableSkip","gridWidth","gridHeight","gridOffsetX","gridOffsetY","gridVectorX","gridVectorY","regionBitmap","numberOfPatterns","pattern0","bitsPerValue","grayScaleBitPlanes","mmrInput","mg","ng","patternIndex","patternRow","regionRow","regionX","regionY","readSegmentHeader","segmentHeader","segmentType","typeName","deferredNonRetain","pageAssociationFieldSize","referredFlags","referredToCount","retainBits","referredToSegmentNumberSize","referredTo","pageAssociation","genericRegionInfo","readRegionSegmentInformation","genericRegionSegmentFlags","RegionSegmentInformationFieldLength","genericRegionMmr","searchPatternLength","searchPattern","headerEnd","readSegments","segments","segment","randomAccess","processSegment","visitor","atLength","dictionary","dictionaryFlags","huffmanDHSelector","huffmanDWSelector","bitmapSizeSelector","aggregationInstancesSelector","bitmapCodingContextUsed","bitmapCodingContextRetained","refinementTemplate","textRegion","textRegionSegmentFlags","textRegionHuffmanFlags","huffmanFS","huffmanDS","huffmanDT","huffmanRefinementDW","huffmanRefinementDH","huffmanRefinementDX","huffmanRefinementDY","huffmanRefinementSizeSelector","patternDictionary","patternDictionaryFlags","halftoneRegion","halftoneRegionFlags","genericRegion","pageInfo","resolutionX","resolutionY","pageSegmentFlags","lossless","requiresBuffer","combinationOperatorOverride","callbackName","processSegments","parseJbig2Chunks","SimpleSegmentVisitor","parseJbig2","numberOfPages","currentPageInfo","bitPacked","imgData","HuffmanLine","lineData","isOOB","rangeLow","prefixLength","rangeLength","prefixCode","isLowerRange","HuffmanTreeNode","line","children","isLeaf","HuffmanTable","lines","prefixCodesDone","assignPrefixCodes","rootNode","buildTree","decodeTablesSegment","lowestValue","highestValue","reader","prefixSizeBits","rangeSizeBits","currentRangeLow","onPageInformation","rowSize","drawBitmap","regionInfo","mask0","offset0","onImmediateGenericRegion","region","onImmediateLosslessGenericRegion","onSymbolDictionary","currentSegment","referredSegments","getSymbolDictionaryHuffmanTables","customTables","referredSymbols","onImmediateTextRegion","getTextRegionHuffmanTables","onImmediateLosslessTextRegion","onImmediateHalftoneRegion","htOffset","decodeNode","linesLength","prefixLengthMax","histogram","currentCode","currentTemp","currentLength","firstCode","standardTablesCache","currentByte","getCustomHuffmanTable","numberOfSymbols","runCodesTable","repeatedLength","numberOfRepeats","customIndex","tableAggregateInstances","endOfBlock","lookForEOFLimit","numBits","QeTable","qe","nmps","nlps","switchFlag","bp","dataEnd","chigh","clow","byteIn","ct","cx_index","cx_mps","qeTableIcx","qeIcx","_jpg","jpegOptions","decodeTransform","colorTransform","decodeArr","forceRGB","bitsPerComponent","decodeArrLength","transformNeeded","maxValue","jpegImage","JpegImage","getData","drawWidth","drawHeight","isSourcePDF","JpegError","DNLMarkerError","scanLines","EOIMarkerError","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","_decodeTransform","_colorTransform","buildHuffmanTable","getBlockBufferOffset","component","col","blocksPerLine","decodeScan","frame","components","resetInterval","spectralStart","spectralEnd","successivePrev","successive","parseDNLMarker","mcusPerLine","progressive","startOffset","bitsData","bitsCount","nextByte","maybeScanLines","blockRow","precision","decodeHuffman","receive","receiveAndExtend","decodeBaseline","blockOffset","huffmanTableDC","blockData","pred","huffmanTableAC","decodeDCFirst","decodeDCSuccessive","eobrun","decodeACFirst","successiveACNextValue","successiveACState","decodeACSuccessive","offsetZ","decodeMcu","mcu","mcuRow","mcuCol","blockCol","decodeBlock","decodeFn","componentsLength","fileMarker","mcuExpected","blocksPerColumn","mcusPerColumn","mcuToRead","findNextFileMarker","invalid","partialMsg","marker","quantizeAndInverse","blockBufferOffset","v0","v3","v4","v5","v6","v7","p0","p5","p6","p7","qt","quantizationTable","buildComponentData","computationBuffer","Int16Array","currentPos","maxPos","newPos","currentMarker","newMarker","dnlScanLines","readDataBlock","prepareComponents","samplesPerLine","maxH","maxV","blocksPerLineForMcu","blocksPerColumnForMcu","blocksBufferSize","jfif","adobe","numSOSMarkers","quantizationTables","huffmanTablesAC","huffmanTablesDC","markerLoop","appData","major","minor","densityUnits","xDensity","yDensity","thumbWidth","thumbHeight","thumbData","flags0","flags1","transformCode","quantizationTablesLength","quantizationTablesEnd","quantizationTableSpec","tableData","sofScanLines","componentIds","componentId","componentsCount","qId","quantizationId","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","selectorsCount","componentIndex","tableSpec","successiveApproximation","nextFileMarker","scaleX","scaleY","numComponents","componentScaleX","componentScaleY","blocksPerScanline","xScaleBlockOffset","mask3LSB","lastComponentScaleX","_convertYccToRgb","Y","Cb","Cr","_convertYcckToRgb","_convertYcckToCmyk","_convertCmykToRgb","_getLinearizedBlockData","rgbData","grayColor","_isColorConversionNeeded","_jpx","jpxImage","JpxImage","tileCount","tiles","tileComponents","tileWidth","tileHeight","tileLeft","tileTop","top","srcPosition","dataPosition","imgRowSize","tileRowSize","JpxError","SubbandsGainLog2","LL","LH","HL","HH","failOnCorruptedImage","calculateComponentDimensions","siz","x0","XOsiz","XRsiz","Xsiz","y0","YOsiz","YRsiz","Ysiz","calculateTileGrids","context","tile","SIZ","numXtiles","XTOsiz","XTsiz","numYtiles","YTOsiz","YTsiz","tx0","ty0","tx1","ty1","Csiz","tileComponent","tcx0","tcy0","tcx1","tcy1","getBlocksDimensions","codOrCoc","codingStyleParameters","entropyCoderWithCustomPrecincts","PPx","precinctsSizes","PPy","xcb_","xcb","ycb_","ycb","buildPrecincts","resolution","dimensions","precinctWidth","precinctHeight","isZeroRes","resLevel","precinctWidthInSubband","precinctHeightInSubband","numprecinctswide","trx1","trx0","numprecinctshigh","try1","try0","numprecincts","precinctParameters","buildCodeblocks","subband","codeblock","precinctNumber","codeblockWidth","codeblockHeight","cbx0","tbx0","cby0","tby0","cbx1","tbx1","cby1","tby1","codeblocks","precincts","cbx","cby","tbx0_","tby0_","tbx1_","tby1_","pi","pj","subbandType","Lblock","precinct","cbxMin","cbxMax","cbyMin","cbyMax","codeblockParameters","numcodeblockwide","numcodeblockhigh","createPacket","layerNumber","precinctCodeblocks","subbands","LayerResolutionComponentPositionIterator","tileIndex","currentTile","layersCount","codingStyleDefaultParameters","maxDecompositionLevelsCount","decompositionLevelsCount","nextPacket","resolutions","packet","ResolutionLayerComponentPositionIterator","ResolutionPositionComponentLayerIterator","maxNumPrecinctsInLevel","maxNumPrecincts","PositionComponentResolutionLayerIterator","getPrecinctSizesInImageScale","precinctsIterationSizes","px","py","maxNumHigh","maxNumWide","sizeInImageScale","getPrecinctIndexIfExist","ComponentPositionResolutionLayerIterator","pxIndex","pyIndex","precinctIterationSizes","posX","minWidth","posY","minHeight","startPrecinctRowIndex","sizePerComponent","sizePerResolution","minWidthCurrentComponent","minHeightCurrentComponent","maxNumWideCurrentComponent","maxNumHighCurrentComponent","scale","widthCurrentResolution","heightCurrentResolution","buildPackets","blocksDimensions","bscale","resolutionSubbands","progressionOrder","packetsIterator","parseTilePackets","bufferSize","skipNextBit","skipMarkerIfEqual","skipBytes","alignToByte","readCodingpasses","sopMarkerUsed","COD","ephMarkerUsed","valueReady","codeblockColumn","codeblockRow","codeblockIncluded","firstTimeInclusion","included","inclusionTree","zeroBitPlanesTree","InclusionTree","TagTree","incrementValue","nextLevel","zeroBitPlanes","codingpasses","codingpassesLog2","codedDataLength","packetItem","copyCoefficients","coefficients","levelWidth","levelHeight","mb","reversible","segmentationSymbolUsed","bottom","blockWidth","blockHeight","bitModel","currentCodingpassType","BitModel","dataItem","encodedData","setDecoder","runSignificancePropagationPass","runMagnitudeRefinementPass","runCleanupPass","checkSegmentationSymbol","coefficentsSign","magnitude","coefficentsMagnitude","bitsDecoded","magnitudeCorrection","interleave","levelOffset","transformTile","quantizationParameters","spqcds","SPqcds","scalarExpounded","guardBits","reversibleTransformation","ReversibleTransform","IrreversibleTransform","subbandCoefficients","Float32Array","mu","epsilon","gainLog2","calculate","transformComponents","resultImages","transformedTiles","tile0","multipleComponentTransform","fourComponents","y0items","y1items","y2items","y3items","component0","alpha01","initializeTile","qcdOrQcc","QCC","QCD","COC","headerSize","lbox","tbox","jumpDataLength","colorspace","parseCodestream","headerType","parseImageProperties","newByte","oldByte","doNotRecover","sqcd","spqcdSize","mainHeader","isSigned","qcd","noQuantization","spqcd","cqcc","qcc","cod","scod","blockStyle","selectiveArithmeticCodingBypass","resetContextProbabilities","terminationOnEachCodingPass","verticallyStripe","predictableTermination","precinctsSize","unsupported","partIndex","partsCount","levelsLength","levels","currentLevel","defaultValue","stopValue","propagateValues","levelIndex","currentValue","UNIFORM_CONTEXT","RUNLENGTH_CONTEXT","LLAndLHContextsLabel","HLContextLabel","HHContextLabel","contextLabelTable","coefficientCount","neighborsSignificance","processingFlags","setNeighborsSignificance","column","labels","processedInverseMask","processedMask","firstMagnitudeBitMask","i1","decision","decodeSignBit","contribution","sign0","sign1","significance1","decoded","horizontalContribution","indexNext","width4","index0","significance","iNext","oneRowDown","twoRowsDown","threeRowsDown","indexBase","checkAllEmpty","allEmpty","hasSignificantCoefficent","i2","u0","ll","iterate","extend","j1","j2","hl_lh_hh","llWidth","llHeight","llItems","bufferPadding","rowBuffer","numBuffers","colBuffers","currentBuffer","K_","calculateSHA512","calculateSHA384","calculateSHA256","PDF20","PDF17","ARCFourCipher","AES256Cipher","AES128Cipher","keyLength","tmp2","h0","h1","paddedLength","rotateArg","Word64","highInteger","lowInteger","shiftRight","places","shiftLeft","rotateRight","not","lowAdd","highAdd","copyTo","rotr","sigma","sigmaPrime","littleSigma","littleSigmaPrime","h4","h5","h6","h7","mode384","tmp3","tmp1","NullCipher","AESBaseCipher","_s","_inv_s","_mix","_mixCol","bufferPosition","_keySize","_cyclesOfRepetition","finalize","sourceLength","plain","outputLength","lastBlock","psLen","_decryptBlock2","_rcon","_expandKey","rcon","t4","compareByteArrays","array1","array2","checkOwnerPassword","ownerValidationSalt","userBytes","ownerPassword","hashData","checkUserPassword","userValidationSalt","userPassword","getOwnerKey","ownerKeySalt","ownerEncryption","getUserKey","userKeySalt","userEncryption","concatArrays","calculatePDF20Hash","arrayLength","remainder","concatBytes","CipherTransform","stringCipherConstructor","streamCipherConstructor","StringCipherConstructor","StreamCipherConstructor","encryptString","strLen","padEnd","random","defaultPasswordBytes","createEncryptionKey20","revision","uBytes","perms","passwordLength","pdfAlgorithm","prepareKeyData","hashDataSize","keyLengthInBytes","checkData","encryptionKey","derivedKey","decodeUserPassword","identityName","cfDict","streamCryptoName","handlerDict","passwordBytes","fileIdBytes","decodedPassword","cf","stmf","strf","eff","buildObjectKey","isAes","buildCipherConstructor","cfm","cryptFilter","cipherConstructor","resizeRgbImage","COMPONENTS","xRatio","yRatio","oldIndex","newIndex","xScaled","w1Scanline","numComps","srcOffset","getRgbItem","destOffset","inputLength","decodeMap","bpc","isDefaultDecode","originalWidth","originalHeight","actualHeight","comps","numComponentColors","needsResizing","isPassthrough","allColors","colorMap","getRgbBuffer","rgbPos","destPos","localColorSpaceCache","parsedColorSpace","csName","csRef","localColorSpace","getByRef","getByName","cs","pdfFunctionFactory","_parse","cachedColorSpace","getCached","gray","cmyk","PatternCS","colorSpaces","resourcesCS","baseCS","whitePoint","blackPoint","CalGrayCS","matrix","CalRGBCS","alt","altCS","hiVal","IndexedCS","tintFn","AlternateCS","LabCS","DeviceGrayCS","DeviceRgbCS","DeviceCmykCS","tmpBuf","baseNumComps","usesZeroToOneRange","baseBuf","scaled","tinted","getOutputLength","highVal","outputDelta","lookupPos","convertToRgb","srcScale","AG","L","YW","XW","ZW","XB","YB","ZB","BRADFORD_SCALE_MATRIX","BRADFORD_SCALE_INVERSE_MATRIX","SRGB_D65_XYZ_TO_RGB_MATRIX","FLAT_WHITEPOINT_MATRIX","tempNormalizeMatrix","tempConvertMatrix1","tempConvertMatrix2","DECODE_L_CONSTANT","matrixProduct","convertToFlat","sourceWhitePoint","LMS","convertToD65","D65X","D65Y","D65Z","sRGBTransferFunction","adjustToRange","decodeL","compensateBlackPoint","sourceBlackPoint","XYZ_Flat","zeroDecodeL","X_DST","X_SRC","Y_DST","Y_SRC","Z_DST","Z_SRC","X_Scale","X_Offset","Y_Scale","Y_Offset","Z_Scale","Z_Offset","normalizeWhitePointToFlat","XYZ_In","LMS_Flat","normalizeWhitePointToD65","LMS_D65","AGR","GR","BGG","GG","CGB","GB","X","MXA","MXB","MXC","MYA","MYB","MYC","Z","MZA","MZB","MZC","XYZ","XYZ_Black","XYZ_D65","SRGB","fn_g","high1","low2","high2","maxVal","Ls","as","bs","amin","amax","bmin","bmax","LocalGStateCache","LocalFunctionCache","LocalColorSpaceCache","LocalImageCache","BaseLocalCache","onlyRefs","_nameRefMap","_imageMap","_imageCache","_refCache","pageIndexSet","NUM_PAGES_THRESHOLD","MAX_IMAGES_TO_CACHE","onlyData","getQuadPoints","MarkupAnnotation","AnnotationBorderStyle","Annotation","createObjId","LinkAnnotation","TextAnnotation","fieldType","TextWidgetAnnotation","ButtonWidgetAnnotation","ChoiceWidgetAnnotation","WidgetAnnotation","PopupAnnotation","FreeTextAnnotation","LineAnnotation","SquareAnnotation","CircleAnnotation","PolylineAnnotation","PolygonAnnotation","CaretAnnotation","InkAnnotation","HighlightAnnotation","UnderlineAnnotation","SquigglyAnnotation","StrikeOutAnnotation","StampAnnotation","FileAttachmentAnnotation","quadPoints","quadPointsLists","getTransformMatrix","bbox","maxY","getAxialAlignedBoundingBox","setContents","setModificationDate","setFlags","setRectangle","setColor","setBorderStyle","setAppearance","annotationFlags","borderStyle","contents","hasAppearance","appearance","modificationDate","flag","_hasFlag","_isViewable","_isPrintable","dictType","setWidth","setStyle","setDashArray","setHorizontalCornerRadius","setVerticalCornerRadius","appearanceStates","normalAppearanceState","evaluator","renderForms","appearanceDict","dashArray","horizontalCornerRadius","verticalCornerRadius","maxHeight","allZeros","validNumber","radius","rawIRT","inReplyTo","rt","replyType","setCreationDate","creationDate","hasPopup","annotationType","fieldName","_constructFieldName","fieldValue","_decodeFormValue","alternativeText","defaultAppearance","fieldResources","fieldFlags","readOnly","hasFieldFlag","loopDict","formValue","_hasText","_getAppearance","AP","originalTransform","newTransform","bufferOriginal","writeDict","bufferNew","isPassword","defaultPadding","hPadding","totalHeight","fontInfo","_getFontData","fontName","fontSize","_computeFontSize","descent","vPadding","alignment","textAlignment","comb","_getCombAppearance","multiLine","_getMultilineAppearance","renderedText","_renderText","initialState","em","charsToGlyphs","capHeight","fontRegex","search","text","glyphs","glyph","toFixed","maximumLength","combWidth","renderedComb","_splitLine","whitespace","lastSpacePos","startChunk","charWidth","checkedAppearance","uncheckedAppearance","checkBox","radioButton","pushButton","_processCheckBox","_processRadioButton","_processPushButton","savedAppearance","_saveCheckbox","_saveRadioButton","exportValue","buttonValue","parentBuffer","parentTransform","customAppearance","normalAppearance","exportValues","fieldParent","fieldParentValue","option","isOptionArray","displayValue","combo","multiSelect","DEFAULT_ICON_SIZE","stateModel","parentItem","parentSubtype","parentType","rawParent","parentId","parentFlags","lineCoordinates","rawVertices","vertices","originalInkLists","inkLists","file","QueueOptimizer","addState","parentState","pattern","checkFn","iterateFn","processFn","handlePaintSolidColorImageMask","iFirstSave","fnArray","argsArray","iFirstPIMXO","imageMask","InitialState","iCurr","lastProcessed","MIN_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_WIDTH","IMAGE_PADDING","curr","iFirstTransform","iFirstPIIXO","maxLineHeight","currentX","currentY","img","imgWidth","imgHeight","dataOffset","kind","MIN_IMAGES_IN_MASKS_BLOCK","MAX_IMAGES_IN_MASKS_BLOCK","MAX_SAME_IMAGES_IN_MASKS_BLOCK","iTransform","transformArgs","isSameImage","firstPIMXOArg0","firstTransformArg0","firstTransformArg1","firstTransformArg2","firstTransformArg3","iPIMXO","positions","images","maskParams","iFirstPIXO","firstPIXOArg0","MIN_IMAGES_IN_BLOCK","MAX_IMAGES_IN_BLOCK","iFirstSetFont","firstSetFontArg0","firstSetFontArg1","MIN_CHARS_IN_BLOCK","MAX_CHARS_IN_BLOCK","iFirstBeginText","iFirstSetTextMatrix","iFirstShowText","iFirstEndText","iFirst","iEndText","_optimize","NullOptimizer","CHUNK_SIZE","CHUNK_SIZE_ABOUT","streamSink","_streamSink","optimizer","dependencies","_totalLength","weight","_resolved","ready","addDependency","transfers","cached","enqueue","_transfers","writeValue","writeStream","writeArray","numberToString","roundedValue","writeInt","writeString","computeMD5","filesize","md5Buffer","md5BufferLen","originalData","refForXrefTable","baseOffset","xrefTableData","indexes","maxOffset","offsetSize","sizes","structSize","tableLength","bufferLen","footer","objOffset","_cmap","_fonts","_encodings","_unicode","_standard_fonts","_pattern","_function","_bidi","_glyphlist","_metrics","_murmurhash","_image","DefaultPartialEvaluatorOptions","freeze","PatternType","TILING","SHADING","deferred","normalizeBlendMode","parsingArray","maybeBM","TimeSlotManager","checked","CHECK_TIME_EVERY","endTime","TIME_SLOT_DURATION_MS","parsingType3Font","_fetchBuiltInCMapBound","fetchBuiltInCMap","PDFFunctionFactory","newOptions","newEvaluator","nodes","graphicStates","graphicState","bm","xObjects","xObject","xResources","readableStream","sendWithStream","getReader","pump","compressionType","xobj","optionalContent","parseMarkedContentProps","groupOptions","isolated","knockout","groupSubtype","colorSpace","parseColorSpace","backdrop","cacheGlobally","image","isInline","localImageCache","imageRef","bitStrideLength","imgArray","PDFImage","createMask","imageIsFromDecodeStream","inverseDecode","softMask","SMALL_IMAGE_DIMENSIONS","imageObj","_pdfFunctionFactory","createImageData","getDocId","shouldCache","buildImage","_sendImgData","addPageIndex","setData","stateManager","smaskContent","smaskOptions","transferObj","isPDFFunction","transferFn","transferMap","buildFormXObject","tr","transferArray","transferMaps","numFns","numEffectfulFns","patternDict","tilingOpList","patternResources","getTilingPatternIR","tilingPatternIR","addDependencies","fontArgs","fontRef","loadFont","isType3Font","loadType3Data","type3Dependencies","TranslatedFont","ErrorFont","extraProperties","chars","isAddToPathSet","textRenderingMode","fillColorSpace","buildFontPaths","gState","localGStateCache","gStateRef","isSimpleGState","gStateObj","gStateKeys","handleSetFont","handleSMask","handleTransferFunction","errorFont","fontRes","fallbackFontDict","fontCapability","preEvaluatedFont","preEvaluateFont","fontID","translatedPromise","fontRefIsRef","fontAliases","aliasFontRef","putAlias","createFontId","translateFont","fontType","xrefFontStats","fontFile3","getFontType","parsingText","lastIndex","opArgs","parseAsync","patternName","typeNum","handleTilingType","shading","Pattern","parseShading","getIR","contentProperties","optionalContentType","optionalContentGroups","groupIds","ocg","expression","policy","EvalState","xobjs","StateManager","preprocessor","EvaluatorPreprocessor","timeSlotManager","closePendingRestoreOPS","argument","savedStatesDepth","promiseBody","stop","operation","localImage","resolveXObject","rejectXObject","globalImage","buildPaintImageXObject","ensureStateFont","handleText","combinedGlyphs","arrLength","arrItem","strokeColorSpace","handleColorN","shadingRes","patternIR","localGStateObj","resolveGState","rejectGState","extGState","buildPath","seenStyles","TextState","WhitespaceRegexp","textContent","styles","textContentItem","vertical","lastAdvanceWidth","lastAdvanceHeight","textAdvanceScale","spaceWidth","fakeSpaceMin","fakeMultiSpaceMin","fakeMultiSpaceMax","textRunBreakAllowed","SPACE_FACTOR","MULTI_SPACE_FACTOR","MULTI_SPACE_FACTOR_MAX","emptyXObjectCache","emptyGStateCache","textState","ensureTextContentItem","fontFamily","fallbackName","ascent","tsm","textHScale","textRise","fontMatrix","glyphHeight","trm","ctm","textMatrix","textLineMatrix","scaleLineX","scaleCtmX","isMonospace","replaceWhitespace","runBidiTransform","textChunk","bidiResult","bidi","dir","buildTextContentItem","glyphWidth","vmetric","glyphUnicode","unicode","NormalizedUnicodes","getNormalizedUnicodes","reverseIfRtl","charSpacing","isSpace","wordSpacing","addFakeSpaces","tx","ty","translateTextMatrix","fakeSpaces","flushTextContentItem","enqueueChunk","advance","fontNameArg","fontSizeArg","leading","isSameTextLine","translateTextLineMatrix","carriageReturn","calcTextLineMatrixAdvance","setTextLineMatrix","breakTextRun","currentState","xObjStateManager","sinkWrapper","enqueueInvoked","gStateFont","baseDict","cidToGidBytes","toUnicode","toUnicodePromise","readToUnicode","composite","cidSystemInfo","registry","ordering","supplement","cidToGidMap","differences","baseEncodingName","diffEncoding","getEncoding","isSymbolicFont","FontFlags","Symbolic","isNonsymbolicFont","Nonsymbolic","StandardEncoding","WinAnsiEncoding","MacRomanEncoding","SymbolSetEncoding","ZapfDingbatsEncoding","hasEncoding","buildToUnicode","builtToUnicode","readCidToGidMap","forceGlyphs","charcode","glyphName","glyphsUnicodeMap","getGlyphsUnicode","codeStr","_buildSimpleFontToUnicode","getUnicodeForGlyph","baseEncoding","fromCodePoint","ToUnicodeMap","hasIncludedToUnicodeMap","fallbackToUnicode","cMap","builtInCMap","IdentityCMap","ucs2CMapName","CMapFactory","useCMap","ucs2CMap","cid","ucs2","IdentityToUnicodeMap","firstChar","lastChar","cmapObj","cmap","getMap","charCode","glyphsData","glyphID","defaultVMetrics","widths","glyphsWidths","defaultWidth","glyphsVMetrics","vmetrics","parseFloat","baseFontName","metrics","getBaseFontMetrics","buildCharCodeToWidth","firstWidth","FixedPitch","fontNameWoStyle","getSerifFonts","monospace","stdFontMap","getStdFontMap","lookupName","Metrics","getMetrics","isSerifFont","glyphWidths","widthsByGlyphName","uint8array","df","MurmurHash3_64","diffLength","diffBuf","diffEntry","hexdigest","maxCharIndex","Serif","getSymbolsFonts","extractDataStructures","newProperties","Font","baseFont","fontNameStr","baseFontStr","cMapPromise","fontFile","length1","length2","length3","fixedPitch","xHeight","italicAngle","cidEncoding","extractWidths","fontChar","renderer","hasBuiltPath","getPathJs","accent","_extraProperties","type3Loaded","sent","exportData","glyphCacheValues","type3Options","type3Evaluator","loadCharProcsPromise","charProcs","fontResources","charProcOperatorList","glyphStream","dummyOperatorList","stateStack","old","txDiff","tyDiff","denominator","getOPMap","numArgs","variableArgs","J","ri","gs","Q","cm","BT","ET","Tc","Tw","Tz","TL","Tf","Tr","Ts","Td","TD","Tm","Tj","TJ","d0","CS","SC","SCN","sc","scn","RG","rg","sh","BI","ID","EI","Do","MP","DP","BMC","BDC","EMC","BX","EX","BM","BD","true","fa","fal","fals","false","nu","nul","null","opMap","nonProcessedArgs","_numInvalidPathOPS","opSpec","argsLength","MAX_INVALID_PATH_OPS","preprocessCommand","CMap","BUILT_IN_CMAPS","MAX_MAP_RANGE","codespaceRanges","numCodespaceRanges","dstLow","nn","codespaceRange","addCodespaceRange","BinaryCMapReader","hexToInt","hexToStr","addHex","incHex","MAX_NUM_SIZE","MAX_ENCODED_NUM_SIZE","BinaryCMapStream","processBinaryCMap","readByte","char","sequence","dataSize","ucs2DataSize","subitemsCount","readNumber","readHex","readHexNumber","mapOne","readSigned","mapCidRange","readHexSigned","mapBfRange","readString","stack","strToInt","expectString","expectInt","parseBfChar","parseBfRange","mapBfRangeToArray","parseCidChar","parseCidRange","parseCodespaceRange","parseWMode","parseCMapName","parseCMap","previous","embeddedUseCMap","objLoop","extendCMap","createBuiltInCMap","newCMap","useCodespaceRanges","contains","cMapData","parsedCMap","isIdentityCMap","SEAC_ANALYSIS_ENABLED","_cff_parser","_font_renderer","_type1_parser","PRIVATE_USE_AREAS","PDF_GLYPH_SPACE_UNITS","EXPORT_DATA_PROPERTIES","EXPORT_DATA_EXTRA_PROPERTIES","Script","Italic","AllCap","SmallCap","ForceBold","MacStandardGlyphOrdering","adjustWidths","adjustToUnicode","builtInEncoding","amend","recoverGlyphName","Glyph","operatorListId","isInFont","matchesForCache","OpenTypeFileBuilder","writeInt16","writeInt32","writeData","sfnt","tables","getSearchParams","entriesCount","entrySize","maxPower2","searchRange","rangeShift","OTF_HEADER_SIZE","OTF_TABLE_ENTRY_SIZE","tablesNames","tableName","numTables","tableOffsets","searchParams","checksum","quad","addTable","missingFile","glyphCache","toFontChar","fallbackToSystemFont","getFontFileType","mimetype","cff","CFFFont","Type1Font","convert","checkAndRepair","isOpenType","seacMap","int16","writeSignedInt16","signedInt16","int32","string16","safeString16","isTrueTypeFile","isTrueTypeCollectionFile","isOpenTypeFile","isType1File","isCFFFile","fileType","fileSubtype","buildToFontChar","adjustMapping","charCodeToGlyphId","hasGlyph","newGlyphZeroId","newMap","privateUseAreaIndex","nextAvailableFontCharCode","privateUseOffetEnd","originalCharCode","glyphId","fontCharCode","getRanges","numGlyphs","codeIndices","createCmapTable","bmpLength","trailingRangesCount","segCount","startCount","endCount","idDeltas","idRangeOffsets","glyphsIds","bias","contiguous","startCode","format314","format31012","header31012","validateOS2Table","os2","selection","usWinAscent","createOS2Table","charstrings","override","unitsPerEm","yMax","yMin","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","firstCharIndex","lastCharIndex","getUnicodeRangeFor","ascentScaled","typoAscent","typoDescent","winAscent","winDescent","createPostTable","angle","createNameTable","strings","stringsUnicode","strBufUnicode","platforms","encodings","languages","namesRecordCount","nameTable","strOffset","strs","nameRecord","FontRendererFactory","exportDataProperties","nonStdFontMap","getNonStdFontMap","isStandardFont","remeasure","GlyphMapForStandardFonts","getGlyphMapForStandardFonts","SupplementalGlyphMapForArialBlack","getSupplementalGlyphMapForArialBlack","SupplementalGlyphMapForCalibri","getSupplementalGlyphMapForCalibri","isIdentityUnicode","unicodeCharCode","getDingbatsGlyphsUnicode","VALID_TABLES","readTables","hhea","hmtx","maxp","post","readTableEntry","previousPosition","readOpenTypeHeader","ttf","entrySelector","readTrueTypeCollectionHeader","ttc","ttcTag","majorVersion","minorVersion","numFonts","offsetTable","dsigTag","dsigLength","dsigOffset","readTrueTypeCollectionData","potentialHeader","potentialTables","readNameTable","nameEntry","readCmapTable","platformId","encodingId","mappings","hasShortCmap","potentialTable","canBreak","useTable","format","segIndex","offsetsCount","rangeOffset","offsetIndex","offsets","sanitizeMetrics","dupFirstEntry","numOfMetrics","numOfSidebearings","numMissing","sanitizeGlyph","sourceStart","sourceEnd","destStart","hintsValid","glyphProfile","sizeOfInstructions","glyf","contoursCount","flagsCount","endPoint","instructionsStart","instructionsLength","instructionsEnd","coordinatesLength","xLength","yLength","xyLength","repeat","glyphDataLength","sanitizeHead","locaLength","indexToLocFormat","numGlyphsPlusOne","sanitizeGlyphLocations","loca","isGlyphLocationsLong","maxSizeOfInstructions","itemSize","itemDecode","itemEncode","numGlyphsOut","locaDataSize","locaData","oldGlyfData","oldGlyfDataLength","newGlyfData","locaEntries","missingGlyphs","writeOffset","simpleGlyph","firstEntryLength","readPostScriptTable","propertiesObj","maxpNumGlyphs","glyphNames","valid","glyphNameIndexes","customNames","stringLength","FORMAT_0_HEADER_LENGTH","numRecords","stringsStart","records","NAME_RECORD_LENGTH","language","record","nameIndex","TTOpsStackDeltas","sanitizeTTProgram","ttContext","funcId","lastEndf","lastDeff","callstack","functionsCalled","tooComplexToFollowFunctions","inFDEF","ifLevel","inELSE","op","functionsStackDeltas","stackTop","functionsDefined","functionsUsed","newStackLength","stackDelta","foldTTTable","checkInvalidFunctions","maxFunctionDefs","sanitizeTTPrograms","fpgm","prep","cvt","cvtData","cffFile","ttcData","isTrueType","isComposite","maxZones","glyphsInfo","metricsOverride","isCidToGidMapEmpty","cmapTable","cmapPlatformId","cmapEncodingId","cmapMappings","cmapMappingsLength","standardGlyphName","unicodeOrCharCode","glyphZeroId","newMapping","CFFParser","duplicateFirstGlyph","compiler","CFFCompiler","compile","namePrototype","builder","tableTag","mapping","getGlyphMapping","hasGlyphId","getCharCodes","charCodes","createCharCode","seacs","charset","getCharset","seac","baseGlyphName","accentGlyphName","baseGlyphId","accentGlyphId","accentOffset","baseFontCharCode","accentFontCharCode","tan","cffWidths","charstring","possibleSpaceReplacements","charCodeOf","charToGlyph","widthCode","mapSpecialUnicodeValues","charsCache","charsCacheKey","readCharCode","type1FontGlyphMapping","findBlock","streamBytes","startIndex","streamBytesLength","getHeaderBlock","suggestedLength","headerBytes","headerBytesLength","EEXEC_SIGNATURE","streamStartPos","getEexecBlock","eexecBytes","PFB_HEADER_SIZE","headerBlockLength","eexecBlockLength","pfbHeader","pfbHeaderPresent","headerBlock","headerBlockParser","Type1Parser","extractFontHeader","eexecBlock","eexecBlockParser","extractFontProgram","type2Charstrings","getType2Charstrings","subrs","getType2Subrs","getSeacs","charstringsLen","type1Charstrings","type1Subrs","type2Subrs","CFF","CFFHeader","CFFTopDict","setByName","CFFStrings","globalSubrIndex","CFFIndex","charsetArray","CFFStandardStrings","CFFCharset","charStringsIndex","charStrings","privateDict","CFFPrivateDict","privateData","subrIndex","subrsIndex","charsets","isCIDFont","CFFFDSelect","_charsets","MAX_SUBR_NESTING","NUM_STANDARD_CFF_STRINGS","CharstringValidationData","stackClearing","stem","resetStack","undefStack","CharstringValidationData12","stackFn","seacAnalysisEnabled","parseHeader","parseIndex","topDictIndex","stringIndex","topDictParsed","parseDict","createDict","parseNameIndex","parseStringIndex","parsePrivateDict","hasName","charStringOffset","charStringIndex","fontBBox","fdArrayIndex","dictRaw","fontDict","fdArray","parseCharsets","fdSelect","parseFDSelect","parseEncoding","charStringsAndSeacs","parseCharStrings","localSubrIndex","hdrSize","offSize","parseOperand","parseFloatOperand","operands","cffIndex","offsetStart","offsetEnd","Type","cffDict","pair","setByKey","callDepth","stackSize","validationCommand","subrNumber","parseCharString","hasVStems","firstStackClearing","localSubrToUse","privateDictToUse","fdIndex","getFDIndex","nominalWidth","parentDict","privateOffset","emptyPrivateDictionary","privateDictEnd","dictData","subrsOffset","relativeOffset","removeByName","CFFCharsetPredefinedTypes","ISO_ADOBE","ISOAdobeCharset","EXPERT","ExpertCharset","EXPERT_SUBSET","ExpertSubsetCharset","raw","predefined","readSupplement","supplementsCount","sid","ExpertEncoding","dataStart","glyphsCount","rangesCount","CFFEncoding","glyphZero","objects","CFFDict","keyToNameMap","nameToKeyMap","defaults","types","opcodes","valueLength","layout","createTables","glyphIndex","CFFOffsetTracker","offset1","offset2","offset3","offset4","compileHeader","compileNameIndex","compiled","compileTopDicts","topDictTracker","trackers","compileStringIndex","compileIndex","setEntryLocation","compileEncoding","compileCharset","compileCharStrings","compileFDSelect","fontDictTrackers","compilePrivateDicts","encodeInteger","encodeFloat","EncodeFloatRegExp","nibbles","sanitizedName","dicts","removeCidKeys","fontDictTracker","fontDictData","compileDict","privateDictTracker","privateDictData","offsetTracker","encodeNumber","isTracking","track","writeByteArray","numGlyphsLessNotDef","charsetIndex","numCharsets","warned","getSID","compileTypedArray","lastFD","currentFD","numRanges","lastOffset","MacExpertEncoding","encodingName","AE","AEacute","AEmacron","AEsmall","Aacute","Aacutesmall","Abreve","Abreveacute","Abrevecyrillic","Abrevedotbelow","Abrevegrave","Abrevehookabove","Abrevetilde","Acaron","Acircle","Acircumflex","Acircumflexacute","Acircumflexdotbelow","Acircumflexgrave","Acircumflexhookabove","Acircumflexsmall","Acircumflextilde","Acute","Acutesmall","Acyrillic","Adblgrave","Adieresis","Adieresiscyrillic","Adieresismacron","Adieresissmall","Adotbelow","Adotmacron","Agrave","Agravesmall","Ahookabove","Aiecyrillic","Ainvertedbreve","Alpha","Alphatonos","Amacron","Amonospace","Aogonek","Aring","Aringacute","Aringbelow","Aringsmall","Asmall","Atilde","Atildesmall","Aybarmenian","Bcircle","Bdotaccent","Bdotbelow","Becyrillic","Benarmenian","Beta","Bhook","Blinebelow","Bmonospace","Brevesmall","Bsmall","Btopbar","Caarmenian","Cacute","Caron","Caronsmall","Ccaron","Ccedilla","Ccedillaacute","Ccedillasmall","Ccircle","Ccircumflex","Cdot","Cdotaccent","Cedillasmall","Chaarmenian","Cheabkhasiancyrillic","Checyrillic","Chedescenderabkhasiancyrillic","Chedescendercyrillic","Chedieresiscyrillic","Cheharmenian","Chekhakassiancyrillic","Cheverticalstrokecyrillic","Chi","Chook","Circumflexsmall","Cmonospace","Coarmenian","Csmall","DZ","DZcaron","Daarmenian","Dafrican","Dcaron","Dcedilla","Dcircle","Dcircumflexbelow","Dcroat","Ddotaccent","Ddotbelow","Decyrillic","Deicoptic","Delta","Deltagreek","Dhook","Dieresis","DieresisAcute","DieresisGrave","Dieresissmall","Digammagreek","Djecyrillic","Dlinebelow","Dmonospace","Dotaccentsmall","Dslash","Dsmall","Dtopbar","Dz","Dzcaron","Dzeabkhasiancyrillic","Dzecyrillic","Dzhecyrillic","Eacute","Eacutesmall","Ebreve","Ecaron","Ecedillabreve","Echarmenian","Ecircle","Ecircumflex","Ecircumflexacute","Ecircumflexbelow","Ecircumflexdotbelow","Ecircumflexgrave","Ecircumflexhookabove","Ecircumflexsmall","Ecircumflextilde","Ecyrillic","Edblgrave","Edieresis","Edieresissmall","Edot","Edotaccent","Edotbelow","Efcyrillic","Egrave","Egravesmall","Eharmenian","Ehookabove","Eightroman","Einvertedbreve","Eiotifiedcyrillic","Elcyrillic","Elevenroman","Emacron","Emacronacute","Emacrongrave","Emcyrillic","Emonospace","Encyrillic","Endescendercyrillic","Eng","Enghecyrillic","Enhookcyrillic","Eogonek","Eopen","Epsilon","Epsilontonos","Ercyrillic","Ereversed","Ereversedcyrillic","Escyrillic","Esdescendercyrillic","Esh","Esmall","Eta","Etarmenian","Etatonos","Eth","Ethsmall","Etilde","Etildebelow","Euro","Ezh","Ezhcaron","Ezhreversed","Fcircle","Fdotaccent","Feharmenian","Feicoptic","Fhook","Fitacyrillic","Fiveroman","Fmonospace","Fourroman","Fsmall","GBsquare","Gacute","Gamma","Gammaafrican","Gangiacoptic","Gbreve","Gcaron","Gcedilla","Gcircle","Gcircumflex","Gcommaaccent","Gdot","Gdotaccent","Gecyrillic","Ghadarmenian","Ghemiddlehookcyrillic","Ghestrokecyrillic","Gheupturncyrillic","Ghook","Gimarmenian","Gjecyrillic","Gmacron","Gmonospace","Grave","Gravesmall","Gsmall","Gsmallhook","Gstroke","H18533","H18543","H18551","H22073","HPsquare","Haabkhasiancyrillic","Hadescendercyrillic","Hardsigncyrillic","Hbar","Hbrevebelow","Hcedilla","Hcircle","Hcircumflex","Hdieresis","Hdotaccent","Hdotbelow","Hmonospace","Hoarmenian","Horicoptic","Hsmall","Hungarumlaut","Hungarumlautsmall","Hzsquare","IAcyrillic","IJ","IUcyrillic","Iacute","Iacutesmall","Ibreve","Icaron","Icircle","Icircumflex","Icircumflexsmall","Icyrillic","Idblgrave","Idieresis","Idieresisacute","Idieresiscyrillic","Idieresissmall","Idot","Idotaccent","Idotbelow","Iebrevecyrillic","Iecyrillic","Ifraktur","Igrave","Igravesmall","Ihookabove","Iicyrillic","Iinvertedbreve","Iishortcyrillic","Imacron","Imacroncyrillic","Imonospace","Iniarmenian","Iocyrillic","Iogonek","Iota","Iotaafrican","Iotadieresis","Iotatonos","Ismall","Istroke","Itilde","Itildebelow","Izhitsacyrillic","Izhitsadblgravecyrillic","Jaarmenian","Jcircle","Jcircumflex","Jecyrillic","Jheharmenian","Jmonospace","Jsmall","KBsquare","KKsquare","Kabashkircyrillic","Kacute","Kacyrillic","Kadescendercyrillic","Kahookcyrillic","Kappa","Kastrokecyrillic","Kaverticalstrokecyrillic","Kcaron","Kcedilla","Kcircle","Kcommaaccent","Kdotbelow","Keharmenian","Kenarmenian","Khacyrillic","Kheicoptic","Khook","Kjecyrillic","Klinebelow","Kmonospace","Koppacyrillic","Koppagreek","Ksicyrillic","Ksmall","LJ","Lacute","Lambda","Lcaron","Lcedilla","Lcircle","Lcircumflexbelow","Lcommaaccent","Ldot","Ldotaccent","Ldotbelow","Ldotbelowmacron","Liwnarmenian","Lj","Ljecyrillic","Llinebelow","Lmonospace","Lslash","Lslashsmall","Lsmall","MBsquare","Macron","Macronsmall","Macute","Mcircle","Mdotaccent","Mdotbelow","Menarmenian","Mmonospace","Msmall","Mturned","Mu","NJ","Nacute","Ncaron","Ncedilla","Ncircle","Ncircumflexbelow","Ncommaaccent","Ndotaccent","Ndotbelow","Nhookleft","Nineroman","Nj","Njecyrillic","Nlinebelow","Nmonospace","Nowarmenian","Nsmall","Ntilde","Ntildesmall","Nu","OE","OEsmall","Oacute","Oacutesmall","Obarredcyrillic","Obarreddieresiscyrillic","Obreve","Ocaron","Ocenteredtilde","Ocircle","Ocircumflex","Ocircumflexacute","Ocircumflexdotbelow","Ocircumflexgrave","Ocircumflexhookabove","Ocircumflexsmall","Ocircumflextilde","Ocyrillic","Odblacute","Odblgrave","Odieresis","Odieresiscyrillic","Odieresissmall","Odotbelow","Ogoneksmall","Ograve","Ogravesmall","Oharmenian","Ohm","Ohookabove","Ohorn","Ohornacute","Ohorndotbelow","Ohorngrave","Ohornhookabove","Ohorntilde","Ohungarumlaut","Oi","Oinvertedbreve","Omacron","Omacronacute","Omacrongrave","Omega","Omegacyrillic","Omegagreek","Omegaroundcyrillic","Omegatitlocyrillic","Omegatonos","Omicron","Omicrontonos","Omonospace","Oneroman","Oogonek","Oogonekmacron","Oopen","Oslash","Oslashacute","Oslashsmall","Osmall","Ostrokeacute","Otcyrillic","Otilde","Otildeacute","Otildedieresis","Otildesmall","P","Pacute","Pcircle","Pdotaccent","Pecyrillic","Peharmenian","Pemiddlehookcyrillic","Phi","Phook","Pi","Piwrarmenian","Pmonospace","Psi","Psicyrillic","Psmall","Qcircle","Qmonospace","Qsmall","Raarmenian","Racute","Rcaron","Rcedilla","Rcircle","Rcommaaccent","Rdblgrave","Rdotaccent","Rdotbelow","Rdotbelowmacron","Reharmenian","Rfraktur","Rho","Ringsmall","Rinvertedbreve","Rlinebelow","Rmonospace","Rsmall","Rsmallinverted","Rsmallinvertedsuperior","SF010000","SF020000","SF030000","SF040000","SF050000","SF060000","SF070000","SF080000","SF090000","SF100000","SF110000","SF190000","SF200000","SF210000","SF220000","SF230000","SF240000","SF250000","SF260000","SF270000","SF280000","SF360000","SF370000","SF380000","SF390000","SF400000","SF410000","SF420000","SF430000","SF440000","SF450000","SF460000","SF470000","SF480000","SF490000","SF500000","SF510000","SF520000","SF530000","SF540000","Sacute","Sacutedotaccent","Sampigreek","Scaron","Scarondotaccent","Scaronsmall","Scedilla","Schwa","Schwacyrillic","Schwadieresiscyrillic","Scircle","Scircumflex","Scommaaccent","Sdotaccent","Sdotbelow","Sdotbelowdotaccent","Seharmenian","Sevenroman","Shaarmenian","Shacyrillic","Shchacyrillic","Sheicoptic","Shhacyrillic","Shimacoptic","Sigma","Sixroman","Smonospace","Softsigncyrillic","Ssmall","Stigmagreek","T","Tau","Tbar","Tcaron","Tcedilla","Tcircle","Tcircumflexbelow","Tcommaaccent","Tdotaccent","Tdotbelow","Tecyrillic","Tedescendercyrillic","Tenroman","Tetsecyrillic","Theta","Thook","Thorn","Thornsmall","Threeroman","Tildesmall","Tiwnarmenian","Tlinebelow","Tmonospace","Toarmenian","Tonefive","Tonesix","Tonetwo","Tretroflexhook","Tsecyrillic","Tshecyrillic","Tsmall","Twelveroman","Tworoman","U","Uacute","Uacutesmall","Ubreve","Ucaron","Ucircle","Ucircumflex","Ucircumflexbelow","Ucircumflexsmall","Ucyrillic","Udblacute","Udblgrave","Udieresis","Udieresisacute","Udieresisbelow","Udieresiscaron","Udieresiscyrillic","Udieresisgrave","Udieresismacron","Udieresissmall","Udotbelow","Ugrave","Ugravesmall","Uhookabove","Uhorn","Uhornacute","Uhorndotbelow","Uhorngrave","Uhornhookabove","Uhorntilde","Uhungarumlaut","Uhungarumlautcyrillic","Uinvertedbreve","Ukcyrillic","Umacron","Umacroncyrillic","Umacrondieresis","Umonospace","Uogonek","Upsilon","Upsilon1","Upsilonacutehooksymbolgreek","Upsilonafrican","Upsilondieresis","Upsilondieresishooksymbolgreek","Upsilonhooksymbol","Upsilontonos","Uring","Ushortcyrillic","Usmall","Ustraightcyrillic","Ustraightstrokecyrillic","Utilde","Utildeacute","Utildebelow","V","Vcircle","Vdotbelow","Vecyrillic","Vewarmenian","Vhook","Vmonospace","Voarmenian","Vsmall","Vtilde","Wacute","Wcircle","Wcircumflex","Wdieresis","Wdotaccent","Wdotbelow","Wgrave","Wmonospace","Wsmall","Xcircle","Xdieresis","Xdotaccent","Xeharmenian","Xi","Xmonospace","Xsmall","Yacute","Yacutesmall","Yatcyrillic","Ycircle","Ycircumflex","Ydieresis","Ydieresissmall","Ydotaccent","Ydotbelow","Yericyrillic","Yerudieresiscyrillic","Ygrave","Yhook","Yhookabove","Yiarmenian","Yicyrillic","Yiwnarmenian","Ymonospace","Ysmall","Ytilde","Yusbigcyrillic","Yusbigiotifiedcyrillic","Yuslittlecyrillic","Yuslittleiotifiedcyrillic","Zaarmenian","Zacute","Zcaron","Zcaronsmall","Zcircle","Zcircumflex","Zdot","Zdotaccent","Zdotbelow","Zecyrillic","Zedescendercyrillic","Zedieresiscyrillic","Zeta","Zhearmenian","Zhebrevecyrillic","Zhecyrillic","Zhedescendercyrillic","Zhedieresiscyrillic","Zlinebelow","Zmonospace","Zsmall","Zstroke","aabengali","aacute","aadeva","aagujarati","aagurmukhi","aamatragurmukhi","aarusquare","aavowelsignbengali","aavowelsigndeva","aavowelsigngujarati","abbreviationmarkarmenian","abbreviationsigndeva","abengali","abopomofo","abreve","abreveacute","abrevecyrillic","abrevedotbelow","abrevegrave","abrevehookabove","abrevetilde","acaron","acircle","acircumflex","acircumflexacute","acircumflexdotbelow","acircumflexgrave","acircumflexhookabove","acircumflextilde","acute","acutebelowcmb","acutecmb","acutecomb","acutedeva","acutelowmod","acutetonecmb","acyrillic","adblgrave","addakgurmukhi","adeva","adieresis","adieresiscyrillic","adieresismacron","adotbelow","adotmacron","ae","aeacute","aekorean","aemacron","afii00208","afii08941","afii10017","afii10018","afii10019","afii10020","afii10021","afii10022","afii10023","afii10024","afii10025","afii10026","afii10027","afii10028","afii10029","afii10030","afii10031","afii10032","afii10033","afii10034","afii10035","afii10036","afii10037","afii10038","afii10039","afii10040","afii10041","afii10042","afii10043","afii10044","afii10045","afii10046","afii10047","afii10048","afii10049","afii10050","afii10051","afii10052","afii10053","afii10054","afii10055","afii10056","afii10057","afii10058","afii10059","afii10060","afii10061","afii10062","afii10063","afii10064","afii10065","afii10066","afii10067","afii10068","afii10069","afii10070","afii10071","afii10072","afii10073","afii10074","afii10075","afii10076","afii10077","afii10078","afii10079","afii10080","afii10081","afii10082","afii10083","afii10084","afii10085","afii10086","afii10087","afii10088","afii10089","afii10090","afii10091","afii10092","afii10093","afii10094","afii10095","afii10096","afii10097","afii10098","afii10099","afii10100","afii10101","afii10102","afii10103","afii10104","afii10105","afii10106","afii10107","afii10108","afii10109","afii10110","afii10145","afii10146","afii10147","afii10148","afii10192","afii10193","afii10194","afii10195","afii10196","afii10831","afii10832","afii10846","afii299","afii300","afii301","afii57381","afii57388","afii57392","afii57393","afii57394","afii57395","afii57396","afii57397","afii57398","afii57399","afii57400","afii57401","afii57403","afii57407","afii57409","afii57410","afii57411","afii57412","afii57413","afii57414","afii57415","afii57416","afii57417","afii57418","afii57419","afii57420","afii57421","afii57422","afii57423","afii57424","afii57425","afii57426","afii57427","afii57428","afii57429","afii57430","afii57431","afii57432","afii57433","afii57434","afii57440","afii57441","afii57442","afii57443","afii57444","afii57445","afii57446","afii57448","afii57449","afii57450","afii57451","afii57452","afii57453","afii57454","afii57455","afii57456","afii57457","afii57458","afii57470","afii57505","afii57506","afii57507","afii57508","afii57509","afii57511","afii57512","afii57513","afii57514","afii57519","afii57534","afii57636","afii57645","afii57658","afii57664","afii57665","afii57666","afii57667","afii57668","afii57669","afii57670","afii57671","afii57672","afii57673","afii57674","afii57675","afii57676","afii57677","afii57678","afii57679","afii57680","afii57681","afii57682","afii57683","afii57684","afii57685","afii57686","afii57687","afii57688","afii57689","afii57690","afii57694","afii57695","afii57700","afii57705","afii57716","afii57717","afii57718","afii57723","afii57793","afii57794","afii57795","afii57796","afii57797","afii57798","afii57799","afii57800","afii57801","afii57802","afii57803","afii57804","afii57806","afii57807","afii57839","afii57841","afii57842","afii57929","afii61248","afii61289","afii61352","afii61573","afii61574","afii61575","afii61664","afii63167","afii64937","agrave","agujarati","agurmukhi","ahiragana","ahookabove","aibengali","aibopomofo","aideva","aiecyrillic","aigujarati","aigurmukhi","aimatragurmukhi","ainarabic","ainfinalarabic","aininitialarabic","ainmedialarabic","ainvertedbreve","aivowelsignbengali","aivowelsigndeva","aivowelsigngujarati","akatakana","akatakanahalfwidth","akorean","alef","alefarabic","alefdageshhebrew","aleffinalarabic","alefhamzaabovearabic","alefhamzaabovefinalarabic","alefhamzabelowarabic","alefhamzabelowfinalarabic","alefhebrew","aleflamedhebrew","alefmaddaabovearabic","alefmaddaabovefinalarabic","alefmaksuraarabic","alefmaksurafinalarabic","alefmaksurainitialarabic","alefmaksuramedialarabic","alefpatahhebrew","alefqamatshebrew","aleph","allequal","alphatonos","amacron","amonospace","ampersand","ampersandmonospace","ampersandsmall","amsquare","anbopomofo","angbopomofo","angbracketleft","angbracketright","angkhankhuthai","anglebracketleft","anglebracketleftvertical","anglebracketright","anglebracketrightvertical","angleleft","angleright","angstrom","anoteleia","anudattadeva","anusvarabengali","anusvaradeva","anusvaragujarati","aogonek","apaatosquare","aparen","apostrophearmenian","apostrophemod","apple","approaches","approxequal","approxequalorimage","approximatelyequal","araeaekorean","araeakorean","arc","arighthalfring","aring","aringacute","aringbelow","arrowboth","arrowdashdown","arrowdashleft","arrowdashright","arrowdashup","arrowdblboth","arrowdbldown","arrowdblleft","arrowdblright","arrowdblup","arrowdown","arrowdownleft","arrowdownright","arrowdownwhite","arrowheaddownmod","arrowheadleftmod","arrowheadrightmod","arrowheadupmod","arrowhorizex","arrowleft","arrowleftdbl","arrowleftdblstroke","arrowleftoverright","arrowleftwhite","arrowright","arrowrightdblstroke","arrowrightheavy","arrowrightoverleft","arrowrightwhite","arrowtableft","arrowtabright","arrowup","arrowupdn","arrowupdnbse","arrowupdownbase","arrowupleft","arrowupleftofdown","arrowupright","arrowupwhite","arrowvertex","asciicircum","asciicircummonospace","asciitilde","asciitildemonospace","ascript","ascriptturned","asmallhiragana","asmallkatakana","asmallkatakanahalfwidth","asterisk","asteriskaltonearabic","asteriskarabic","asteriskmath","asteriskmonospace","asterisksmall","asterism","asuperior","asymptoticallyequal","atilde","atmonospace","atsmall","aturned","aubengali","aubopomofo","audeva","augujarati","augurmukhi","aulengthmarkbengali","aumatragurmukhi","auvowelsignbengali","auvowelsigndeva","auvowelsigngujarati","avagrahadeva","aybarmenian","ayin","ayinaltonehebrew","ayinhebrew","babengali","backslash","backslashmonospace","badeva","bagujarati","bagurmukhi","bahiragana","bahtthai","bakatakana","bar","barmonospace","bbopomofo","bcircle","bdotaccent","bdotbelow","beamedsixteenthnotes","because","becyrillic","beharabic","behfinalarabic","behinitialarabic","behiragana","behmedialarabic","behmeeminitialarabic","behmeemisolatedarabic","behnoonfinalarabic","bekatakana","benarmenian","bet","betasymbolgreek","betdagesh","betdageshhebrew","bethebrew","betrafehebrew","bhabengali","bhadeva","bhagujarati","bhagurmukhi","bhook","bihiragana","bikatakana","bilabialclick","bindigurmukhi","birusquare","blackcircle","blackdiamond","blackdownpointingtriangle","blackleftpointingpointer","blackleftpointingtriangle","blacklenticularbracketleft","blacklenticularbracketleftvertical","blacklenticularbracketright","blacklenticularbracketrightvertical","blacklowerlefttriangle","blacklowerrighttriangle","blackrectangle","blackrightpointingpointer","blackrightpointingtriangle","blacksmallsquare","blacksmilingface","blacksquare","blackstar","blackupperlefttriangle","blackupperrighttriangle","blackuppointingsmalltriangle","blackuppointingtriangle","blank","blinebelow","bmonospace","bobaimaithai","bohiragana","bokatakana","bparen","bqsquare","braceex","braceleft","braceleftbt","braceleftmid","braceleftmonospace","braceleftsmall","bracelefttp","braceleftvertical","braceright","bracerightbt","bracerightmid","bracerightmonospace","bracerightsmall","bracerighttp","bracerightvertical","bracketleft","bracketleftbt","bracketleftex","bracketleftmonospace","bracketlefttp","bracketright","bracketrightbt","bracketrightex","bracketrightmonospace","bracketrighttp","breve","brevebelowcmb","brevecmb","breveinvertedbelowcmb","breveinvertedcmb","breveinverteddoublecmb","bridgebelowcmb","bridgeinvertedbelowcmb","brokenbar","bstroke","bsuperior","btopbar","buhiragana","bukatakana","bullet","bulletinverse","bulletoperator","bullseye","caarmenian","cabengali","cacute","cadeva","cagujarati","cagurmukhi","calsquare","candrabindubengali","candrabinducmb","candrabindudeva","candrabindugujarati","capslock","careof","caron","caronbelowcmb","caroncmb","carriagereturn","cbopomofo","ccaron","ccedilla","ccedillaacute","ccircle","ccircumflex","ccurl","cdot","cdotaccent","cdsquare","cedilla","cedillacmb","cent","centigrade","centinferior","centmonospace","centoldstyle","centsuperior","chaarmenian","chabengali","chadeva","chagujarati","chagurmukhi","chbopomofo","cheabkhasiancyrillic","checkmark","checyrillic","chedescenderabkhasiancyrillic","chedescendercyrillic","chedieresiscyrillic","cheharmenian","chekhakassiancyrillic","cheverticalstrokecyrillic","chi","chieuchacirclekorean","chieuchaparenkorean","chieuchcirclekorean","chieuchkorean","chieuchparenkorean","chochangthai","chochanthai","chochingthai","chochoethai","chook","cieucacirclekorean","cieucaparenkorean","cieuccirclekorean","cieuckorean","cieucparenkorean","cieucuparenkorean","circle","circlecopyrt","circlemultiply","circleot","circleplus","circlepostalmark","circlewithlefthalfblack","circlewithrighthalfblack","circumflex","circumflexbelowcmb","circumflexcmb","clickalveolar","clickdental","clicklateral","clickretroflex","club","clubsuitblack","clubsuitwhite","cmcubedsquare","cmonospace","cmsquaredsquare","coarmenian","colon","colonmonetary","colonmonospace","colonsign","colonsmall","colontriangularhalfmod","colontriangularmod","comma","commaabovecmb","commaaboverightcmb","commaaccent","commaarabic","commaarmenian","commainferior","commamonospace","commareversedabovecmb","commareversedmod","commasmall","commasuperior","commaturnedabovecmb","commaturnedmod","compass","congruent","contourintegral","control","controlACK","controlBEL","controlBS","controlCAN","controlCR","controlDC1","controlDC2","controlDC3","controlDC4","controlDEL","controlDLE","controlEM","controlENQ","controlEOT","controlESC","controlETB","controlETX","controlFF","controlFS","controlGS","controlHT","controlLF","controlNAK","controlNULL","controlRS","controlSI","controlSO","controlSOT","controlSTX","controlSUB","controlSYN","controlUS","controlVT","copyright","copyrightsans","copyrightserif","cornerbracketleft","cornerbracketlefthalfwidth","cornerbracketleftvertical","cornerbracketright","cornerbracketrighthalfwidth","cornerbracketrightvertical","corporationsquare","cosquare","coverkgsquare","cparen","cruzeiro","cstretched","curlyand","curlyor","currency","cyrBreve","cyrFlex","cyrbreve","cyrflex","daarmenian","dabengali","dadarabic","dadeva","dadfinalarabic","dadinitialarabic","dadmedialarabic","dagesh","dageshhebrew","dagger","daggerdbl","dagujarati","dagurmukhi","dahiragana","dakatakana","dalarabic","dalet","daletdagesh","daletdageshhebrew","dalethebrew","dalfinalarabic","dammaarabic","dammalowarabic","dammatanaltonearabic","dammatanarabic","danda","dargahebrew","dargalefthebrew","dasiapneumatacyrilliccmb","dblGrave","dblanglebracketleft","dblanglebracketleftvertical","dblanglebracketright","dblanglebracketrightvertical","dblarchinvertedbelowcmb","dblarrowleft","dblarrowright","dbldanda","dblgrave","dblgravecmb","dblintegral","dbllowline","dbllowlinecmb","dbloverlinecmb","dblprimemod","dblverticalbar","dblverticallineabovecmb","dbopomofo","dbsquare","dcaron","dcedilla","dcircle","dcircumflexbelow","dcroat","ddabengali","ddadeva","ddagujarati","ddagurmukhi","ddalarabic","ddalfinalarabic","dddhadeva","ddhabengali","ddhadeva","ddhagujarati","ddhagurmukhi","ddotaccent","ddotbelow","decimalseparatorarabic","decimalseparatorpersian","decyrillic","degree","dehihebrew","dehiragana","deicoptic","dekatakana","deleteleft","deleteright","deltaturned","denominatorminusonenumeratorbengali","dezh","dhabengali","dhadeva","dhagujarati","dhagurmukhi","dhook","dialytikatonos","dialytikatonoscmb","diamond","diamondsuitwhite","dieresis","dieresisacute","dieresisbelowcmb","dieresiscmb","dieresisgrave","dieresistonos","dihiragana","dikatakana","dittomark","divide","divides","divisionslash","djecyrillic","dkshade","dlinebelow","dlsquare","dmacron","dmonospace","dnblock","dochadathai","dodekthai","dohiragana","dokatakana","dollar","dollarinferior","dollarmonospace","dollaroldstyle","dollarsmall","dollarsuperior","dong","dorusquare","dotaccent","dotaccentcmb","dotbelowcmb","dotbelowcomb","dotkatakana","dotlessi","dotlessj","dotlessjstrokehook","dotmath","dottedcircle","doubleyodpatah","doubleyodpatahhebrew","downtackbelowcmb","downtackmod","dparen","dsuperior","dtail","dtopbar","duhiragana","dukatakana","dz","dzaltone","dzcaron","dzcurl","dzeabkhasiancyrillic","dzecyrillic","dzhecyrillic","eacute","earth","ebengali","ebopomofo","ebreve","ecandradeva","ecandragujarati","ecandravowelsigndeva","ecandravowelsigngujarati","ecaron","ecedillabreve","echarmenian","echyiwnarmenian","ecircle","ecircumflex","ecircumflexacute","ecircumflexbelow","ecircumflexdotbelow","ecircumflexgrave","ecircumflexhookabove","ecircumflextilde","ecyrillic","edblgrave","edeva","edieresis","edot","edotaccent","edotbelow","eegurmukhi","eematragurmukhi","efcyrillic","egrave","egujarati","eharmenian","ehbopomofo","ehiragana","ehookabove","eibopomofo","eight","eightarabic","eightbengali","eightcircle","eightcircleinversesansserif","eightdeva","eighteencircle","eighteenparen","eighteenperiod","eightgujarati","eightgurmukhi","eighthackarabic","eighthangzhou","eighthnotebeamed","eightideographicparen","eightinferior","eightmonospace","eightoldstyle","eightparen","eightperiod","eightpersian","eightroman","eightsuperior","eightthai","einvertedbreve","eiotifiedcyrillic","ekatakana","ekatakanahalfwidth","ekonkargurmukhi","ekorean","elcyrillic","elevencircle","elevenparen","elevenperiod","elevenroman","ellipsis","ellipsisvertical","emacron","emacronacute","emacrongrave","emcyrillic","emdash","emdashvertical","emonospace","emphasismarkarmenian","emptyset","enbopomofo","encyrillic","endash","endashvertical","endescendercyrillic","eng","engbopomofo","enghecyrillic","enhookcyrillic","enspace","eogonek","eokorean","eopen","eopenclosed","eopenreversed","eopenreversedclosed","eopenreversedhook","eparen","epsilontonos","equalmonospace","equalsmall","equalsuperior","equivalence","erbopomofo","ercyrillic","ereversed","ereversedcyrillic","escyrillic","esdescendercyrillic","esh","eshcurl","eshortdeva","eshortvowelsigndeva","eshreversedloop","eshsquatreversed","esmallhiragana","esmallkatakana","esmallkatakanahalfwidth","estimated","esuperior","eta","etarmenian","etatonos","eth","etilde","etildebelow","etnahtafoukhhebrew","etnahtafoukhlefthebrew","etnahtahebrew","etnahtalefthebrew","eturned","eukorean","euro","evowelsignbengali","evowelsigndeva","evowelsigngujarati","exclam","exclamarmenian","exclamdbl","exclamdown","exclamdownsmall","exclammonospace","exclamsmall","existential","ezh","ezhcaron","ezhcurl","ezhreversed","ezhtail","fadeva","fagurmukhi","fahrenheit","fathaarabic","fathalowarabic","fathatanarabic","fbopomofo","fcircle","fdotaccent","feharabic","feharmenian","fehfinalarabic","fehinitialarabic","fehmedialarabic","feicoptic","female","ff","f_f","ffi","ffl","fi","fifteencircle","fifteenparen","fifteenperiod","figuredash","filledbox","filledrect","finalkaf","finalkafdagesh","finalkafdageshhebrew","finalkafhebrew","finalmem","finalmemhebrew","finalnun","finalnunhebrew","finalpe","finalpehebrew","finaltsadi","finaltsadihebrew","firsttonechinese","fisheye","fitacyrillic","five","fivearabic","fivebengali","fivecircle","fivecircleinversesansserif","fivedeva","fiveeighths","fivegujarati","fivegurmukhi","fivehackarabic","fivehangzhou","fiveideographicparen","fiveinferior","fivemonospace","fiveoldstyle","fiveparen","fiveperiod","fivepersian","fiveroman","fivesuperior","fivethai","florin","fmonospace","fmsquare","fofanthai","fofathai","fongmanthai","forall","four","fourarabic","fourbengali","fourcircle","fourcircleinversesansserif","fourdeva","fourgujarati","fourgurmukhi","fourhackarabic","fourhangzhou","fourideographicparen","fourinferior","fourmonospace","fournumeratorbengali","fouroldstyle","fourparen","fourperiod","fourpersian","fourroman","foursuperior","fourteencircle","fourteenparen","fourteenperiod","fourthai","fourthtonechinese","fparen","fraction","franc","gabengali","gacute","gadeva","gafarabic","gaffinalarabic","gafinitialarabic","gafmedialarabic","gagujarati","gagurmukhi","gahiragana","gakatakana","gammalatinsmall","gammasuperior","gangiacoptic","gbopomofo","gbreve","gcaron","gcedilla","gcircle","gcircumflex","gcommaaccent","gdot","gdotaccent","gecyrillic","gehiragana","gekatakana","geometricallyequal","gereshaccenthebrew","gereshhebrew","gereshmuqdamhebrew","germandbls","gershayimaccenthebrew","gershayimhebrew","getamark","ghabengali","ghadarmenian","ghadeva","ghagujarati","ghagurmukhi","ghainarabic","ghainfinalarabic","ghaininitialarabic","ghainmedialarabic","ghemiddlehookcyrillic","ghestrokecyrillic","gheupturncyrillic","ghhadeva","ghhagurmukhi","ghook","ghzsquare","gihiragana","gikatakana","gimarmenian","gimel","gimeldagesh","gimeldageshhebrew","gimelhebrew","gjecyrillic","glottalinvertedstroke","glottalstop","glottalstopinverted","glottalstopmod","glottalstopreversed","glottalstopreversedmod","glottalstopreversedsuperior","glottalstopstroke","glottalstopstrokereversed","gmacron","gmonospace","gohiragana","gokatakana","gparen","gpasquare","gradient","grave","gravebelowcmb","gravecmb","gravecomb","gravedeva","gravelowmod","gravemonospace","gravetonecmb","greater","greaterequal","greaterequalorless","greatermonospace","greaterorequivalent","greaterorless","greateroverequal","greatersmall","gscript","gstroke","guhiragana","guillemotleft","guillemotright","guilsinglleft","guilsinglright","gukatakana","guramusquare","gysquare","haabkhasiancyrillic","haaltonearabic","habengali","hadescendercyrillic","hadeva","hagujarati","hagurmukhi","haharabic","hahfinalarabic","hahinitialarabic","hahiragana","hahmedialarabic","haitusquare","hakatakana","hakatakanahalfwidth","halantgurmukhi","hamzaarabic","hamzalowarabic","hangulfiller","hardsigncyrillic","harpoonleftbarbup","harpoonrightbarbup","hasquare","hatafpatah","hatafpatah16","hatafpatah23","hatafpatah2f","hatafpatahhebrew","hatafpatahnarrowhebrew","hatafpatahquarterhebrew","hatafpatahwidehebrew","hatafqamats","hatafqamats1b","hatafqamats28","hatafqamats34","hatafqamatshebrew","hatafqamatsnarrowhebrew","hatafqamatsquarterhebrew","hatafqamatswidehebrew","hatafsegol","hatafsegol17","hatafsegol24","hatafsegol30","hatafsegolhebrew","hatafsegolnarrowhebrew","hatafsegolquarterhebrew","hatafsegolwidehebrew","hbar","hbopomofo","hbrevebelow","hcedilla","hcircle","hcircumflex","hdieresis","hdotaccent","hdotbelow","he","heart","heartsuitblack","heartsuitwhite","hedagesh","hedageshhebrew","hehaltonearabic","heharabic","hehebrew","hehfinalaltonearabic","hehfinalalttwoarabic","hehfinalarabic","hehhamzaabovefinalarabic","hehhamzaaboveisolatedarabic","hehinitialaltonearabic","hehinitialarabic","hehiragana","hehmedialaltonearabic","hehmedialarabic","heiseierasquare","hekatakana","hekatakanahalfwidth","hekutaarusquare","henghook","herutusquare","het","hethebrew","hhook","hhooksuperior","hieuhacirclekorean","hieuhaparenkorean","hieuhcirclekorean","hieuhkorean","hieuhparenkorean","hihiragana","hikatakana","hikatakanahalfwidth","hiriq","hiriq14","hiriq21","hiriq2d","hiriqhebrew","hiriqnarrowhebrew","hiriqquarterhebrew","hiriqwidehebrew","hlinebelow","hmonospace","hoarmenian","hohipthai","hohiragana","hokatakana","hokatakanahalfwidth","holam","holam19","holam26","holam32","holamhebrew","holamnarrowhebrew","holamquarterhebrew","holamwidehebrew","honokhukthai","hookabovecomb","hookcmb","hookpalatalizedbelowcmb","hookretroflexbelowcmb","hoonsquare","horicoptic","horizontalbar","horncmb","hotsprings","house","hparen","hsuperior","hturned","huhiragana","huiitosquare","hukatakana","hukatakanahalfwidth","hungarumlaut","hungarumlautcmb","hv","hyphen","hypheninferior","hyphenmonospace","hyphensmall","hyphensuperior","hyphentwo","iacute","iacyrillic","ibengali","ibopomofo","ibreve","icaron","icircle","icircumflex","icyrillic","idblgrave","ideographearthcircle","ideographfirecircle","ideographicallianceparen","ideographiccallparen","ideographiccentrecircle","ideographicclose","ideographiccomma","ideographiccommaleft","ideographiccongratulationparen","ideographiccorrectcircle","ideographicearthparen","ideographicenterpriseparen","ideographicexcellentcircle","ideographicfestivalparen","ideographicfinancialcircle","ideographicfinancialparen","ideographicfireparen","ideographichaveparen","ideographichighcircle","ideographiciterationmark","ideographiclaborcircle","ideographiclaborparen","ideographicleftcircle","ideographiclowcircle","ideographicmedicinecircle","ideographicmetalparen","ideographicmoonparen","ideographicnameparen","ideographicperiod","ideographicprintcircle","ideographicreachparen","ideographicrepresentparen","ideographicresourceparen","ideographicrightcircle","ideographicsecretcircle","ideographicselfparen","ideographicsocietyparen","ideographicspace","ideographicspecialparen","ideographicstockparen","ideographicstudyparen","ideographicsunparen","ideographicsuperviseparen","ideographicwaterparen","ideographicwoodparen","ideographiczero","ideographmetalcircle","ideographmooncircle","ideographnamecircle","ideographsuncircle","ideographwatercircle","ideographwoodcircle","ideva","idieresis","idieresisacute","idieresiscyrillic","idotbelow","iebrevecyrillic","iecyrillic","ieungacirclekorean","ieungaparenkorean","ieungcirclekorean","ieungkorean","ieungparenkorean","igrave","igujarati","igurmukhi","ihiragana","ihookabove","iibengali","iicyrillic","iideva","iigujarati","iigurmukhi","iimatragurmukhi","iinvertedbreve","iishortcyrillic","iivowelsignbengali","iivowelsigndeva","iivowelsigngujarati","ij","ikatakana","ikatakanahalfwidth","ikorean","ilde","iluyhebrew","imacron","imacroncyrillic","imageorapproximatelyequal","imatragurmukhi","imonospace","increment","infinity","iniarmenian","integral","integralbottom","integralbt","integralex","integraltop","integraltp","intersection","intisquare","invbullet","invcircle","invsmileface","iocyrillic","iogonek","iota","iotadieresis","iotadieresistonos","iotalatin","iotatonos","iparen","irigurmukhi","ismallhiragana","ismallkatakana","ismallkatakanahalfwidth","issharbengali","istroke","isuperior","iterationhiragana","iterationkatakana","itilde","itildebelow","iubopomofo","iucyrillic","ivowelsignbengali","ivowelsigndeva","ivowelsigngujarati","izhitsacyrillic","izhitsadblgravecyrillic","jaarmenian","jabengali","jadeva","jagujarati","jagurmukhi","jbopomofo","jcaron","jcircle","jcircumflex","jcrossedtail","jdotlessstroke","jecyrillic","jeemarabic","jeemfinalarabic","jeeminitialarabic","jeemmedialarabic","jeharabic","jehfinalarabic","jhabengali","jhadeva","jhagujarati","jhagurmukhi","jheharmenian","jis","jmonospace","jparen","jsuperior","kabashkircyrillic","kabengali","kacute","kacyrillic","kadescendercyrillic","kadeva","kaf","kafarabic","kafdagesh","kafdageshhebrew","kaffinalarabic","kafhebrew","kafinitialarabic","kafmedialarabic","kafrafehebrew","kagujarati","kagurmukhi","kahiragana","kahookcyrillic","kakatakana","kakatakanahalfwidth","kappa","kappasymbolgreek","kapyeounmieumkorean","kapyeounphieuphkorean","kapyeounpieupkorean","kapyeounssangpieupkorean","karoriisquare","kashidaautoarabic","kashidaautonosidebearingarabic","kasmallkatakana","kasquare","kasraarabic","kasratanarabic","kastrokecyrillic","katahiraprolongmarkhalfwidth","kaverticalstrokecyrillic","kbopomofo","kcalsquare","kcaron","kcedilla","kcircle","kcommaaccent","kdotbelow","keharmenian","kehiragana","kekatakana","kekatakanahalfwidth","kenarmenian","kesmallkatakana","kgreenlandic","khabengali","khacyrillic","khadeva","khagujarati","khagurmukhi","khaharabic","khahfinalarabic","khahinitialarabic","khahmedialarabic","kheicoptic","khhadeva","khhagurmukhi","khieukhacirclekorean","khieukhaparenkorean","khieukhcirclekorean","khieukhkorean","khieukhparenkorean","khokhaithai","khokhonthai","khokhuatthai","khokhwaithai","khomutthai","khook","khorakhangthai","khzsquare","kihiragana","kikatakana","kikatakanahalfwidth","kiroguramusquare","kiromeetorusquare","kirosquare","kiyeokacirclekorean","kiyeokaparenkorean","kiyeokcirclekorean","kiyeokkorean","kiyeokparenkorean","kiyeoksioskorean","kjecyrillic","klinebelow","klsquare","kmcubedsquare","kmonospace","kmsquaredsquare","kohiragana","kohmsquare","kokaithai","kokatakana","kokatakanahalfwidth","kooposquare","koppacyrillic","koreanstandardsymbol","koroniscmb","kparen","kpasquare","ksicyrillic","ktsquare","kturned","kuhiragana","kukatakana","kukatakanahalfwidth","kvsquare","kwsquare","labengali","lacute","ladeva","lagujarati","lagurmukhi","lakkhangyaothai","lamaleffinalarabic","lamalefhamzaabovefinalarabic","lamalefhamzaaboveisolatedarabic","lamalefhamzabelowfinalarabic","lamalefhamzabelowisolatedarabic","lamalefisolatedarabic","lamalefmaddaabovefinalarabic","lamalefmaddaaboveisolatedarabic","lamarabic","lambdastroke","lamed","lameddagesh","lameddageshhebrew","lamedhebrew","lamfinalarabic","lamhahinitialarabic","laminitialarabic","lamjeeminitialarabic","lamkhahinitialarabic","lamlamhehisolatedarabic","lammedialarabic","lammeemhahinitialarabic","lammeeminitialarabic","largecircle","lbar","lbelt","lbopomofo","lcaron","lcedilla","lcircle","lcircumflexbelow","lcommaaccent","ldot","ldotaccent","ldotbelow","ldotbelowmacron","leftangleabovecmb","lefttackbelowcmb","less","lessequal","lessequalorgreater","lessmonospace","lessorequivalent","lessorgreater","lessoverequal","lesssmall","lezh","lfblock","lhookretroflex","lira","liwnarmenian","lj","ljecyrillic","lladeva","llagujarati","llinebelow","llladeva","llvocalicbengali","llvocalicdeva","llvocalicvowelsignbengali","llvocalicvowelsigndeva","lmiddletilde","lmonospace","lmsquare","lochulathai","logicaland","logicalnot","logicalnotreversed","logicalor","lolingthai","longs","lowlinecenterline","lowlinecmb","lowlinedashed","lozenge","lparen","lslash","lsquare","lsuperior","ltshade","luthai","lvocalicbengali","lvocalicdeva","lvocalicvowelsignbengali","lvocalicvowelsigndeva","lxsquare","mabengali","macron","macronbelowcmb","macroncmb","macronlowmod","macronmonospace","macute","madeva","magujarati","magurmukhi","mahapakhhebrew","mahapakhlefthebrew","mahiragana","maichattawalowleftthai","maichattawalowrightthai","maichattawathai","maichattawaupperleftthai","maieklowleftthai","maieklowrightthai","maiekthai","maiekupperleftthai","maihanakatleftthai","maihanakatthai","maitaikhuleftthai","maitaikhuthai","maitholowleftthai","maitholowrightthai","maithothai","maithoupperleftthai","maitrilowleftthai","maitrilowrightthai","maitrithai","maitriupperleftthai","maiyamokthai","makatakana","makatakanahalfwidth","male","mansyonsquare","maqafhebrew","mars","masoracirclehebrew","masquare","mbopomofo","mbsquare","mcircle","mcubedsquare","mdotaccent","mdotbelow","meemarabic","meemfinalarabic","meeminitialarabic","meemmedialarabic","meemmeeminitialarabic","meemmeemisolatedarabic","meetorusquare","mehiragana","meizierasquare","mekatakana","mekatakanahalfwidth","memdagesh","memdageshhebrew","memhebrew","menarmenian","merkhahebrew","merkhakefulahebrew","merkhakefulalefthebrew","merkhalefthebrew","mhook","mhzsquare","middledotkatakanahalfwidth","middot","mieumacirclekorean","mieumaparenkorean","mieumcirclekorean","mieumkorean","mieumpansioskorean","mieumparenkorean","mieumpieupkorean","mieumsioskorean","mihiragana","mikatakana","mikatakanahalfwidth","minus","minusbelowcmb","minuscircle","minusmod","minusplus","minute","miribaarusquare","mirisquare","mlonglegturned","mlsquare","mmcubedsquare","mmonospace","mmsquaredsquare","mohiragana","mohmsquare","mokatakana","mokatakanahalfwidth","molsquare","momathai","moverssquare","moverssquaredsquare","mparen","mpasquare","mssquare","msuperior","mturned","mu1","muasquare","muchgreater","muchless","mufsquare","mugreek","mugsquare","muhiragana","mukatakana","mukatakanahalfwidth","mulsquare","multiply","mumsquare","munahhebrew","munahlefthebrew","musicalnote","musicalnotedbl","musicflatsign","musicsharpsign","mussquare","muvsquare","muwsquare","mvmegasquare","mvsquare","mwmegasquare","mwsquare","nabengali","nabla","nacute","nadeva","nagujarati","nagurmukhi","nahiragana","nakatakana","nakatakanahalfwidth","napostrophe","nasquare","nbopomofo","nbspace","ncaron","ncedilla","ncircle","ncircumflexbelow","ncommaaccent","ndotaccent","ndotbelow","nehiragana","nekatakana","nekatakanahalfwidth","newsheqelsign","nfsquare","ngabengali","ngadeva","ngagujarati","ngagurmukhi","ngonguthai","nhiragana","nhookleft","nhookretroflex","nieunacirclekorean","nieunaparenkorean","nieuncieuckorean","nieuncirclekorean","nieunhieuhkorean","nieunkorean","nieunpansioskorean","nieunparenkorean","nieunsioskorean","nieuntikeutkorean","nihiragana","nikatakana","nikatakanahalfwidth","nikhahitleftthai","nikhahitthai","nine","ninearabic","ninebengali","ninecircle","ninecircleinversesansserif","ninedeva","ninegujarati","ninegurmukhi","ninehackarabic","ninehangzhou","nineideographicparen","nineinferior","ninemonospace","nineoldstyle","nineparen","nineperiod","ninepersian","nineroman","ninesuperior","nineteencircle","nineteenparen","nineteenperiod","ninethai","nj","njecyrillic","nkatakana","nkatakanahalfwidth","nlegrightlong","nlinebelow","nmonospace","nmsquare","nnabengali","nnadeva","nnagujarati","nnagurmukhi","nnnadeva","nohiragana","nokatakana","nokatakanahalfwidth","nonbreakingspace","nonenthai","nonuthai","noonarabic","noonfinalarabic","noonghunnaarabic","noonghunnafinalarabic","nooninitialarabic","noonjeeminitialarabic","noonjeemisolatedarabic","noonmedialarabic","noonmeeminitialarabic","noonmeemisolatedarabic","noonnoonfinalarabic","notcontains","notelement","notelementof","notequal","notgreater","notgreaternorequal","notgreaternorless","notidentical","notless","notlessnorequal","notparallel","notprecedes","notsubset","notsucceeds","notsuperset","nowarmenian","nparen","nssquare","nsuperior","ntilde","nuhiragana","nukatakana","nukatakanahalfwidth","nuktabengali","nuktadeva","nuktagujarati","nuktagurmukhi","numbersign","numbersignmonospace","numbersignsmall","numeralsigngreek","numeralsignlowergreek","numero","nun","nundagesh","nundageshhebrew","nunhebrew","nvsquare","nwsquare","nyabengali","nyadeva","nyagujarati","nyagurmukhi","oacute","oangthai","obarred","obarredcyrillic","obarreddieresiscyrillic","obengali","obopomofo","obreve","ocandradeva","ocandragujarati","ocandravowelsigndeva","ocandravowelsigngujarati","ocaron","ocircle","ocircumflex","ocircumflexacute","ocircumflexdotbelow","ocircumflexgrave","ocircumflexhookabove","ocircumflextilde","ocyrillic","odblacute","odblgrave","odeva","odieresis","odieresiscyrillic","odotbelow","oe","oekorean","ogonek","ogonekcmb","ograve","ogujarati","oharmenian","ohiragana","ohookabove","ohorn","ohornacute","ohorndotbelow","ohorngrave","ohornhookabove","ohorntilde","ohungarumlaut","oi","oinvertedbreve","okatakana","okatakanahalfwidth","okorean","olehebrew","omacron","omacronacute","omacrongrave","omdeva","omega","omega1","omegacyrillic","omegalatinclosed","omegaroundcyrillic","omegatitlocyrillic","omegatonos","omgujarati","omicron","omicrontonos","omonospace","onearabic","onebengali","onecircle","onecircleinversesansserif","onedeva","onedotenleader","oneeighth","onefitted","onegujarati","onegurmukhi","onehackarabic","onehalf","onehangzhou","oneideographicparen","oneinferior","onemonospace","onenumeratorbengali","oneoldstyle","oneparen","oneperiod","onepersian","onequarter","oneroman","onesuperior","onethai","onethird","oogonek","oogonekmacron","oogurmukhi","oomatragurmukhi","oopen","oparen","openbullet","ordfeminine","ordmasculine","orthogonal","oshortdeva","oshortvowelsigndeva","oslash","oslashacute","osmallhiragana","osmallkatakana","osmallkatakanahalfwidth","ostrokeacute","osuperior","otcyrillic","otilde","otildeacute","otildedieresis","oubopomofo","overline","overlinecenterline","overlinecmb","overlinedashed","overlinedblwavy","overlinewavy","overscore","ovowelsignbengali","ovowelsigndeva","ovowelsigngujarati","paampssquare","paasentosquare","pabengali","pacute","padeva","pagedown","pageup","pagujarati","pagurmukhi","pahiragana","paiyannoithai","pakatakana","palatalizationcyrilliccmb","palochkacyrillic","pansioskorean","paragraph","parallel","parenleft","parenleftaltonearabic","parenleftbt","parenleftex","parenleftinferior","parenleftmonospace","parenleftsmall","parenleftsuperior","parenlefttp","parenleftvertical","parenright","parenrightaltonearabic","parenrightbt","parenrightex","parenrightinferior","parenrightmonospace","parenrightsmall","parenrightsuperior","parenrighttp","parenrightvertical","partialdiff","paseqhebrew","pashtahebrew","pasquare","patah","patah11","patah1d","patah2a","patahhebrew","patahnarrowhebrew","patahquarterhebrew","patahwidehebrew","pazerhebrew","pbopomofo","pcircle","pdotaccent","pe","pecyrillic","pedagesh","pedageshhebrew","peezisquare","pefinaldageshhebrew","peharabic","peharmenian","pehebrew","pehfinalarabic","pehinitialarabic","pehiragana","pehmedialarabic","pekatakana","pemiddlehookcyrillic","perafehebrew","percent","percentarabic","percentmonospace","percentsmall","period","periodarmenian","periodcentered","periodhalfwidth","periodinferior","periodmonospace","periodsmall","periodsuperior","perispomenigreekcmb","perpendicular","perthousand","peseta","pfsquare","phabengali","phadeva","phagujarati","phagurmukhi","phi","phi1","phieuphacirclekorean","phieuphaparenkorean","phieuphcirclekorean","phieuphkorean","phieuphparenkorean","philatin","phinthuthai","phisymbolgreek","phook","phophanthai","phophungthai","phosamphaothai","pieupacirclekorean","pieupaparenkorean","pieupcieuckorean","pieupcirclekorean","pieupkiyeokkorean","pieupkorean","pieupparenkorean","pieupsioskiyeokkorean","pieupsioskorean","pieupsiostikeutkorean","pieupthieuthkorean","pieuptikeutkorean","pihiragana","pikatakana","pisymbolgreek","piwrarmenian","plus","plusbelowcmb","pluscircle","plusminus","plusmod","plusmonospace","plussmall","plussuperior","pmonospace","pmsquare","pohiragana","pointingindexdownwhite","pointingindexleftwhite","pointingindexrightwhite","pointingindexupwhite","pokatakana","poplathai","postalmark","postalmarkface","pparen","precedes","prescription","primemod","primereversed","product","projective","prolongedkana","propellor","propersubset","propersuperset","proportion","proportional","psi","psicyrillic","psilipneumatacyrilliccmb","pssquare","puhiragana","pukatakana","pvsquare","pwsquare","qadeva","qadmahebrew","qafarabic","qaffinalarabic","qafinitialarabic","qafmedialarabic","qamats","qamats10","qamats1a","qamats1c","qamats27","qamats29","qamats33","qamatsde","qamatshebrew","qamatsnarrowhebrew","qamatsqatanhebrew","qamatsqatannarrowhebrew","qamatsqatanquarterhebrew","qamatsqatanwidehebrew","qamatsquarterhebrew","qamatswidehebrew","qarneyparahebrew","qbopomofo","qcircle","qhook","qmonospace","qof","qofdagesh","qofdageshhebrew","qofhebrew","qparen","quarternote","qubuts","qubuts18","qubuts25","qubuts31","qubutshebrew","qubutsnarrowhebrew","qubutsquarterhebrew","qubutswidehebrew","question","questionarabic","questionarmenian","questiondown","questiondownsmall","questiongreek","questionmonospace","questionsmall","quotedbl","quotedblbase","quotedblleft","quotedblmonospace","quotedblprime","quotedblprimereversed","quotedblright","quoteleft","quoteleftreversed","quotereversed","quoteright","quoterightn","quotesinglbase","quotesingle","quotesinglemonospace","raarmenian","rabengali","racute","radeva","radical","radicalex","radoverssquare","radoverssquaredsquare","radsquare","rafe","rafehebrew","ragujarati","ragurmukhi","rahiragana","rakatakana","rakatakanahalfwidth","ralowerdiagonalbengali","ramiddlediagonalbengali","ramshorn","ratio","rbopomofo","rcaron","rcedilla","rcircle","rcommaaccent","rdblgrave","rdotaccent","rdotbelow","rdotbelowmacron","referencemark","reflexsubset","reflexsuperset","registered","registersans","registerserif","reharabic","reharmenian","rehfinalarabic","rehiragana","rekatakana","rekatakanahalfwidth","resh","reshdageshhebrew","reshhebrew","reversedtilde","reviahebrew","reviamugrashhebrew","revlogicalnot","rfishhook","rfishhookreversed","rhabengali","rhadeva","rho","rhook","rhookturned","rhookturnedsuperior","rhosymbolgreek","rhotichookmod","rieulacirclekorean","rieulaparenkorean","rieulcirclekorean","rieulhieuhkorean","rieulkiyeokkorean","rieulkiyeoksioskorean","rieulkorean","rieulmieumkorean","rieulpansioskorean","rieulparenkorean","rieulphieuphkorean","rieulpieupkorean","rieulpieupsioskorean","rieulsioskorean","rieulthieuthkorean","rieultikeutkorean","rieulyeorinhieuhkorean","rightangle","righttackbelowcmb","righttriangle","rihiragana","rikatakana","rikatakanahalfwidth","ring","ringbelowcmb","ringcmb","ringhalfleft","ringhalfleftarmenian","ringhalfleftbelowcmb","ringhalfleftcentered","ringhalfright","ringhalfrightbelowcmb","ringhalfrightcentered","rinvertedbreve","rittorusquare","rlinebelow","rlongleg","rlonglegturned","rmonospace","rohiragana","rokatakana","rokatakanahalfwidth","roruathai","rparen","rrabengali","rradeva","rragurmukhi","rreharabic","rrehfinalarabic","rrvocalicbengali","rrvocalicdeva","rrvocalicgujarati","rrvocalicvowelsignbengali","rrvocalicvowelsigndeva","rrvocalicvowelsigngujarati","rsuperior","rtblock","rturned","rturnedsuperior","ruhiragana","rukatakana","rukatakanahalfwidth","rupeemarkbengali","rupeesignbengali","rupiah","ruthai","rvocalicbengali","rvocalicdeva","rvocalicgujarati","rvocalicvowelsignbengali","rvocalicvowelsigndeva","rvocalicvowelsigngujarati","sabengali","sacute","sacutedotaccent","sadarabic","sadeva","sadfinalarabic","sadinitialarabic","sadmedialarabic","sagujarati","sagurmukhi","sahiragana","sakatakana","sakatakanahalfwidth","sallallahoualayhewasallamarabic","samekh","samekhdagesh","samekhdageshhebrew","samekhhebrew","saraaathai","saraaethai","saraaimaimalaithai","saraaimaimuanthai","saraamthai","saraathai","saraethai","saraiileftthai","saraiithai","saraileftthai","saraithai","saraothai","saraueeleftthai","saraueethai","saraueleftthai","sarauethai","sarauthai","sarauuthai","sbopomofo","scaron","scarondotaccent","scedilla","schwa","schwacyrillic","schwadieresiscyrillic","schwahook","scircle","scircumflex","scommaaccent","sdotaccent","sdotbelow","sdotbelowdotaccent","seagullbelowcmb","secondtonechinese","section","seenarabic","seenfinalarabic","seeninitialarabic","seenmedialarabic","segol","segol13","segol1f","segol2c","segolhebrew","segolnarrowhebrew","segolquarterhebrew","segoltahebrew","segolwidehebrew","seharmenian","sehiragana","sekatakana","sekatakanahalfwidth","semicolon","semicolonarabic","semicolonmonospace","semicolonsmall","semivoicedmarkkana","semivoicedmarkkanahalfwidth","sentisquare","sentosquare","seven","sevenarabic","sevenbengali","sevencircle","sevencircleinversesansserif","sevendeva","seveneighths","sevengujarati","sevengurmukhi","sevenhackarabic","sevenhangzhou","sevenideographicparen","seveninferior","sevenmonospace","sevenoldstyle","sevenparen","sevenperiod","sevenpersian","sevenroman","sevensuperior","seventeencircle","seventeenparen","seventeenperiod","seventhai","sfthyphen","shaarmenian","shabengali","shacyrillic","shaddaarabic","shaddadammaarabic","shaddadammatanarabic","shaddafathaarabic","shaddakasraarabic","shaddakasratanarabic","shade","shadedark","shadelight","shademedium","shadeva","shagujarati","shagurmukhi","shalshelethebrew","shbopomofo","shchacyrillic","sheenarabic","sheenfinalarabic","sheeninitialarabic","sheenmedialarabic","sheicoptic","sheqel","sheqelhebrew","sheva","sheva115","sheva15","sheva22","sheva2e","shevahebrew","shevanarrowhebrew","shevaquarterhebrew","shevawidehebrew","shhacyrillic","shimacoptic","shin","shindagesh","shindageshhebrew","shindageshshindot","shindageshshindothebrew","shindageshsindot","shindageshsindothebrew","shindothebrew","shinhebrew","shinshindot","shinshindothebrew","shinsindot","shinsindothebrew","shook","sigmafinal","sigmalunatesymbolgreek","sihiragana","sikatakana","sikatakanahalfwidth","siluqhebrew","siluqlefthebrew","similar","sindothebrew","siosacirclekorean","siosaparenkorean","sioscieuckorean","sioscirclekorean","sioskiyeokkorean","sioskorean","siosnieunkorean","siosparenkorean","siospieupkorean","siostikeutkorean","six","sixarabic","sixbengali","sixcircle","sixcircleinversesansserif","sixdeva","sixgujarati","sixgurmukhi","sixhackarabic","sixhangzhou","sixideographicparen","sixinferior","sixmonospace","sixoldstyle","sixparen","sixperiod","sixpersian","sixroman","sixsuperior","sixteencircle","sixteencurrencydenominatorbengali","sixteenparen","sixteenperiod","sixthai","slash","slashmonospace","slong","slongdotaccent","smileface","smonospace","sofpasuqhebrew","softhyphen","softsigncyrillic","sohiragana","sokatakana","sokatakanahalfwidth","soliduslongoverlaycmb","solidusshortoverlaycmb","sorusithai","sosalathai","sosothai","sosuathai","space","spacehackarabic","spade","spadesuitblack","spadesuitwhite","sparen","squarebelowcmb","squarecc","squarecm","squarediagonalcrosshatchfill","squarehorizontalfill","squarekg","squarekm","squarekmcapital","squareln","squarelog","squaremg","squaremil","squaremm","squaremsquared","squareorthogonalcrosshatchfill","squareupperlefttolowerrightfill","squareupperrighttolowerleftfill","squareverticalfill","squarewhitewithsmallblack","srsquare","ssabengali","ssadeva","ssagujarati","ssangcieuckorean","ssanghieuhkorean","ssangieungkorean","ssangkiyeokkorean","ssangnieunkorean","ssangpieupkorean","ssangsioskorean","ssangtikeutkorean","ssuperior","sterling","sterlingmonospace","strokelongoverlaycmb","strokeshortoverlaycmb","subset","subsetnotequal","subsetorequal","succeeds","suchthat","suhiragana","sukatakana","sukatakanahalfwidth","sukunarabic","summation","sun","superset","supersetnotequal","supersetorequal","svsquare","syouwaerasquare","tabengali","tackdown","tackleft","tadeva","tagujarati","tagurmukhi","taharabic","tahfinalarabic","tahinitialarabic","tahiragana","tahmedialarabic","taisyouerasquare","takatakana","takatakanahalfwidth","tatweelarabic","tau","tav","tavdages","tavdagesh","tavdageshhebrew","tavhebrew","tbar","tbopomofo","tcaron","tccurl","tcedilla","tcheharabic","tchehfinalarabic","tchehinitialarabic","tchehmedialarabic","tcircle","tcircumflexbelow","tcommaaccent","tdieresis","tdotaccent","tdotbelow","tecyrillic","tedescendercyrillic","teharabic","tehfinalarabic","tehhahinitialarabic","tehhahisolatedarabic","tehinitialarabic","tehiragana","tehjeeminitialarabic","tehjeemisolatedarabic","tehmarbutaarabic","tehmarbutafinalarabic","tehmedialarabic","tehmeeminitialarabic","tehmeemisolatedarabic","tehnoonfinalarabic","tekatakana","tekatakanahalfwidth","telephone","telephoneblack","telishagedolahebrew","telishaqetanahebrew","tencircle","tenideographicparen","tenparen","tenperiod","tenroman","tesh","tet","tetdagesh","tetdageshhebrew","tethebrew","tetsecyrillic","tevirhebrew","tevirlefthebrew","thabengali","thadeva","thagujarati","thagurmukhi","thalarabic","thalfinalarabic","thanthakhatlowleftthai","thanthakhatlowrightthai","thanthakhatthai","thanthakhatupperleftthai","theharabic","thehfinalarabic","thehinitialarabic","thehmedialarabic","thereexists","therefore","theta","theta1","thetasymbolgreek","thieuthacirclekorean","thieuthaparenkorean","thieuthcirclekorean","thieuthkorean","thieuthparenkorean","thirteencircle","thirteenparen","thirteenperiod","thonangmonthothai","thook","thophuthaothai","thorn","thothahanthai","thothanthai","thothongthai","thothungthai","thousandcyrillic","thousandsseparatorarabic","thousandsseparatorpersian","three","threearabic","threebengali","threecircle","threecircleinversesansserif","threedeva","threeeighths","threegujarati","threegurmukhi","threehackarabic","threehangzhou","threeideographicparen","threeinferior","threemonospace","threenumeratorbengali","threeoldstyle","threeparen","threeperiod","threepersian","threequarters","threequartersemdash","threeroman","threesuperior","threethai","thzsquare","tihiragana","tikatakana","tikatakanahalfwidth","tikeutacirclekorean","tikeutaparenkorean","tikeutcirclekorean","tikeutkorean","tikeutparenkorean","tilde","tildebelowcmb","tildecmb","tildecomb","tildedoublecmb","tildeoperator","tildeoverlaycmb","tildeverticalcmb","timescircle","tipehahebrew","tipehalefthebrew","tippigurmukhi","titlocyrilliccmb","tiwnarmenian","tlinebelow","tmonospace","toarmenian","tohiragana","tokatakana","tokatakanahalfwidth","tonebarextrahighmod","tonebarextralowmod","tonebarhighmod","tonebarlowmod","tonebarmidmod","tonefive","tonesix","tonetwo","tonos","tonsquare","topatakthai","tortoiseshellbracketleft","tortoiseshellbracketleftsmall","tortoiseshellbracketleftvertical","tortoiseshellbracketright","tortoiseshellbracketrightsmall","tortoiseshellbracketrightvertical","totaothai","tpalatalhook","tparen","trademark","trademarksans","trademarkserif","tretroflexhook","triagdn","triaglf","triagrt","triagup","tsadi","tsadidagesh","tsadidageshhebrew","tsadihebrew","tsecyrillic","tsere","tsere12","tsere1e","tsere2b","tserehebrew","tserenarrowhebrew","tserequarterhebrew","tserewidehebrew","tshecyrillic","tsuperior","ttabengali","ttadeva","ttagujarati","ttagurmukhi","tteharabic","ttehfinalarabic","ttehinitialarabic","ttehmedialarabic","tthabengali","tthadeva","tthagujarati","tthagurmukhi","tturned","tuhiragana","tukatakana","tukatakanahalfwidth","tusmallhiragana","tusmallkatakana","tusmallkatakanahalfwidth","twelvecircle","twelveparen","twelveperiod","twelveroman","twentycircle","twentyhangzhou","twentyparen","twentyperiod","twoarabic","twobengali","twocircle","twocircleinversesansserif","twodeva","twodotenleader","twodotleader","twodotleadervertical","twogujarati","twogurmukhi","twohackarabic","twohangzhou","twoideographicparen","twoinferior","twomonospace","twonumeratorbengali","twooldstyle","twoparen","twoperiod","twopersian","tworoman","twostroke","twosuperior","twothai","twothirds","uacute","ubar","ubengali","ubopomofo","ubreve","ucaron","ucircle","ucircumflex","ucircumflexbelow","ucyrillic","udattadeva","udblacute","udblgrave","udeva","udieresis","udieresisacute","udieresisbelow","udieresiscaron","udieresiscyrillic","udieresisgrave","udieresismacron","udotbelow","ugrave","ugujarati","ugurmukhi","uhiragana","uhookabove","uhorn","uhornacute","uhorndotbelow","uhorngrave","uhornhookabove","uhorntilde","uhungarumlaut","uhungarumlautcyrillic","uinvertedbreve","ukatakana","ukatakanahalfwidth","ukcyrillic","ukorean","umacron","umacroncyrillic","umacrondieresis","umatragurmukhi","umonospace","underscore","underscoredbl","underscoremonospace","underscorevertical","underscorewavy","union","universal","uogonek","uparen","upblock","upperdothebrew","upsilon","upsilondieresis","upsilondieresistonos","upsilonlatin","upsilontonos","uptackbelowcmb","uptackmod","uragurmukhi","uring","ushortcyrillic","usmallhiragana","usmallkatakana","usmallkatakanahalfwidth","ustraightcyrillic","ustraightstrokecyrillic","utilde","utildeacute","utildebelow","uubengali","uudeva","uugujarati","uugurmukhi","uumatragurmukhi","uuvowelsignbengali","uuvowelsigndeva","uuvowelsigngujarati","uvowelsignbengali","uvowelsigndeva","uvowelsigngujarati","vadeva","vagujarati","vagurmukhi","vakatakana","vav","vavdagesh","vavdagesh65","vavdageshhebrew","vavhebrew","vavholam","vavholamhebrew","vavvavhebrew","vavyodhebrew","vcircle","vdotbelow","vecyrillic","veharabic","vehfinalarabic","vehinitialarabic","vehmedialarabic","vekatakana","venus","verticalbar","verticallineabovecmb","verticallinebelowcmb","verticallinelowmod","verticallinemod","vewarmenian","vhook","vikatakana","viramabengali","viramadeva","viramagujarati","visargabengali","visargadeva","visargagujarati","vmonospace","voarmenian","voicediterationhiragana","voicediterationkatakana","voicedmarkkana","voicedmarkkanahalfwidth","vokatakana","vparen","vtilde","vturned","vuhiragana","vukatakana","wacute","waekorean","wahiragana","wakatakana","wakatakanahalfwidth","wakorean","wasmallhiragana","wasmallkatakana","wattosquare","wavedash","wavyunderscorevertical","wawarabic","wawfinalarabic","wawhamzaabovearabic","wawhamzaabovefinalarabic","wbsquare","wcircle","wcircumflex","wdieresis","wdotaccent","wdotbelow","wehiragana","weierstrass","wekatakana","wekorean","weokorean","wgrave","whitebullet","whitecircle","whitecircleinverse","whitecornerbracketleft","whitecornerbracketleftvertical","whitecornerbracketright","whitecornerbracketrightvertical","whitediamond","whitediamondcontainingblacksmalldiamond","whitedownpointingsmalltriangle","whitedownpointingtriangle","whiteleftpointingsmalltriangle","whiteleftpointingtriangle","whitelenticularbracketleft","whitelenticularbracketright","whiterightpointingsmalltriangle","whiterightpointingtriangle","whitesmallsquare","whitesmilingface","whitesquare","whitestar","whitetelephone","whitetortoiseshellbracketleft","whitetortoiseshellbracketright","whiteuppointingsmalltriangle","whiteuppointingtriangle","wihiragana","wikatakana","wikorean","wmonospace","wohiragana","wokatakana","wokatakanahalfwidth","won","wonmonospace","wowaenthai","wparen","wring","wsuperior","wturned","wynn","xabovecmb","xbopomofo","xcircle","xdieresis","xdotaccent","xeharmenian","xmonospace","xparen","xsuperior","yaadosquare","yabengali","yacute","yadeva","yaekorean","yagujarati","yagurmukhi","yahiragana","yakatakana","yakatakanahalfwidth","yakorean","yamakkanthai","yasmallhiragana","yasmallkatakana","yasmallkatakanahalfwidth","yatcyrillic","ycircle","ycircumflex","ydieresis","ydotaccent","ydotbelow","yeharabic","yehbarreearabic","yehbarreefinalarabic","yehfinalarabic","yehhamzaabovearabic","yehhamzaabovefinalarabic","yehhamzaaboveinitialarabic","yehhamzaabovemedialarabic","yehinitialarabic","yehmedialarabic","yehmeeminitialarabic","yehmeemisolatedarabic","yehnoonfinalarabic","yehthreedotsbelowarabic","yekorean","yen","yenmonospace","yeokorean","yeorinhieuhkorean","yerahbenyomohebrew","yerahbenyomolefthebrew","yericyrillic","yerudieresiscyrillic","yesieungkorean","yesieungpansioskorean","yesieungsioskorean","yetivhebrew","ygrave","yhook","yhookabove","yiarmenian","yicyrillic","yikorean","yinyang","yiwnarmenian","ymonospace","yod","yoddagesh","yoddageshhebrew","yodhebrew","yodyodhebrew","yodyodpatahhebrew","yohiragana","yoikorean","yokatakana","yokatakanahalfwidth","yokorean","yosmallhiragana","yosmallkatakana","yosmallkatakanahalfwidth","yotgreek","yoyaekorean","yoyakorean","yoyakthai","yoyingthai","yparen","ypogegrammeni","ypogegrammenigreekcmb","yr","yring","ysuperior","ytilde","yturned","yuhiragana","yuikorean","yukatakana","yukatakanahalfwidth","yukorean","yusbigcyrillic","yusbigiotifiedcyrillic","yuslittlecyrillic","yuslittleiotifiedcyrillic","yusmallhiragana","yusmallkatakana","yusmallkatakanahalfwidth","yuyekorean","yuyeokorean","yyabengali","yyadeva","zaarmenian","zacute","zadeva","zagurmukhi","zaharabic","zahfinalarabic","zahinitialarabic","zahiragana","zahmedialarabic","zainarabic","zainfinalarabic","zakatakana","zaqefgadolhebrew","zaqefqatanhebrew","zarqahebrew","zayin","zayindagesh","zayindageshhebrew","zayinhebrew","zbopomofo","zcaron","zcircle","zcircumflex","zcurl","zdot","zdotaccent","zdotbelow","zecyrillic","zedescendercyrillic","zedieresiscyrillic","zehiragana","zekatakana","zeroarabic","zerobengali","zerodeva","zerogujarati","zerogurmukhi","zerohackarabic","zeroinferior","zeromonospace","zerooldstyle","zeropersian","zerosuperior","zerothai","zerowidthjoiner","zerowidthnonjoiner","zerowidthspace","zeta","zhbopomofo","zhearmenian","zhebrevecyrillic","zhecyrillic","zhedescendercyrillic","zhedieresiscyrillic","zihiragana","zikatakana","zinorhebrew","zlinebelow","zmonospace","zohiragana","zokatakana","zparen","zretroflexhook","zstroke","zuhiragana","zukatakana","angbracketleftbig","angbracketleftBig","angbracketleftbigg","angbracketleftBigg","angbracketrightBig","angbracketrightbig","angbracketrightBigg","angbracketrightbigg","arrowhookleft","arrowhookright","arrowlefttophalf","arrowleftbothalf","arrownortheast","arrownorthwest","arrowrighttophalf","arrowrightbothalf","arrowsoutheast","arrowsouthwest","backslashbig","backslashBig","backslashBigg","backslashbigg","bardbl","bracehtipdownleft","bracehtipdownright","bracehtipupleft","bracehtipupright","braceleftBig","braceleftbig","braceleftbigg","braceleftBigg","bracerightBig","bracerightbig","bracerightbigg","bracerightBigg","bracketleftbig","bracketleftBig","bracketleftbigg","bracketleftBigg","bracketrightBig","bracketrightbig","bracketrightbigg","bracketrightBigg","ceilingleftbig","ceilingleftBig","ceilingleftBigg","ceilingleftbigg","ceilingrightbig","ceilingrightBig","ceilingrightbigg","ceilingrightBigg","circledotdisplay","circledottext","circlemultiplydisplay","circlemultiplytext","circleplusdisplay","circleplustext","contintegraldisplay","contintegraltext","coproductdisplay","coproducttext","floorleftBig","floorleftbig","floorleftbigg","floorleftBigg","floorrightbig","floorrightBig","floorrightBigg","floorrightbigg","hatwide","hatwider","hatwidest","intercal","integraldisplay","integraltext","intersectiondisplay","intersectiontext","logicalanddisplay","logicalandtext","logicalordisplay","logicalortext","parenleftBig","parenleftbig","parenleftBigg","parenleftbigg","parenrightBig","parenrightbig","parenrightBigg","parenrightbigg","productdisplay","producttext","radicalbig","radicalBig","radicalBigg","radicalbigg","radicalbt","radicaltp","radicalvertex","slashbig","slashBig","slashBigg","slashbigg","summationdisplay","summationtext","tildewide","tildewider","tildewidest","uniondisplay","unionmultidisplay","unionmultitext","unionsqdisplay","unionsqtext","uniontext","vextenddouble","vextendsingle","a202","a119","a118","a117","a11","a12","a13","a14","a15","a16","a105","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a10","a29","a30","a31","a32","a33","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","a45","a46","a47","a48","a49","a50","a51","a52","a53","a54","a55","a56","a57","a58","a59","a60","a61","a62","a63","a64","a65","a66","a67","a68","a69","a70","a71","a72","a73","a74","a203","a75","a204","a76","a77","a78","a79","a81","a82","a83","a84","a97","a98","a99","a100","a101","a102","a103","a104","a106","a107","a108","a112","a111","a110","a109","a120","a121","a122","a123","a124","a125","a126","a127","a128","a129","a130","a131","a132","a133","a134","a135","a136","a137","a138","a139","a140","a141","a142","a143","a144","a145","a146","a147","a148","a149","a150","a151","a152","a153","a154","a155","a156","a157","a158","a159","a160","a161","a163","a164","a196","a165","a192","a166","a167","a168","a169","a170","a171","a172","a173","a162","a174","a175","a176","a177","a178","a179","a193","a180","a199","a181","a200","a182","a201","a183","a184","a197","a185","a194","a198","a186","a195","a187","a188","a189","a190","a191","a89","a90","a93","a94","a91","a92","a205","a85","a206","a86","a87","a88","a95","a96","ArialNarrow","ArialBlack","Arial","ArialMT","CourierNew","CourierNewPSMT","Helvetica","TimesNewRoman","TimesNewRomanPS","TimesNewRomanPSMT","Calibri","CenturyGothic","ComicSansMS","LucidaConsole","NuptialScript","SegoeUISymbol","Wingdings","Albertus","Aldus","Alexandria","Algerian","Antiqua","Apex","Arno","Aster","Aurora","Baskerville","Bell","Bembo","Benguiat","Bodoni","Bookman","Calisto","Calvert","Capitals","Cambria","Cartier","Caslon","Catull","Centaur","Chaparral","Cheltenham","Clarendon","Clearface","Cochin","Colonna","Constantia","Corona","Ecotype","Egyptienne","Elephant","Excelsior","Fairfield","Folkard","Footlight","FreeSerif","Garamond","Gentium","Georgia","Gloucester","Granjon","Heather","Hercules","Hiroshige","Imprint","Janson","Joanna","Korinna","Lexicon","Literaturnaya","Lucida","Melior","Memphis","Miller","Minion","Modern","Palatino","Perpetua","Plantin","Playbill","Renault","Requiem","Rockwell","Roman","Sabon","Scala","Seagull","Sistina","Souvenir","STIX","Sylfaen","Times","Trajan","Utopia","Versailles","Wanted","Weiss","Windsor","XITS","Dingbats","ZapfDingbats","getSpecialPUASymbols","hexStr","nameLen","UnicodeRanges","isRTLRangeFor","charsLength","getLong","getUshort","getSubroutineBias","numSubrs","parseCmap","idDelta","idOffset","parseCff","gsubrs","isCFFCIDFont","parseGlyfTable","lookupCmap","codePointAt","compileGlyf","cmds","quadraticCurveTo","xa","ya","numberOfContours","arg1","arg2","scale01","scale10","subglyph","endPtsOfContours","instructionLength","numberOfPoints","startPoint","contour","compileCharString","charStringCode","bezierCurveTo","stems","xb","yb","y3","subrCode","stackClean","subrsBias","achar","bchar","glyphNameMap","gsubrsBias","NOOP","CompiledFont","compiledGlyphs","compiledCharCodeToGlyphId","compileGlyph","compileGlyphImpl","TrueTypeCompiled","Type2Compiled","cffInfo","HINTING_ENABLED","Type1CharString","COMMAND_MAP","hstem","vstem","vmoveto","rlineto","hlineto","vlineto","rrcurveto","callsubr","flex","drop","endchar","rmoveto","hmoveto","vhcurveto","hvcurveto","lsb","flexing","encoded","wx","sbx","executeCommand","dy","asb","sby","num2","num1","flexArgs","howManyArgs","command","keepStack","stackLength","EEXEC_ENCRYPT_KEY","CHAR_STRS_ENCRYPT_KEY","isHexDigit","discardNumber","decryptAscii","digit1","digit2","isSpecial","encrypted","isBinary","readNumberArray","getToken","readInt","readBoolean","readCharStrings","lenIV","program","blueArray","charString","charStringObject","encodingArg","ShadingType","FUNCTION_BASED","AXIAL","RADIAL","FREE_FORM_MESH","LATTICE_FORM_MESH","COONS_PATCH_MESH","TENSOR_PATCH_MESH","getPattern","Shadings","RadialAxial","Mesh","Dummy","xstep","ystep","paintType","tilingType","SMALL_NUMBER","coordsArr","shadingType","domainArr","extendStart","extendEnd","extendArr","r1","distance","fnObj","createFromArray","NUMBER_OF_SAMPLES","colorStops","cssColor","makeCssRgb","background","r0","singularValueDecompose2dScale","MeshStreamReader","tmpCompsBuf","csNumComps","tmpCsCompsBuf","colorFn","decodeType4Shading","mesh","coords","operators","verticesLeft","hasData","readFlag","coord","readCoordinate","readComponents","align","figures","decodeType5Shading","verticesPerRow","bitsPerFlag","bitsPerCoordinate","yi","ci","MIN_SPLIT_PATCH_CHUNKS_AMOUNT","MAX_SPLIT_PATCH_CHUNKS_AMOUNT","TRIANGLE_DENSITY","getB","buildB","lut","t_","buildFigureFromPatch","figure","figureMinX","figureMinY","figureMaxX","figureMaxY","splitXBy","bounds","splitYBy","figureCoords","figureColors","cr","c0","c3","bRow","bCol","newColor","decodeType6Shading","tmp4","decodeType7Shading","updateBounds","packData","coordsPacked","xy","colorsPacked","decodeContext","patchMesh","PostScriptCompiler","PostScriptEvaluator","_ps_parser","_localFunctionCache","cachedFunction","parsedFunction","PDFFunction","parseArray","fnRef","localFunction","toNumberArray","CONSTRUCT_SAMPLED","CONSTRUCT_INTERPOLATED","CONSTRUCT_STICHED","CONSTRUCT_POSTSCRIPT","outputSize","bps","sampleMul","strBytes","strIdx","constructSampled","constructInterpolated","constructStiched","constructPostScript","typeFn","IR","constructSampledFromIR","constructInterpolatedFromIR","constructStichedFromIR","constructPostScriptFromIR","fromIR","toMultiArray","domain","inputSize","samples","getSampleArray","interpolate","xmin","xmax","ymin","ymax","cubeVertices","cubeN","Float64Array","cubeVertex","domain_2i","domain_2i_1","size_i","e0","n0","n1","rj","fnRefs","fns","dmin","dmax","rmin","rmax","PostScriptLexer","PostScriptParser","numOutputs","numInputs","MAX_CACHE_SIZE","cache_available","cachedValue","execute","stackIndex","bound","fnDict","PostScriptStack","MAX_STACK_SIZE","initialStack","roll","operator","counter","atan","LN10","AstNode","AstArgument","AstLiteral","AstBinaryOperation","AstMin","AstVariable","AstVariableDefinition","variable","ExpressionBuilderVisitor","parts","buildAddOperation","buildMulOperation","buildSubOperation","buildMinOperation","visit","visitArgument","visitLiteral","visitBinaryOperation","visitMin","visitVariable","visitVariableDefinition","literal","definition","ast1","ast2","tmpVar","instructions","lastRegister","instruction","statementBuilder","expr","nextToken","accept","expect","PostScriptTokenTypes","LBRACE","parseBlock","RBRACE","NUMBER","OPERATOR","parseCondition","conditionLocation","IF","jumpLocation","endOfTrue","IFELSE","PostScriptToken","opCache","opValue","getOperator","baseTypes","arabicTypes","findUnequal","setValues","reverseValues","temp","createBidiText","isLTR","startLevel","strLength","numBidi","charType","sor","eor","lastType","before","after","highestLevel","lowestOddLevel","Courier","SEED","MASK_HIGH","MASK_LOW","blockCounts","tailLength","dataUint32","C1","C2","C1_LOW","C2_LOW","hex1","hex2","decodeAndClamp","addend","coefficient","resizeImageMask","isMask","matte","needsDecode","decodeCoefficients","decodeAddends","isIndexed","maskDict","imageData","smaskData","maskData","computedLength","haveFullData","bufferPos","rowComps","loop1End","loop2End","remainingBits","rgbaBuf","alphaBuf","sw","fillGrayBuffer","opacity","imageOffset","maskOffset","matteRgb","matteR","matteG","matteB","forceRGBA","getImageBytes","newArray","imageLength","maybeUndoPreblend","getComponents","fillOpacity","decodeBuffer","fillRgb","undoPreblend","CallbackKind","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","_processStreamMessage","cbSourceName","cbTargetName","_createStreamSink","addEventListener","_postMessage","queueingStrategy","controller","startCapability","startCall","pullCall","cancelCall","isClosed","pull","pullCapability","cancel","cancelCapability","isCancelled","lastDesiredSize","sinkCapability","success","_deleteStreamController","removeEventListener","_msgHandler","_contentLength","_fullRequestReader","_rangeRequestReaders","PDFWorkerStreamReader","PDFWorkerStreamRangeReader","readers","_isRangeSupported","_isStreamingSupported","_reader","_headersReady","$sort","comparefn","MillerRabin","millerRabin","TWENTYFOUR","ELEVEN","TEN","THREE","SEVEN","setPublicKey","setPrivateKey","_priv","primeCache","checkPrime","rem","simpleSieve","fermatTest","malleable","setGenerator","__prime","_primeLen","_primeCode","formatReturnValue","bn","__gen","generateKeys","_gen","getPublicKey","computeSecret","getPrime","front","getPrivateKey","getGenerator","asn","Time","utcTime","utctime","generalTime","gentime","AttributeTypeValue","any","SubjectPublicKeyInfo","RelativeDistinguishedName","setof","RDNSequence","seqof","rdnSequence","Validity","Extension","bool","def","TBSCertificate","implicit","X509Certificate","findPrime","ONE","TWO","FIVE","FOUR","_getPrimes","n2","sha224","MD5","$at","iterated","_t","_i","objectKeys","allowHalfOpen","onEndNT","inL","inR","outL","outR","pc2table","sTable","sb","permuteTable","padSplit","isEncoderBuffer","isDecoderBuffer","isCompatible","readUInt8","fail","_reporterState","render","_vm","_self","_l","list","replaceFields","attrs","model","collapseActive","$$v","scopedSlots","_u","$event","stopPropagation","menuClick","_v","proxy","staticClass","staticRenderFns","default","methods","PdfCatalogueMenu","show","computed","hashMode","_finalOrDigest","__final","_decoder","_encoding","inputEnc","outputEnc","outData","_toString","getAuthTag","setAuthTag","setAAD","fin","MontCurve","i4","precompute","aa","bb","diffAdd","da","jumlAdd","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","fastKey","getWeak","onFreeze","meta","NEED","KEY","Algorithm","HmacDRBG","predResist","minEntropy","_reseed","reseedInterval","entropy","entropyEnc","nonce","nonceEnc","pers","persEnc","_hmac","hmac","kmac","reseed","addEnc","generate","incr32","chunkNum","sum32_4","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","T1","T2","EC","hashType","signType","ecSign","dsaSign","curveId","keyFromPrivate","toDER","bits2int","kv","getKey","makeKey","makeR","hlen","hbits","bits2octets","obits","Sha256","Sha224","_f","_g","_h","safeBuffer","randombytes","kBufferMaxLength","kMaxLength","kMaxUint32","assertOffset","assertSize","actualFill","ourBuf","uint","zero2","brorand","Rand","_randbelow","min_bytes","_randrange","rone","rn1","getDivisor","MAX_ALLOC","isEncoding","_normalizeEncoding","retried","normalizeEncoding","nenc","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","utf8CheckByte","byte","utf8CheckIncomplete","utf8CheckExtraBytes","utf8Text","utf8End","ripemd","ripemd160","Sha1","rotl1","bignum","xorTest","calcIv","ck","_finID","toPad","ivBits","writeUIntBE","_ghash","_alen","_authTag","_called","rump","tags","overrided","reverseArgs","useDecoder","_wrap","stateProps","cstate","child","_useArgs","newKey","_decode","wrapResult","prevObj","present","prevKey","enterKey","_peekTag","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","_getUse","leaveObject","exitKey","leaveKey","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","some","_encodeChoice","_encodePrimitive","showDrawer","gData","handleSelect","visible","class","loading","pdf_div_width","margin","pdf_pages","userInfo","phone","watermarkText","currentRate","rate","staticStyle","PDFJS","PdfCatalogue","is_encrypt","expandedKeys","pageArr","placement","pdf_scale","pdf_src","pdf_data","loadingEndSize","mounted","offsetHeight","onClose","scaleD","waitWasm","ReadPdf","that","readPdfData","_loadFile","loadingTask","pdf","getPageIndex","_renderPage","canvas","canvasContext","viewport","loadFinished","PEMEncoder","label","PADDING","equals","padBuff","writeUInt8","tagClass","0","1","2","3","SHA512","SHA384","isView","DERDecoder","PEMDecoder","base64","dP","gOPD","createDesc","propertyKey","existingDescriptor","receiver","ownDesc","throwIfNotStringOrBuffer","HashBase","_block","_blockSize","_blockOffset","_length","_finalized","EDDSA","pointClass","keyFromSecret","hashInt","messagePrefix","s_","makeSignature","keyFromPublic","SG","RplusAh","intFromLE","normed","xIsOdd","_display_utils","addLinkAttributes","getFilenameFromUrl","LinkTarget","loadScript","PDFDateString","RenderingCancelledException","_api","build","getDocument","LoopbackPort","PDFDataRangeTransport","PDFWorker","_annotation_layer","AnnotationLayer","_api_compatibility","apiCompatibilityParams","_worker_options","GlobalWorkerOptions","_text_layer","renderTextLayer","_svg","SVGGraphics","PDFNodeStream","setPDFNetworkStreamFactory","PDFNetworkStream","PDFFetchStream","isFetchSupported","isValidFetchUrl","deprecated","StatTimer","DOMSVGFactory","DOMCMapReaderFactory","BaseCMapReaderFactory","DOMCanvasFactory","BaseCanvasFactory","DEFAULT_LINK_REL","PageViewport","SVG_NS","canvasAndContext","ownerDocument","globalThis","createElement","getContext","isCompressed","_fetchData","baseURI","response","ok","statusText","request","XMLHttpRequest","responseType","onreadystatechange","readyState","DONE","responseText","svg","createElementNS","setAttribute","viewBox","rotation","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","topLeft","bottomRight","applyInverseTransform","SELF","BLANK","PARENT","TOP","rel","enabled","urlNullRemoved","onclick","targetStr","anchor","query","started","times","outBuf","longest","duration","Response","script","onload","documentElement","appendChild","pdfDateStringRegex","matches","year","month","day","hour","universalTimeRelation","offsetHour","offsetMinute","UTC","PDFPageProxy","PDFDocumentProxy","_font_loader","_node_utils","_annotation_storage","_canvas","_metadata","_optional_content_config","_transport_stream","_webgl","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","DefaultCanvasFactory","NodeCanvasFactory","DefaultCMapReaderFactory","NodeCMapReaderFactory","createPDFNetworkStream","pdfNetworkStreamFactory","PDFDocumentLoadingTask","rangeTransport","worker","pdfBytes","CMapReaderFactory","stopAtErrors","pdfBug","disableRange","disableStream","workerParams","workerPort","fromPort","workerIdPromise","_fetchDocument","networkStreamPromise","networkStream","PDFDataTransportStream","initialData","progressiveDone","httpHeaders","withCredentials","workerId","messageHandler","transport","WorkerTransport","_transport","pdfDataRangeTransport","nextDocumentId","onPassword","onUnsupportedFeature","transportDestroyed","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","listener","_pdfInfo","AnnotationStorage","pageNumber","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJavaScript","getOutline","getOptionalContentConfig","getPermissions","getMetadata","downloadInfoCapability","getStats","startCleanup","loadingParams","saveDocument","_pageIndex","_pageInfo","_ownerDocument","_stats","_pdfBug","commonObjs","objs","PDFObjects","cleanupAfterRender","pendingCleanup","_intentStates","annotationsPromise","annotationsIntent","getAnnotations","enableWebGL","imageLayer","canvasFactory","optionalContentConfigPromise","renderingIntent","intentState","streamReaderCancelTimeout","canvasFactoryInstance","webGLContext","WebGLContext","enable","displayReadyCapability","_pumpOperatorList","complete","renderTasks","internalRenderTask","_tryCleanup","_abortOperatorList","timeEnd","InternalRenderTask","useRequestAnimationFrame","renderTask","optionalContentConfig","initializeGraphics","operatorListChanged","opListReadCapability","opListTask","disableCombineTextItems","TEXT_CONTENT_CHUNK_SIZE","streamTextContent","pageCache","force","completed","resetStats","operatorListChunk","streamReader","_renderPageChunk","curIntentState","defer","_listeners","_defer","_deferred","cloneValue","cloned","transferable","desc","WeakMap","PDFWorkerClosure","pdfWorkerPorts","isWorkerDisabled","fallbackWorkerSrc","nextFakeWorkerId","fakeWorkerCapability","pdfjsFilePath","currentScript","getWorkerSrc","workerSrc","getMainThreadWorkerMessageHandler","mainWorkerMessageHandler","setupFakeWorkerGlobal","loader","eval","createCDNWrapper","wrapper","_port","_webWorker","_messageHandler","_initializeFromPort","_initialize","Worker","terminateEarly","onWorkerError","_setupFakeWorker","sendTest","testObj","workerHandler","fontLoader","FontLoader","_onUnsupportedFeature","_params","cMapUrl","cMapPacked","destroyCapability","_passwordCapability","_networkStream","_fullReader","_lastProgress","pagePromises","setupMessageHandler","evt","readyReason","headersCapability","fullReader","_numPages","exception","_startRenderPage","exportedData","exportedError","fontRegistry","FontInspector","fontAdded","FontFaceObject","finally","pageProxy","MAX_IMAGE_SIZE_TO_STORE","fetched","resetModified","results","OptionalContentConfig","Metadata","contentDispositionFilename","cleanupSuccessful","_objs","resolved","_ensureObj","RenderTask","_internalRenderTask","onContinue","canvasInRendering","WeakSet","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","StepperManager","stepper","nextBreakPoint","getNextBreakPoint","gfx","CanvasGraphics","beginDrawing","endDrawing","updateOperatorList","requestAnimationFrame","executeOperatorList","BaseFontLoader","nativeFontFaces","styleElement","nativeFontFace","fonts","rule","getElementsByTagName","styleSheet","sheet","insertRule","cssRules","attached","isFontLoadingAPISupported","createNativeFontFace","addNativeFontFace","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","supported","rules","fontsToLoad","loadingContext","requests","nextRequestId","loadTestFontId","userAgent","completeRequest","otherRequest","getLoadTestFont","atob","spliceString","insert","chunk1","chunk2","isFontReady","fillText","getImageData","_loadTestFont","COMMENT_OFFSET","CFF_CHECKSUM_OFFSET","XXXX_VALUE","btoa","visibility","span","removeChild","translatedData","FontFace","registerFont","Canvas","createCanvas","readFile","_storage","_modified","onSetModified","onResetModified","_setModified","fromEntries","compatibilityParams","_pattern_helper","MIN_FONT_SIZE","MAX_FONT_SIZE","MAX_GROUP_SIZE","MIN_WIDTH_FACTOR","COMPILE_TYPE3_GLYPHS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","addContextCurrentTransform","mozCurrentTransform","_originalSave","_originalRestore","_originalRotate","_originalScale","_originalTranslate","translate","_originalTransform","_originalSetTransform","setTransform","_transformMatrix","_transformStack","ad_bc","bc_ad","cosValue","sinValue","CachedCanvases","getCanvas","trackTransform","canvasEntry","compileType3Glyph","POINT_TO_PROCESS_LIMIT","width1","POINT_TYPES","lineSize","data0","elem","steps","outlines","pp","drawOutline","beginPath","CanvasExtraState","alphaIsShape","fontSizeScale","textMatrixScale","lineX","lineY","fillColor","strokeColor","patternFill","fillAlpha","strokeAlpha","lineWidth","activeSMask","resumeSMaskCtx","setCurrentPoint","EXECUTION_TIME","EXECUTION_STEPS","canvasCtx","pendingClip","pendingEOFill","groupStack","processingType3","baseTransform","baseTransformStack","groupLevel","smaskStack","smaskCounter","tempSMask","contentVisible","markedContentStack","cachedCanvases","_cachedGetSinglePixelWidth","putBinaryImageData","ImageData","putImageData","thisChunkHeight","elemsInThisChunk","partialChunkHeight","fullChunks","totalChunks","chunkImgData","srcPos","transferMapRed","transferMapGreen","transferMapBlue","transferMapGray","srcLength","dest32","dest32DataLength","fullSrcDiff","white","srcDiff","kEnd","kEndUnrolled","srcByte","hasTransferMaps","putBinaryImageMask","copyCtxState","sourceCtx","destCtx","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","strokeStyle","fillStyle","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","composeSMaskBackdrop","g0","alpha_","composeSMaskAlpha","layerData","composeSMaskLuminosity","genericComposeSMask","maskCtx","layerCtx","composeFn","hasBackdrop","PIXELS_TO_PROCESS","chunkHeight","composeSMask","isEnabled","composed","layer","drawImage","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","fillRect","transparentCanvas","compositeCtx","beginLayout","executionStartIdx","continueCallback","argsArrayLen","fnId","chunkOperations","breakIt","depObjId","objsPool","endSMaskGroup","endLayout","dashPhase","flatness","states","suspendSMaskGroup","beginSMaskGroup","drawnWidth","drawnHeight","cacheId","scratchCanvas","currentCtx","currentTransform","groupCtx","startTransformInverse","mozCurrentTransformInverse","deltaTransform","clearRect","resumeSMaskGroup","ops","getSinglePixelWidth","xw","yh","consumePath","isPatternFill","needRestore","paths","pendingTextPaths","addToPath","spacing","fontRefName","fontObj","fontDirection","typeface","browserFontSize","rise","patternTransform","fillStrokeMode","getPathGenerator","strokeText","showType3Text","glyphsLength","spacingDir","widthAdvanceScale","simpleFillText","scaledX","scaledY","scaledAccentX","scaledAccentY","vx","vy","restoreNeeded","measuredWidth","measureText","isFontSubpixelAAEnabled","characterScaleX","paintChar","spacingLength","isTextInvisible","transformed","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","canvasGraphicsFactory","createCanvasGraphics","TilingPattern","getShadingPatternFromIR","br","ul","ur","canvasBounds","imageSmoothingEnabled","mozImageSmoothingEnabled","maskCanvas","skewX","skewY","imgToPaint","tmpCanvas","widthScale","heightScale","HTMLElement","tmpCtx","paintWidth","paintHeight","tmpCanvasId","newWidth","newHeight","getCanvasPosition","appendImage","isVisible","isContentVisible","inverse","ShadingIRs","applyBoundingBox","Path2D","grad","createLinearGradient","createRadialGradient","addColorStop","createMeshCanvas","drawTriangle","x3","car","cag","cab","cbr","cbg","cbb","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","x1_","x2_","drawFigure","cols","combinesScale","backgroundColor","EXPECTED_SCALE","MAX_PATTERN_SIZE","BORDER_SIZE","boundsWidth","boundsHeight","paddedWidth","paddedHeight","drawFigures","shadingIR","owner","matrixScale","temporaryPatternCanvas","createPattern","PaintType","COLORED","UNCOLORED","createPatternCanvas","curMatrixScale","combinedScale","dimx","getSizeAndScale","dimy","graphics","setFillAndStrokeStyleToContext","clipBbox","realOutputSize","maxSize","bboxWidth","bboxHeight","_xml_parser","_repair","SimpleXMLParser","xmlDocument","parseFromString","_metadataMap","rdf","nodeName","firstChild","nextSibling","hasChildNodes","childNodes","trim","XMLParserErrorCode","NoError","EndOfDocument","UnterminatedCdat","UnterminatedXmlDeclaration","UnterminatedDoctypeDeclaration","UnterminatedComment","MalformedElement","OutOfMemory","UnterminatedAttributeValue","UnterminatedElement","ElementNeverBegun","isWhitespace","isWhitespaceString","XMLParserBase","onResolveEntity","attributes","skipWs","attrName","attrValue","attrEndChar","attrEndIndex","_resolveEntities","parsed","attrStart","ch2","onError","onEndElement","_parseProcessingInstruction","onPi","onComment","onCdata","complexDoctype","doctypeContent","onDoctype","_parseContent","onBeginElement","onText","SimpleDOMNode","nodeValue","parentNode","_currentFragment","_stack","_errorCode","parseXml","lastElement","OptionalContentGroup","_order","_groups","_queuedChunks","_progressiveDone","_pdfDataRangeTransport","_rangeReaders","addRangeListener","_onReceiveData","addProgressListener","_onProgress","addProgressiveReadListener","addProgressiveDoneListener","_onProgressiveDone","transportReady","_enqueue","_begin","_loaded","firstReader","queuedChunks","PDFDataTransportStreamReader","_progressiveDataLength","PDFDataTransportStreamRangeReader","requestDataRange","_done","_requests","requestCapability","_end","_queuedChunk","requestsCapability","_removeRangeReader","_enabled","WebGLUtils","tryInitGL","loadShader","shaderType","shader","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","errorMsg","getShaderInfoLog","createVertexShader","VERTEX_SHADER","createFragmentShader","FRAGMENT_SHADER","createProgram","shaders","attachShader","linkProgram","linked","getProgramParameter","LINK_STATUS","getProgramInfoLog","createTexture","textureId","activeTexture","texture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MIN_FILTER","NEAREST","TEXTURE_MAG_FILTER","texImage2D","RGBA","UNSIGNED_BYTE","currentGL","currentCanvas","generateGL","premultipliedalpha","smaskVertexShaderCode","smaskFragmentShaderCode","smaskCache","initSmaskGL","vertexShader","fragmentShader","useProgram","resolutionLocation","getUniformLocation","positionLocation","getAttribLocation","backdropLocation","subtypeLocation","texCoordLocation","texLayerLocation","texMaskLocation","texCoordBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","enableVertexAttribArray","vertexAttribPointer","FLOAT","uniform1i","drawingBufferWidth","drawingBufferHeight","uniform2f","uniform4f","TEXTURE0","maskTexture","TEXTURE1","clearColor","BLEND","blendFunc","ONE_MINUS_SRC_ALPHA","COLOR_BUFFER_BIT","drawArrays","TRIANGLES","deleteTexture","deleteBuffer","figuresVertexShaderCode","figuresFragmentShaderCode","figuresCache","initFiguresGL","scaleLocation","offsetLocation","colorLocation","coordsMap","colorsMap","pIndex","cIndex","coordsBuffer","colorsBuffer","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","TextWidgetAnnotationElement","RadioButtonWidgetAnnotationElement","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","isRenderable","ignoreBorder","linkService","downloadManager","imageResourcesPath","svgFactory","container","_createContainer","transformOrigin","borderWidth","horizontalRadius","verticalRadius","borderRadius","borderBottomStyle","borderColor","trigger","popupElement","PopupElement","hideWrapper","popup","className","externalLinkTarget","externalLinkRel","externalLinkEnabled","_bindNamedAction","_bindLink","destination","getDestinationHash","navigateTo","getAnchorUrl","executeNamedAction","dataset","l10nId","l10nArgs","_createPopup","TEXT_ALIGNMENT","storage","getOrCreateValue","setValue","disabled","maxLength","fieldWidth","classList","letterSpacing","verticalAlign","display","_setTextStyle","textAlign","direction","fontWeight","fontStyle","radio","getElementsByName","getAttribute","selectElement","multiple","optionElement","selectedIndex","IGNORE_TYPES","selector","parentElement","querySelector","parentLeft","parentWidth","pinned","BACKGROUND_ENLIGHT","hideElement","dateObject","toDateObject","toLocaleDateString","toLocaleTimeString","_formatContents","_toggle","_show","_hide","createTextNode","pin","hasAttribute","removeAttribute","zIndex","unpin","append","square","containerClassName","svgElementName","coordinate","polyline","inkList","eventBus","dispatch","_download","downloadData","sortedAnnotations","popupAnnotations","MAX_TEXT_DIVS_TO_RENDER","NonWhitespaceRegexp","isAllWhitespace","appendText","geom","textDiv","textDivProperties","canvasWidth","paddingBottom","paddingLeft","paddingRight","paddingTop","_textDivs","_textDivProperties","_viewport","atan2","fontHeight","fontAscent","_fontInspectorEnabled","shouldScaleText","absScaleX","absScaleY","_textContentStream","_layoutText","_enhanceTextSelection","angleCos","angleSin","divWidth","divHeight","_bounds","_canceled","textDivs","textDivsLength","_renderingDone","findPositiveMin","expanded","expandBounds","divProperties","boxScale","boxes","x1New","x2New","expandBoundsLTR","fakeBoundary","horizon","boundary","horizonPart","affectedBoundary","maxXNew","xNew","changedHorizon","lastBoundary","useBoundary","used","TextLayerRenderTask","textContentStream","textContentItemsStr","enhanceTextSelection","_textContent","_container","_textContentItemsStr","_layoutTextLastFontSize","_layoutTextLastFontFamily","_layoutTextCtx","_renderTimer","renderParameters","_render","timeout","styleCache","mozOpaque","textItems","textStyles","_processItems","expandTextDivs","expandDivs","transformBuf","paddingBuf","divProps","SVG_DEFAULTS","XML_NS","XLINK_NS","convertImgDataToPng","PNG_HEADER","CHUNK_WRAPPER_SIZE","crcTable","crc32","crc","writePngChunk","adler32","deflateSync","literals","deflateSyncUncompressed","maxBlockLength","deflateBlocks","idat","adler","bitDepth","colorType","offsetLiterals","offsetBytes","ihdr","pngLength","SVGExtraState","activeClipUrl","clipGroup","maskId","opListToTree","opTree","opListElement","pf","pm","acos","clipCount","maskCount","shadingCount","transformMatrix","transformStack","extraStack","embedFonts","embeddedFonts","cssStyle","_operatorIdMapping","tgrp","executeOpTree","svgElement","loadDependencies","convertOpList","operatorIdMapping","opTreeElement","lineMatrix","xcoords","ycoords","tspan","setAttributeNS","txtElement","txtgrp","lineWidthScale","_setStrokeAttributes","_ensureTransformGroup","defs","addFontStyle","_makeColorN_Pattern","inverseTransform","_makeShadingPattern","_makeTilingPattern","tilingId","xscale","yscale","txstep","tystep","tiling","shadingId","point0","point1","focalPoint","circlePoint","focalRadius","circleRadius","colorStop","getAttributeNS","clipId","clipPath","clipElement","cloneNode","setStrokeAlpha","setFillAlpha","imgSrc","cliprect","imgEl","definitions","rootGroup","_ensureClipGroup","_network_utils","http","https","fileUriRegex","parseUrl","sourceUrl","parsedUrl","host","isHttp","isFsUrl","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","_url","_storedError","_disableRange","_rangeChunkSize","_readableStream","_readCapability","_headersCapability","_error","BaseRangeReader","createRequestOptions","headers","auth","handleResponse","statusCode","_setReadableStream","getResponseHeader","allowRangeRequests","validateRangeRequestCapabilities","extractFilenameFromHeader","_request","_httpHeaders","Range","createReadStream","createResponseStatusError","validateResponseStatus","_content_disposition","returnValues","contentEncoding","contentDisposition","getFilenameFromContentDispositionHeader","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","textdecode","fatal","contentDispositionStr","quot","part","quotindex","extvalue","encodingend","langvalue","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","getArrayBuffer","xhr","NetworkManager","getXhr","currXhrId","xhrId","pendingRequest","setRequestHeader","expectedStatus","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","ok_response_on_range_request","rangeHeader","_source","_manager","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","_onRangeRequestReaderClosed","_onHeadersReceived","_onDone","_onError","_fullRequestId","requestFull","_headersReceivedCapability","_cachedChunks","fullRequestXhrId","fullRequestXhr","getRequestXhr","abortRequest","lengthComputable","isPendingRequest","_requestId","_close","createFetchOptions","abortController","signal","credentials","redirect","createHeaders","Headers","PDFFetchStreamReader","PDFFetchStreamRangeReader","_withCredentials","AbortController","_abortController","_headers","aesModes","desModes","keyLen","ivLen","arg3","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","_sent","dispatchException","abrupt","methodName","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","displayName","isGeneratorFunction","genFun","mark","__proto__","awrap","skipTempReset","rootEntry","rootRecord","rval","handle","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","ecVerify","dsaVerify","padNum","pubkey","unpacked","checkValue","montp","_inheritsLoose","subClass","superClass","createErrorType","getMessage","NodeError","_Base","oneOf","expected","endsWith","this_len","actual","determiner","pVersionMajor","blind","getr","blinder","unblinder","prime1","prime2","blinds","blinded","qinv","exponent1","exponent2","rotr32","p32","ERR_MISSING_ARGS","destroyer","closed","popCallback","destroys","mLen","hLen2","dblen","nonZero","cur","publicKey","readableHwm","readableHighWaterMark","defaultHwm","needMoreData","fromListPartial","copyFromBufferString","copyFromBuffer","increasedAwaitDrain","EVP_BytesToKey","keyBits","keyStart","ivStart","TYPE","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","ch64_hi","yl","zh","ch64_lo","zl","maj64_hi","maj64_lo","s0_512_hi","c0_hi","c1_hi","c2_hi","s0_512_lo","c0_lo","c1_lo","c2_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c3_hi","c3_lo","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","ARRAY16","zr","sl","sr","hr","rotl","fn1","fn2","fn3","fn4","fn5","readInt32LE","ar","dr","tl","writeUInt32LE","writeInt32LE","finalSize","_finalSize","accum","assigned","lowBits","highBits","algorithms","_hashType","_tag","_signType","_importDER","recoveryParam","Position","place","getLength","initial","octetLen","rmPadding","constructLength","octets","LN2","slen","backHalf","trace","localStorage","Sha384","nh","keyPair","fromPrivate","genKeyPair","drbg","ns2","_truncateToN","truncOnly","bkey","getPrivate","ns1","kp","kpX","canonical","sinv","_maxwellTrick","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Qprime","copyWithin","inc","modeModules","ECB","CFB","CFB8","CFB1","OFB","CTR","GCM","_importPrivate","privEnc","_importPublic","pubEnc","compact","derive","sum32_3","Kh","Ah","Bh","Dh","Eh","rh","redefineAll","anInstance","forOf","$iterDefine","setSpecies","DESCRIPTORS","SIZE","getConstructor","NAME","IS_MAP","ADDER","callbackfn","setStrong","_k","isSurrogatePair","htonl","zero8","join32","safer","Safer","kStringMaxLength","binding","MAX_LENGTH","MAX_STRING_LENGTH","derDecodeTag","oct","tagStr","derDecodeLen","decodedTag","_skipUntilEnd","possibleEnd","readUInt16BE","numstr","printstr","identifiers","subident","mon","_getDecoder","errors","ReporterError","rethrow","pathLen","inherited","partial","captureStackTrace","EE","_isStdio","didOnEnd","asyncWrite","writableHwm","writableHighWaterMark","watermark","setWatermark","getElementById","childelement","containerWidth","offsetWidth","containerHeight","can","cans","textBaseline","pointerEvents","toDataURL","setInterval","onresize","originalModule","webpackPolyfill","rApply","fApply","thisArgument","argumentsList","rmd160","saltLen","getDigest","ipad1","ipad2","shaFunc","rmd160Func","DK","block1","redefine","$iterDetect","setToStringTag","inheritIfRequired","IS_WEAK","fixMethod","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","ECDH","aliases","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","p256","secp256r1","secp192r1","p384","p521","inenc","otherPub","getNAF","getJSF","BaseCurve","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","_getDoubles","nafW","repr","nafPoints","_getNAFPoints","defW","wndWidth","jsf","ja","jb","encodeCompressed","power","LIBRARY","$typed","$buffer","propertyDesc","toIndex","toPrimitive","classof","isArrayIter","gOPN","getIterFn","wks","createArrayMethod","createArrayIncludes","speciesConstructor","ArrayIterators","Iterators","arrayFill","arrayCopyWithin","$DP","$GOPD","SHARED_BUFFER","BYTES_PER_ELEMENT","PROTOTYPE","ArrayProto","$ArrayBuffer","$DataView","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayFind","arrayFindIndex","arrayIncludes","arrayIndexOf","arrayValues","arrayKeys","arrayEntries","arrayLastIndexOf","arrayReduce","arrayReduceRight","reduceRight","arrayJoin","arraySort","arraySlice","arrayToString","arrayToLocaleString","toLocaleString","ITERATOR","TAG","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","TYPED_ARRAY","WRONG_LENGTH","$map","LITTLE_ENDIAN","FORCED_SET","toOffset","BYTES","speciesFromList","addGetter","internal","$from","mapfn","iterFn","$of","TO_LOCALE_BUG","$toLocaleString","predicate","findIndex","searchElement","separator","middle","$begin","$slice","$set","arrayLike","$iterators","isTAIndex","$getDesc","$setDesc","$TypedArrayPrototype$","CLAMPED","GETTER","SETTER","TypedArray","TAC","FORCED","TypedArrayPrototype","setter","addElement","$offset","$length","klass","$len","$nativeIterator","CORRECT_ITER_NAME","$iterator","of","DATA_VIEW","WRONG_INDEX","BaseBuffer","BUFFER","BYTE_LENGTH","BYTE_OFFSET","$BUFFER","$LENGTH","$OFFSET","packIEEE754","nBytes","eLen","eMax","eBias","unpackIEEE754","nBits","unpackI32","packI8","packI16","packI32","packF64","packF32","numIndex","intIndex","store","pack","conversion","ArrayBufferProto","$setInt8","setInt8","getInt8","getUint8","getInt16","getFloat32","setInt16","setUint16","setFloat32","pending","pendingTotal","_delta8","_delta32","descriptors","formatRegExp","noDeprecation","throwDeprecation","traceDeprecation","debugEnviron","debugs","seen","stylize","stylizeNoColor","showHidden","_extend","stylizeWithColor","formatValue","styleType","arrayToHash","idx","recurseTimes","formatPrimitive","visibleKeys","getOwnPropertyNames","formatError","braces","toUTCString","formatArray","formatProperty","reduceToSingleString","simple","numLinesEst","NODE_DEBUG","months","timestamp","getHours","getMinutes","getSeconds","getDate","getMonth","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","callbackify","original","callbackified","maybeCb","rej","promisify","promiseResolve","promiseReject","api","Entity","_createNamed","Generated","_initNamed","factories","partArgs","minAssert","minUtils","m8","m14","m24","computer","strong","MAP","i2ops","fnF","fnG","fnH","fnI","ReflectOwnKeys","ReflectApply","ProcessEmitWarning","warning","NumberIsNaN","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","prepend","events","existing","newListener","onceWrapper","fired","wrapFn","_onceWrap","wrapped","unwrap","evlistener","unwrapListeners","arrayClone","spliceOne","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","wrapListener","setMaxListeners","getMaxListeners","doError","prependOnceListener","originalListener","rawListeners","eventNames","deciphers","_rand"],"mappings":"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EACNb,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAINW,IAAK,CACHtuB,IAAK,EACL2tB,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,C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EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAEnxB,SAASC,EAAW5nC,GAClB,OAAIA,GAAM,IAAQA,GAAM,GACV,GAALA,EAGLA,GAAM,IAAQA,GAAM,IAAQA,GAAM,IAAQA,GAAM,IAC7B,GAAR,GAALA,IAGF,EAGV,MAAM2gC,EACJ,YAAYt6D,EAAQi+D,EAAgB,MAClCrrF,KAAKotB,OAASA,EACdptB,KAAKktF,WACLltF,KAAK6lE,OAAS,GACd7lE,KAAKqrF,cAAgBA,EACrBrrF,KAAK4uF,kBAAoB,EACzB5uF,KAAKosF,qBAAuB,EAG9B,WACE,OAAOpsF,KAAK6uF,YAAc7uF,KAAKotB,OAAO8gD,UAGxC,WACE,OAAOluE,KAAKotB,OAAOq+D,WAGrB,YACE,IAAI1kC,EAAK/mD,KAAK6uF,YACVC,GAAY,EACZC,EAAW,EACX3zD,EAAO,EAcX,GAZW,KAAP2rB,GACF3rB,GAAQ,EACR2rB,EAAK/mD,KAAKktF,WAEC,KAAPnmC,IACFA,EAAK/mD,KAAKktF,aAEI,KAAPnmC,IACT3rB,EAAO,EACP2rB,EAAK/mD,KAAKktF,YAGD,KAAPnmC,GAAsB,KAAPA,EACjB,GACEA,EAAK/mD,KAAKktF,iBACI,KAAPnmC,GAAsB,KAAPA,GAQ1B,GALW,KAAPA,IACFgoC,EAAW,GACXhoC,EAAK/mD,KAAKktF,YAGRnmC,EAAK,IAAQA,EAAK,GAAM,CAC1B,GAAiB,KAAbgoC,GAA4B,IAAT3zD,KAAe,EAAI4vB,EAAYmmB,cAAcpqB,KAAe,IAARA,GAEzE,OADA,EAAI0D,EAAMxpC,MAAM,8DACT,EAGT,MAAM,IAAIwpC,EAAMmL,YAAY,mBAAmBtwC,OAAOsgD,aAAa7e,gBAAiBA,MAGtF3rB,EAAOA,GAAQ,EACf,IAAI4zD,EAAYjoC,EAAK,GACjBkoC,EAAa,EACbC,EAAiB,EAErB,OAAQnoC,EAAK/mD,KAAKktF,aAAe,EAC/B,GAAInmC,GAAM,IAAQA,GAAM,GAAM,CAC5B,MAAMooC,EAAepoC,EAAK,GAEtB+nC,EACFG,EAA0B,GAAbA,EAAkBE,GAEd,IAAbJ,IACFA,GAAY,IAGdC,EAAwB,GAAZA,EAAiBG,QAE1B,GAAW,KAAPpoC,EAAa,CACtB,GAAiB,IAAbgoC,EAGF,MAFAA,EAAW,OAIR,GAAW,KAAPhoC,GACT,EAAI0D,EAAMxpC,MAAM,wDACX,IAAW,KAAP8lC,GAAsB,MAAPA,EAYxB,MATA,GAFAA,EAAK/mD,KAAKovF,WAEC,KAAProC,GAAsB,KAAPA,EACjBmoC,EAAwB,KAAPnoC,GAAe,EAAI,EACpC/mD,KAAKktF,gBACA,GAAInmC,EAAK,IAAQA,EAAK,GAC3B,MAGF+nC,GAAY,EAchB,OARiB,IAAbC,IACFC,GAAaD,GAGXD,IACFE,GAAa,KAAOE,EAAiBD,IAGhC7zD,EAAO4zD,EAGhB,YACE,IAAIK,EAAW,EACXliE,GAAO,EACX,MAAM04C,EAAS7lE,KAAK6lE,OACpBA,EAAO1lE,OAAS,EAChB,IAAI4mD,EAAK/mD,KAAKktF,WAEd,MAAO,EAAM,CACX,IAAIoC,GAAe,EAEnB,OAAa,EAALvoC,GACN,KAAM,GACJ,EAAI0D,EAAMxpC,MAAM,uBAChBkM,GAAO,EACP,MAEF,KAAK,KACDkiE,EACFxpB,EAAOlhD,KAAK,KACZ,MAEF,KAAK,GACgB,MAAb0qE,GACJrvF,KAAKktF,WACL//D,GAAO,GAEP04C,EAAOlhD,KAAK,KAGd,MAEF,KAAK,GAGH,OAFAoiC,EAAK/mD,KAAKktF,WAEFnmC,GACN,KAAM,GACJ,EAAI0D,EAAMxpC,MAAM,uBAChBkM,GAAO,EACP,MAEF,KAAK,IACH04C,EAAOlhD,KAAK,MACZ,MAEF,KAAK,IACHkhD,EAAOlhD,KAAK,MACZ,MAEF,KAAK,IACHkhD,EAAOlhD,KAAK,MACZ,MAEF,KAAK,GACHkhD,EAAOlhD,KAAK,MACZ,MAEF,KAAK,IACHkhD,EAAOlhD,KAAK,MACZ,MAEF,KAAK,GACL,KAAK,GACL,KAAK,GACHkhD,EAAOlhD,KAAKW,OAAOsgD,aAAa7e,IAChC,MAEF,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACH,IAAIh5C,EAAS,GAALg5C,EACRA,EAAK/mD,KAAKktF,WACVoC,GAAe,EAEXvoC,GAAM,IAAQA,GAAM,KACtBh5C,GAAKA,GAAK,IAAW,GAALg5C,GAChBA,EAAK/mD,KAAKktF,WAENnmC,GAAM,IAAQA,GAAM,KACtBuoC,GAAe,EACfvhF,GAAKA,GAAK,IAAW,GAALg5C,KAIpB8e,EAAOlhD,KAAKW,OAAOsgD,aAAa73D,IAChC,MAEF,KAAK,GACqB,KAApB/N,KAAKovF,YACPpvF,KAAKktF,WAGP,MAEF,KAAK,GACH,MAEF,QACErnB,EAAOlhD,KAAKW,OAAOsgD,aAAa7e,IAChC,MAGJ,MAEF,QACE8e,EAAOlhD,KAAKW,OAAOsgD,aAAa7e,IAChC,MAGJ,GAAI55B,EACF,MAGGmiE,IACHvoC,EAAK/mD,KAAKktF,YAId,OAAOrnB,EAAO5pC,KAAK,IAGrB,UACE,IAAI8qB,EAAIwoC,EACR,MAAM1pB,EAAS7lE,KAAK6lE,OACpBA,EAAO1lE,OAAS,EAEhB,OAAQ4mD,EAAK/mD,KAAKktF,aAAe,IAAMwB,EAAa3nC,GAClD,GAAW,KAAPA,EAAa,CAGf,GAFAA,EAAK/mD,KAAKktF,WAENwB,EAAa3nC,GAAK,EACpB,EAAI0D,EAAMxpC,MAAM,8EAChB4kD,EAAOlhD,KAAK,KACZ,MAGF,MAAM5W,EAAI4gF,EAAW5nC,GAErB,IAAW,IAAPh5C,EAAU,CACZwhF,EAAaxoC,EACbA,EAAK/mD,KAAKktF,WACV,MAAM14E,EAAKm6E,EAAW5nC,GAEtB,IAAY,IAARvyC,EAAW,CAIb,IAHA,EAAIi2C,EAAMxpC,MAAM,iCAAiCqE,OAAOsgD,aAAa7e,8BACrE8e,EAAOlhD,KAAK,IAAKW,OAAOsgD,aAAa2pB,IAEjCb,EAAa3nC,GACf,MAGF8e,EAAOlhD,KAAKW,OAAOsgD,aAAa7e,IAChC,SAGF8e,EAAOlhD,KAAKW,OAAOsgD,aAAa73D,GAAK,EAAIyG,SAEzCqxD,EAAOlhD,KAAK,IAAKW,OAAOsgD,aAAa7e,SAGvC8e,EAAOlhD,KAAKW,OAAOsgD,aAAa7e,IAQpC,OAJI8e,EAAO1lE,OAAS,MAClB,EAAIsqD,EAAMxpC,MAAM,kDAAkD4kD,EAAO1lE,QAGpEuqD,EAAY+e,KAAK1mD,IAAI8iD,EAAO5pC,KAAK,KAG1C,eAAe8qB,GACb,MAAMyoC,EAA0B,EAE5BxvF,KAAK4uF,sBAAwBY,EAK7BxvF,KAAK4uF,kBAAoBY,IAI7B,EAAI/kC,EAAMxpC,MAAM,8CAA8C8lC,IAR5D,EAAI0D,EAAMxpC,MAAM,0DAWpB,eACE,MAAM4kD,EAAS7lE,KAAK6lE,OACpBA,EAAO1lE,OAAS,EAChB,IAEIsvF,EAAYC,EAFZ3oC,EAAK/mD,KAAK6uF,YACVc,GAAa,EAEjB3vF,KAAK4uF,kBAAoB,EAEzB,MAAO,EAAM,CACX,GAAI7nC,EAAK,EAAG,EACV,EAAI0D,EAAMxpC,MAAM,2BAChB,MACK,GAAW,KAAP8lC,EAAa,CACtB/mD,KAAKktF,WACL,MACK,GAAyB,IAArBwB,EAAa3nC,GAAjB,CAIL,GAAI4oC,GAGF,GAFAF,EAAad,EAAW5nC,IAEJ,IAAhB0oC,EAAmB,CACrBzvF,KAAK4vF,eAAe7oC,GAEpBA,EAAK/mD,KAAKktF,WACV,cAEG,CAGL,GAFAwC,EAAcf,EAAW5nC,IAEJ,IAAjB2oC,EAAoB,CACtB1vF,KAAK4vF,eAAe7oC,GAEpBA,EAAK/mD,KAAKktF,WACV,SAGFrnB,EAAOlhD,KAAKW,OAAOsgD,aAAa6pB,GAAc,EAAIC,IAGpDC,GAAcA,EACd5oC,EAAK/mD,KAAKktF,gBA1BVnmC,EAAK/mD,KAAKktF,WA8Bd,OAAOrnB,EAAO5pC,KAAK,IAGrB,SACE,IAAI4zD,GAAU,EACV9oC,EAAK/mD,KAAK6uF,YAEd,MAAO,EAAM,CACX,GAAI9nC,EAAK,EACP,OAAO2D,EAAYkf,IAGrB,GAAIimB,EACS,KAAP9oC,GAAsB,KAAPA,IACjB8oC,GAAU,QAEP,GAAW,KAAP9oC,EACT8oC,GAAU,OACL,GAAyB,IAArBnB,EAAa3nC,GACtB,MAGFA,EAAK/mD,KAAKktF,WAGZ,OAAa,EAALnmC,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACH,OAAO/mD,KAAK8vF,YAEd,KAAK,GACH,OAAO9vF,KAAK+vF,YAEd,KAAK,GACH,OAAO/vF,KAAKgwF,UAEd,KAAK,GAEH,OADAhwF,KAAKktF,WACExiC,EAAYif,IAAI5mD,IAAI,KAE7B,KAAK,GAEH,OADA/iB,KAAKktF,WACExiC,EAAYif,IAAI5mD,IAAI,KAE7B,KAAK,GAGH,OAFAgkC,EAAK/mD,KAAKktF,WAEC,KAAPnmC,GACF/mD,KAAKktF,WACExiC,EAAYif,IAAI5mD,IAAI,OAGtB/iB,KAAKiwF,eAEd,KAAK,GAGH,OAFAlpC,EAAK/mD,KAAKktF,WAEC,KAAPnmC,GACF/mD,KAAKktF,WACExiC,EAAYif,IAAI5mD,IAAI,OAGtB2nC,EAAYif,IAAI5mD,IAAI,KAE7B,KAAK,IAEH,OADA/iB,KAAKktF,WACExiC,EAAYif,IAAI5mD,IAAI,KAE7B,KAAK,IAEH,OADA/iB,KAAKktF,WACExiC,EAAYif,IAAI5mD,IAAI,KAE7B,KAAK,GAEH,MADA/iB,KAAKktF,WACC,IAAIziC,EAAMmL,YAAY,sBAAsB7O,GAGtD,IAAI5lD,EAAMmkB,OAAOsgD,aAAa7e,GAC9B,MAAMskC,EAAgBrrF,KAAKqrF,cAC3B,IAAI6E,EAAoB7E,QAAwC3sF,IAAvB2sF,EAAclqF,GAEvD,OAAQ4lD,EAAK/mD,KAAKktF,aAAe,IAAMwB,EAAa3nC,GAAK,CACvD,MAAMopC,EAAkBhvF,EAAMmkB,OAAOsgD,aAAa7e,GAElD,GAAImpC,QAAwDxxF,IAAnC2sF,EAAc8E,GACrC,MAGF,GAAmB,MAAfhvF,EAAIhB,OACN,MAAM,IAAIsqD,EAAMmL,YAAY,2BAA2Bz0D,EAAIhB,QAG7DgB,EAAMgvF,EACND,EAAoB7E,QAAwC3sF,IAAvB2sF,EAAclqF,GAGrD,MAAY,SAARA,GAIQ,UAARA,IAIQ,SAARA,EACK,MAGG,OAARA,IACFnB,KAAKosF,oBAAsBpsF,KAAKotB,OAAO64C,KAGlCvb,EAAYif,IAAI5mD,IAAI5hB,KAG7B,UACE,MAAMqjF,EAAYxkF,KAAKotB,OAAO64C,IACxB4oB,EAAc7uF,KAAK6uF,YACnBzC,EAAsBpsF,KAAKosF,oBACjC,IAAId,EAEJ,IACEA,EAAUtrF,KAAK+kF,SACf,MAAOp3B,GACP,GAAIA,aAAc3C,EAAYiiB,qBAC5B,MAAMtf,GAGR,EAAIlD,EAAMxpC,MAAM,YAAY0sC,GAM9B,OAHA3tD,KAAKotB,OAAO64C,IAAMue,EAClBxkF,KAAK6uF,YAAcA,EACnB7uF,KAAKosF,oBAAsBA,EACpBd,EAGT,iBACE,IAAIvkC,EAAK/mD,KAAK6uF,YAEd,MAAO9nC,GAAM,EAAG,CACd,GAAW,KAAPA,EAAa,CACfA,EAAK/mD,KAAKktF,WAEC,KAAPnmC,GACF/mD,KAAKktF,WAGP,MACK,GAAW,KAAPnmC,EAAa,CACtB/mD,KAAKktF,WACL,MAGFnmC,EAAK/mD,KAAKktF,aAMhBtuF,EAAQ8oF,MAAQA,EAEhB,MAAMxQ,EACJ,cAAc9pD,GACZ,SAASgjE,EAAOC,EAAS/4E,EAAMg5E,GAAiB,GAC9C,MAAM97D,EAAM67D,EAAQttE,IAAIzL,GAExB,GAAIg/B,OAAOuuB,UAAUrwC,KAAS87D,EAAiB97D,GAAO,EAAIA,EAAM,GAC9D,OAAOA,EAGT,MAAM,IAAIr1B,MAAM,QAAQmY,4DAG1B,SAASi5E,EAASF,GAChB,MAAMG,EAAQH,EAAQttE,IAAI,KAC1B,IAAI0tE,EAEJ,GAAI7uF,MAAMC,QAAQ2uF,KAA4C,KAAhCC,EAAcD,EAAMrwF,SAAiC,IAAhBswF,GAAoB,CACrF,IAAK,IAAI7vF,EAAQ,EAAGA,EAAQ6vF,EAAa7vF,IAAS,CAChD,MAAM2Q,EAAOi/E,EAAM5vF,GAEnB,KAAM01C,OAAOuuB,UAAUtzD,IAASA,EAAO,GACrC,MAAM,IAAIpS,MAAM,SAASyB,kDAI7B,OAAO4vF,EAGT,MAAM,IAAIrxF,MAAM,0DAGlB,MAAMklF,EAAS,IAAIoD,EAAO,CACxBhD,MAAO,IAAIiD,EAAMt6D,GACjB6kC,KAAM,OAEFo2B,EAAOhE,EAAOU,SACduD,EAAOjE,EAAOU,SACdwD,EAAOlE,EAAOU,SACdsL,EAAUhM,EAAOU,SACvB,IAAIvwD,EAAKr0B,EAET,KAAMm2C,OAAOuuB,UAAUwjB,IAAS/xC,OAAOuuB,UAAUyjB,KAAS,EAAI59B,EAAYue,OAAOsf,EAAM,SAAU,EAAI79B,EAAYwe,QAAQmnB,KAAY,EAAI5lC,EAAMsK,OAAOvgC,EAAM67D,EAAQttE,IAAI,gBAAkByR,EAAM,GAC9L,OAAO,KACF,IAAKr0B,EAASiwF,EAAOC,EAAS,QAAUjjE,EAAOjtB,OACpD,MAAM,IAAIhB,MAAM,uFAGlB,MAAO,CACLgB,SACAqwF,MAAOD,EAASF,GAChBjW,kBAAmBgW,EAAOC,EAAS,KACnCK,SAAUN,EAAOC,EAAS,KAC1BljC,SAAUijC,EAAOC,EAAS,KAC1BM,sBAAuBP,EAAOC,EAAS,KACvC7V,UAAW6V,EAAQ7rE,IAAI,KAAO4rE,EAAOC,EAAS,KAAK,GAAQ,IAMjEzxF,EAAQs4E,cAAgBA,GAIlB,SAAU52E,EAAQ1B,EAASmrD,GAEjC,aAGApuC,OAAO2T,eAAe1wB,EAAS,aAAc,CAC3CgnB,OAAO,IAEThnB,EAAQsvF,UAAYtvF,EAAQgyF,aAAehyF,EAAQg1E,sBAAwBh1E,EAAQw1B,OAASx1B,EAAQ4vF,gBAAkB5vF,EAAQmvF,gBAAkBnvF,EAAQi1E,WAAaj1E,EAAQovF,YAAcpvF,EAAQiyF,aAAejyF,EAAQkyF,cAAgBlyF,EAAQ0vF,eAAiB1vF,EAAQyvF,mBAAgB,EAE3R,IAAI5jC,EAAQV,EAAoB,GAE5BW,EAAcX,EAAoB,GAElCiB,EAAcjB,EAAoB,GAElC31B,EAAS,WACX,SAASA,EAAO28D,EAAa3vF,EAAOjB,EAAQmrE,GAC1CtrE,KAAKqmB,MAAQ0qE,aAAuBxtE,WAAawtE,EAAc,IAAIxtE,WAAWwtE,GAC9E/wF,KAAKoB,MAAQA,GAAS,EACtBpB,KAAKimE,IAAMjmE,KAAKoB,MAChBpB,KAAKqB,IAAMD,EAAQjB,GAAUH,KAAKqmB,MAAMlmB,OACxCH,KAAKsrE,KAAOA,EAuGd,OApGAl3C,EAAO30B,UAAY,CACjB,aACE,OAAOO,KAAKqB,IAAMrB,KAAKoB,OAGzB,cACE,OAAuB,IAAhBpB,KAAKG,QAGd+tE,QAAS,WACP,OAAIluE,KAAKimE,KAAOjmE,KAAKqB,KACX,EAGHrB,KAAKqmB,MAAMrmB,KAAKimE,QAEzB2lB,UAAW,WACT,IAAIrhF,EAAKvK,KAAKkuE,UACVxjE,EAAK1K,KAAKkuE,UAEd,OAAY,IAAR3jE,IAAqB,IAARG,GACP,GAGFH,GAAM,GAAKG,GAErB0X,SAAU,WACR,IAAI7X,EAAKvK,KAAKkuE,UACVxjE,EAAK1K,KAAKkuE,UACVrjE,EAAK7K,KAAKkuE,UACVljE,EAAKhL,KAAKkuE,UACd,OAAQ3jE,GAAM,KAAOG,GAAM,KAAOG,GAAM,GAAKG,GAG/C,SAAS7K,EAAQguE,GAAe,GAC9B,IAAI9nD,EAAQrmB,KAAKqmB,MACb4/C,EAAMjmE,KAAKimE,IACXmI,EAASpuE,KAAKqB,IAElB,IAAKlB,EAAQ,CACX,MAAMwlB,EAAWU,EAAMV,SAASsgD,EAAKmI,GACrC,OAAOD,EAAe,IAAI1oD,kBAAkBE,GAAYA,EAG1D,IAAItkB,EAAM4kE,EAAM9lE,EAEZkB,EAAM+sE,IACR/sE,EAAM+sE,GAGRpuE,KAAKimE,IAAM5kE,EACX,MAAMskB,EAAWU,EAAMV,SAASsgD,EAAK5kE,GACrC,OAAO8sE,EAAe,IAAI1oD,kBAAkBE,GAAYA,GAG1D8lE,SAAU,WACR,IAAInd,EAAatuE,KAAKkuE,UAMtB,OAJoB,IAAhBI,GACFtuE,KAAKimE,MAGAqI,GAGT,UAAUnuE,EAAQguE,GAAe,GAC/B,IAAI9nD,EAAQrmB,KAAK+rE,SAAS5rE,EAAQguE,GAElC,OADAnuE,KAAKimE,KAAO5/C,EAAMlmB,OACXkmB,GAGT,aAAaqmD,EAAOrrE,GASlB,OARIqrE,EAAQ,IACVA,EAAQ,GAGNrrE,EAAMrB,KAAKqB,MACbA,EAAMrB,KAAKqB,KAGNrB,KAAKqmB,MAAMV,SAAS+mD,EAAOrrE,IAGpCi2E,KAAM,SAAqBznE,GACpBA,IACHA,EAAI,GAGN7P,KAAKimE,KAAOp2D,GAEdsnE,MAAO,WACLn3E,KAAKimE,IAAMjmE,KAAKoB,OAElBm2E,UAAW,WACTv3E,KAAKoB,MAAQpB,KAAKimE,KAEpBmiB,cAAe,SAA8BhnF,EAAOjB,EAAQmrE,GAC1D,OAAO,IAAIl3C,EAAOp0B,KAAKqmB,MAAMlM,OAAQ/Y,EAAOjB,EAAQmrE,KAGjDl3C,EA7GI,GAgHbx1B,EAAQw1B,OAASA,EAEjB,IAAIw8D,EAAe,WACjB,SAASA,EAAazvF,GACpB,MAAMklB,GAAQ,EAAIokC,EAAM4K,eAAel0D,GACvCizB,EAAO1c,KAAK1X,KAAMqmB,GAIpB,OADAuqE,EAAanxF,UAAY20B,EAAO30B,UACzBmxF,EAPU,GAUnBhyF,EAAQgyF,aAAeA,EAEvB,IAAIC,EAAe,WACjB,IAAIG,EAAc,IAAIztE,WAAW,GAEjC,SAASstE,EAAaI,GAQpB,GAPAjxF,KAAKkxF,oBAAsBD,GAAwB,EACnDjxF,KAAKimE,IAAM,EACXjmE,KAAKmxF,aAAe,EACpBnxF,KAAKoxF,KAAM,EACXpxF,KAAKma,OAAS62E,EACdhxF,KAAKqxF,gBAAkB,IAEnBJ,EACF,MAAOjxF,KAAKqxF,gBAAkBJ,EAC5BjxF,KAAKqxF,iBAAmB,EA4I9B,OAvIAR,EAAapxF,UAAY,CACvB,cACE,OAAQO,KAAKoxF,KAA6B,IAAtBpxF,KAAKmxF,aACvBnxF,KAAKsxF,YAGP,OAA6B,IAAtBtxF,KAAKmxF,cAGdI,aAAc,SAAmCC,GAC/C,IAAIr3E,EAASna,KAAKma,OAElB,GAAIq3E,GAAar3E,EAAOxU,WACtB,OAAOwU,EAGT,IAAIzW,EAAO1D,KAAKqxF,gBAEhB,MAAO3tF,EAAO8tF,EACZ9tF,GAAQ,EAGV,IAAI+tF,EAAU,IAAIluE,WAAW7f,GAE7B,OADA+tF,EAAQtuE,IAAIhJ,GACLna,KAAKma,OAASs3E,GAEvBvjB,QAAS,WACP,IAAIjI,EAAMjmE,KAAKimE,IAEf,MAAOjmE,KAAKmxF,cAAgBlrB,EAAK,CAC/B,GAAIjmE,KAAKoxF,IACP,OAAQ,EAGVpxF,KAAKsxF,YAGP,OAAOtxF,KAAKma,OAAOna,KAAKimE,QAE1B2lB,UAAW,WACT,IAAIrhF,EAAKvK,KAAKkuE,UACVxjE,EAAK1K,KAAKkuE,UAEd,OAAY,IAAR3jE,IAAqB,IAARG,GACP,GAGFH,GAAM,GAAKG,GAErB0X,SAAU,WACR,IAAI7X,EAAKvK,KAAKkuE,UACVxjE,EAAK1K,KAAKkuE,UACVrjE,EAAK7K,KAAKkuE,UACVljE,EAAKhL,KAAKkuE,UACd,OAAQ3jE,GAAM,KAAOG,GAAM,KAAOG,GAAM,GAAKG,GAG/C,SAAS7K,EAAQguE,GAAe,GAC9B,IAAI9sE,EACA4kE,EAAMjmE,KAAKimE,IAEf,GAAI9lE,EAAQ,CACVH,KAAKuxF,aAAatrB,EAAM9lE,GACxBkB,EAAM4kE,EAAM9lE,EAEZ,OAAQH,KAAKoxF,KAAOpxF,KAAKmxF,aAAe9vF,EACtCrB,KAAKsxF,YAGP,IAAII,EAAS1xF,KAAKmxF,aAEd9vF,EAAMqwF,IACRrwF,EAAMqwF,OAEH,CACL,OAAQ1xF,KAAKoxF,IACXpxF,KAAKsxF,YAGPjwF,EAAMrB,KAAKmxF,aAGbnxF,KAAKimE,IAAM5kE,EACX,MAAMskB,EAAW3lB,KAAKma,OAAOwL,SAASsgD,EAAK5kE,GAC3C,OAAO8sE,GAAkBxoD,aAAoBF,kBAAuDE,EAAlC,IAAIF,kBAAkBE,IAG1F8lE,SAAU,WACR,IAAInd,EAAatuE,KAAKkuE,UAMtB,OAJoB,IAAhBI,GACFtuE,KAAKimE,MAGAqI,GAGT,UAAUnuE,EAAQguE,GAAe,GAC/B,IAAI9nD,EAAQrmB,KAAK+rE,SAAS5rE,EAAQguE,GAElC,OADAnuE,KAAKimE,KAAO5/C,EAAMlmB,OACXkmB,GAGT+hE,cAAe,SAAoChnF,EAAOjB,EAAQmrE,GAChE,IAAIjqE,EAAMD,EAAQjB,EAElB,MAAOH,KAAKmxF,cAAgB9vF,IAAQrB,KAAKoxF,IACvCpxF,KAAKsxF,YAGP,OAAO,IAAIl9D,EAAOp0B,KAAKma,OAAQ/Y,EAAOjB,EAAQmrE,IAGhD,aAAaoB,EAAOrrE,IAClB,EAAIopD,EAAM+K,aAAa,8CAGzB8hB,KAAM,SAA2BznE,GAC1BA,IACHA,EAAI,GAGN7P,KAAKimE,KAAOp2D,GAEdsnE,MAAO,WACLn3E,KAAKimE,IAAM,GAEb4jB,eAAgB,WACd,OAAI7pF,KAAKmB,KAAOnB,KAAKmB,IAAI0oF,eAChB7pF,KAAKmB,IAAI0oF,iBAGX,KAGJgH,EAzJU,GA4JnBjyF,EAAQiyF,aAAeA,EAEvB,IAAIjd,EAAwB,WAC1B,SAASA,EAAsBF,GAC7B1zE,KAAK0zE,QAAUA,EACf,IAAI+Z,EAAc,EAElB,IAAK,IAAI/rF,EAAI,EAAGgnE,EAAKgL,EAAQvzE,OAAQuB,EAAIgnE,EAAIhnE,IAAK,CAChD,MAAM0rB,EAASsmD,EAAQhyE,GAGrB+rF,GADErgE,aAAkByjE,EACLzjE,EAAO8jE,oBAEP9jE,EAAOjtB,OAI1B0wF,EAAan5E,KAAK1X,KAAMytF,GAoC1B,OAjCA7Z,EAAsBn0E,UAAYkc,OAAOwN,OAAO0nE,EAAapxF,WAE7Dm0E,EAAsBn0E,UAAU6xF,UAAY,WAC1C,IAAI5d,EAAU1zE,KAAK0zE,QAEnB,GAAuB,IAAnBA,EAAQvzE,OAAZ,CAKA,IAAIitB,EAASsmD,EAAQlhE,QACjB8a,EAAQF,EAAO2+C,WACfolB,EAAenxF,KAAKmxF,aACpBQ,EAAYR,EAAe7jE,EAAMntB,OACjCga,EAASna,KAAKuxF,aAAaI,GAC/Bx3E,EAAOgJ,IAAImK,EAAO6jE,GAClBnxF,KAAKmxF,aAAeQ,OAVlB3xF,KAAKoxF,KAAM,GAafxd,EAAsBn0E,UAAUoqF,eAAiB,WAG/C,IAFA,IAAIC,EAAc,GAETpoF,EAAI,EAAGgnE,EAAK1oE,KAAK0zE,QAAQvzE,OAAQuB,EAAIgnE,EAAIhnE,IAAK,CACrD,IAAI0rB,EAASptB,KAAK0zE,QAAQhyE,GAEtB0rB,EAAOy8D,gBACTC,EAAYnlE,QAAQyI,EAAOy8D,kBAI/B,OAAOC,GAGFlW,EAnDmB,GAsD5Bh1E,EAAQg1E,sBAAwBA,EAEhC,IAAIoa,EAAc,WAChB,IAAI4D,EAAiB,IAAIC,WAAW,CAAC,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,KAC/FC,EAAe,IAAID,WAAW,CAAC,EAAS,EAAS,EAAS,EAAS,EAAS,EAAS,EAAS,GAAS,MAAS,MAAS,MAAS,MAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,IAAS,IAAS,MAC7SE,EAAa,IAAIF,WAAW,CAAC,EAAS,EAAS,EAAS,EAAS,MAAS,MAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,SAClSG,EAAkB,CAAC,IAAIH,WAAW,CAAC,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,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CAAC,EAAGA,GAAe,CAAC,EAAGA,GAAe,CAAC,EAAGA,GAAe,CAAC,EAAGA,GAAe,CAAC,EAAGA,GAAe,CAAC,EAAGA,GAAe,CAAC,EAAGA,GAAe,CAAC,EAAGA,GAAe,CAAC,EAAGA,GAAe,CAAC,EAAGA,GAAe,CAAC,EAAGD,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,GAAc,CAAC,EAAGA,IAC/wEQ,EAAc,CAAC,EAAE,GAAI,GAAI,CAAC,GAAIZ,GAAW,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,OAC9Wa,EAAc,CAAC,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IACx3IC,EAAc,CAAC,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,CAAC,GAAId,GAAW,CAAC,GAAIA,GAAW,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,KAC53Ce,EAAc,CAAC,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,KAAM,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,KACjwDC,EAAc,CAAC,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG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EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,IACD,CAAC,CACHD,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,IACD,CAAC,CACHD,GAAI,EACJC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,KAED8tF,EAAsB,CAAC,CACzBC,OAAQ,CAAC,CACPhuF,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,IAELguF,UAAW,CAAC,CACVjuF,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,EAAG,EACHC,EAAG,GACF,CACDD,EAAG,EACHC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,EAAG,EACHC,EAAG,GACF,CACDD,EAAG,EACHC,EAAG,KAEJ,CACD+tF,OAAQ,CAAC,CACPhuF,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH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ACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,EACNC,KAAM,EACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,EACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,EACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAA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AAa,IAAIA,EAAO,UAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,WAAa,IAAIA,EAAO,WAAY,WAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,WAAa,IAAIA,EAAO,UAAY,YAAa,IAAIA,EAAO,UAAY,YAAa,IAAIA,EAAO,UAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,WAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,UAAY,YAAa,IAAIA,EAAO,UAAY,WAAa,IAAIA,EAAO,UAAY,YAAa,IAAIA,EAAO,UAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,WAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,WAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,UAAY,WAAa,IAAIA,EAAO,UAAY,YAAa,IAAIA,EAAO,UAAY,YAAa,IAAIA,EAAO,UAAY,YAAa,IAAIA,EAAO,UAAY,YAAa,IAAIA,EAAO,UAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,WAAa,IAAIA,EAAO,WAAY,WAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,YAAa,IAAIA,EAAO,WAAY,WAAa,IAAIA,EAAO,WAAY,YAAa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M,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,KACphDvjB,KAAKkyH,OAAS,IAAI3uG,WAAW,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GA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IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,MACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,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IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,MAEN,CACCqrE,MAAO,KACPrrE,IAAK,OAEN,CACCqrE,MAAO,MACPrrE,IAAK,OAEN,CACCqrE,MAAO,MACPrrE,IAAK,OAEN,CACCqrE,MAAO,MACPrrE,IAAK,OAEN,CACCqrE,MAAO,MACPrrE,IAAK,OAEN,CACCqrE,MAAO,MACPrrE,IAAK,OAEN,CACCqrE,MAAO,MACPrrE,IAAK,OAEN,CACCqrE,MAAO,MACPrrE,IAAK,OAEN,CACCqrE,MAAO,MACPrrE,IAAK,OAEN,CACCqrE,MAAO,MACPrrE,IAAK,OAEN,CACCqrE,MAAO,MACPrrE,IAAK,OAEN,CACCqrE,MAAO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,SAAUxqE,GAC3DA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,OACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,MACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,KACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,OACdA,EAAE,KAAY,KACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,KACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,OACdA,EAAE,KAAY,KACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,OACdA,EAAE,KAAY,MACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,OACdA,EAAE,KAAY,UACdA,EAAE,KAAY,SACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,KACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,MACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,EAAE,KAAY,IACdA,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K,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC14CC,EAAc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,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iB,iBACAC,YACAb,aACAF,iBACAgB,aACAC,cACAd,YACAJ,WACAmB,iBACAX,QACAD,cACAt7O,aAGAm8O,mBACA,IACA,kEACA,SACA,iBAEA,YACA,mBACA,kBAGA/M,SACAwL,yBACA,gBAIA,IAHA,wCACA,IAEA,8BAEA,iCACA5jO,IACA,MAGA,MACAA,kEACAolO,iCAEAx/U,iBACAo6G,gBAGA79F,eACAA,8BAEAkjU,mBACA,iBAEA3B,sBACA,iBAEA4B,kBAEA,QAEAp+U,EADA,yBACAA,IAEAA,IAEA,oBAGA,iCACA,gCAEAg3G,kBAEA,QACA,oBAGA,iCACA,gCAGAqnO,oBAAA,WACA,qCACA,aACA,OACAr6T,iCAGA+kD,sEAEA7mD,gBACA,kBACAA,kBACAjH,0BAEA,iBACAqjU,kCACAC,2BAGA,CACA,MACA,wDACA,sBAIAC,wBACA,gBACA,+BAGAC,sBAAA,IAEA,EAFA,OAIAC,EADA,iCACAA,eACAlmU,SAIAkmU,iBAEAA,4BACA,WACA,8BACAC,iCACA1jU,oBACAA,eACA,UACA,UACAA,sBACA9b,uBACA8b,eAEA0jU,EACAC,cACA3vR,gBAEAppC,kBACA5K,yBAOA,wBACA,iBACA,wBAIA4jU,wBAAA,WAEA,OACA,yCACAN,sBACA,8CACA,qBACA,6BACA,EACA3qU,gCACAA,6BACAA,4BACAA,2BACAA,0BACA,EACA,MACA,iBACAouG,oBAGA88N,kBACAA,oBAQAA,qBACAA,8BACA,mBAEAP,uBAEA3qU,4BACA,OACAmrU,gBACAC,YAEAlwR,qCAaA,oBACA,cACA,GACAs2F,YACA,6CAGA,gCACA5iI,uBACA,aACA,IACA,oBACAy8T,eAEA,SACAhkU,iBAEA,IACA,oBACAvc,uDACA,eAGA,SACAuc,oBAEA,KAEA,eACAuH,uBACA,qBACA,aCvTkV,I,wBCQ9U4sF,EAAY,eACd,EACA0gO,EACAkB,GACA,EACA,KACA,WACA,MAIa,OAAA5hO,E,6CCjBf,MAAM9xG,EAAW,EAAQ,QAEnBkuC,EAAa,EAAQ,QAE3B,SAAS0zS,EAAWzzS,GAClBD,EAAW51B,KAAK1X,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","file":"js/chunk-78adc46a.49feed3c.js","sourcesContent":["var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","// Copyright 2018 The Go Authors. All rights reserved.\r\n// Use of this source code is governed by a BSD-style\r\n// license that can be found in the LICENSE file.\r\n\r\n(() => {\r\n\t// Map multiple JavaScript environments to a single common API,\r\n\t// preferring web standards over Node.js API.\r\n\t//\r\n\t// Environments considered:\r\n\t// - Browsers\r\n\t// - Node.js\r\n\t// - Electron\r\n\t// - Parcel\r\n\t// - Webpack\r\n\r\n\tif (typeof global !== \"undefined\") {\r\n\t\t// global already exists\r\n\t} else if (typeof window !== \"undefined\") {\r\n\t\twindow.global = window;\r\n\t} else if (typeof self !== \"undefined\") {\r\n\t\tself.global = self;\r\n\t} else {\r\n\t\tthrow new Error(\"cannot export Go (neither global, window nor self is defined)\");\r\n\t}\r\n\r\n\tif (!global.require && typeof require !== \"undefined\") {\r\n\t\tglobal.require = require;\r\n\t}\r\n\r\n\tif (!global.fs && global.require) {\r\n\t\tconst fs = require(\"fs\");\r\n\t\tif (typeof fs === \"object\" && fs !== null && Object.keys(fs).length !== 0) {\r\n\t\t\tglobal.fs = fs;\r\n\t\t}\r\n\t}\r\n\r\n\tconst enosys = () => {\r\n\t\tconst err = new Error(\"not implemented\");\r\n\t\terr.code = \"ENOSYS\";\r\n\t\treturn err;\r\n\t};\r\n\r\n\tif (!global.fs) {\r\n\t\tlet outputBuf = \"\";\r\n\t\tglobal.fs = {\r\n\t\t\tconstants: { O_WRONLY: -1, O_RDWR: -1, O_CREAT: -1, O_TRUNC: -1, O_APPEND: -1, O_EXCL: -1 }, // unused\r\n\t\t\twriteSync(fd, buf) {\r\n\t\t\t\toutputBuf += decoder.decode(buf);\r\n\t\t\t\tconst nl = outputBuf.lastIndexOf(\"\\n\");\r\n\t\t\t\tif (nl != -1) {\r\n\t\t\t\t\tconsole.log(outputBuf.substr(0, nl));\r\n\t\t\t\t\toutputBuf = outputBuf.substr(nl + 1);\r\n\t\t\t\t}\r\n\t\t\t\treturn buf.length;\r\n\t\t\t},\r\n\t\t\twrite(fd, buf, offset, length, position, callback) {\r\n\t\t\t\tif (offset !== 0 || length !== buf.length || position !== null) {\r\n\t\t\t\t\tcallback(enosys());\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tconst n = this.writeSync(fd, buf);\r\n\t\t\t\tcallback(null, n);\r\n\t\t\t},\r\n\t\t\tchmod(path, mode, callback) { callback(enosys()); },\r\n\t\t\tchown(path, uid, gid, callback) { callback(enosys()); },\r\n\t\t\tclose(fd, callback) { callback(enosys()); },\r\n\t\t\tfchmod(fd, mode, callback) { callback(enosys()); },\r\n\t\t\tfchown(fd, uid, gid, callback) { callback(enosys()); },\r\n\t\t\tfstat(fd, callback) { callback(enosys()); },\r\n\t\t\tfsync(fd, callback) { callback(null); },\r\n\t\t\tftruncate(fd, length, callback) { callback(enosys()); },\r\n\t\t\tlchown(path, uid, gid, callback) { callback(enosys()); },\r\n\t\t\tlink(path, link, callback) { callback(enosys()); },\r\n\t\t\tlstat(path, callback) { callback(enosys()); },\r\n\t\t\tmkdir(path, perm, callback) { callback(enosys()); },\r\n\t\t\topen(path, flags, mode, callback) { callback(enosys()); },\r\n\t\t\tread(fd, buffer, offset, length, position, callback) { callback(enosys()); },\r\n\t\t\treaddir(path, callback) { callback(enosys()); },\r\n\t\t\treadlink(path, callback) { callback(enosys()); },\r\n\t\t\trename(from, to, callback) { callback(enosys()); },\r\n\t\t\trmdir(path, callback) { callback(enosys()); },\r\n\t\t\tstat(path, callback) { callback(enosys()); },\r\n\t\t\tsymlink(path, link, callback) { callback(enosys()); },\r\n\t\t\ttruncate(path, length, callback) { callback(enosys()); },\r\n\t\t\tunlink(path, callback) { callback(enosys()); },\r\n\t\t\tutimes(path, atime, mtime, callback) { callback(enosys()); },\r\n\t\t};\r\n\t}\r\n\r\n\tif (!global.process) {\r\n\t\tglobal.process = {\r\n\t\t\tgetuid() { return -1; },\r\n\t\t\tgetgid() { return -1; },\r\n\t\t\tgeteuid() { return -1; },\r\n\t\t\tgetegid() { return -1; },\r\n\t\t\tgetgroups() { throw enosys(); },\r\n\t\t\tpid: -1,\r\n\t\t\tppid: -1,\r\n\t\t\tumask() { throw enosys(); },\r\n\t\t\tcwd() { throw enosys(); },\r\n\t\t\tchdir() { throw enosys(); },\r\n\t\t}\r\n\t}\r\n\r\n\tif (!global.crypto && global.require) {\r\n\t\tconst nodeCrypto = require(\"crypto\");\r\n\t\tglobal.crypto = {\r\n\t\t\tgetRandomValues(b) {\r\n\t\t\t\tnodeCrypto.randomFillSync(b);\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\tif (!global.crypto) {\r\n\t\tthrow new Error(\"global.crypto is not available, polyfill required (getRandomValues only)\");\r\n\t}\r\n\r\n\tif (!global.performance) {\r\n\t\tglobal.performance = {\r\n\t\t\tnow() {\r\n\t\t\t\tconst [sec, nsec] = process.hrtime();\r\n\t\t\t\treturn sec * 1000 + nsec / 1000000;\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tif (!global.TextEncoder && global.require) {\r\n\t\tglobal.TextEncoder = require(\"util\").TextEncoder;\r\n\t}\r\n\tif (!global.TextEncoder) {\r\n\t\tthrow new Error(\"global.TextEncoder is not available, polyfill required\");\r\n\t}\r\n\r\n\tif (!global.TextDecoder && global.require) {\r\n\t\tglobal.TextDecoder = require(\"util\").TextDecoder;\r\n\t}\r\n\tif (!global.TextDecoder) {\r\n\t\tthrow new Error(\"global.TextDecoder is not available, polyfill required\");\r\n\t}\r\n\r\n\t// End of polyfills for common API.\r\n\r\n\tconst encoder = new TextEncoder(\"utf-8\");\r\n\tconst decoder = new TextDecoder(\"utf-8\");\r\n\r\n\tglobal.Go = class {\r\n\t\tconstructor() {\r\n\t\t\tthis.argv = [\"js\"];\r\n\t\t\tthis.env = {};\r\n\t\t\tthis.exit = (code) => {\r\n\t\t\t\tif (code !== 0) {\r\n\t\t\t\t\tconsole.warn(\"exit code:\", code);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tthis._exitPromise = new Promise((resolve) => {\r\n\t\t\t\tthis._resolveExitPromise = resolve;\r\n\t\t\t});\r\n\t\t\tthis._pendingEvent = null;\r\n\t\t\tthis._scheduledTimeouts = new Map();\r\n\t\t\tthis._nextCallbackTimeoutID = 1;\r\n\r\n\t\t\tconst setInt64 = (addr, v) => {\r\n\t\t\t\tthis.mem.setUint32(addr + 0, v, true);\r\n\t\t\t\tthis.mem.setUint32(addr + 4, Math.floor(v / 4294967296), true);\r\n\t\t\t}\r\n\r\n\t\t\tconst getInt64 = (addr) => {\r\n\t\t\t\tconst low = this.mem.getUint32(addr + 0, true);\r\n\t\t\t\tconst high = this.mem.getInt32(addr + 4, true);\r\n\t\t\t\treturn low + high * 4294967296;\r\n\t\t\t}\r\n\r\n\t\t\tconst loadValue = (addr) => {\r\n\t\t\t\tconst f = this.mem.getFloat64(addr, true);\r\n\t\t\t\tif (f === 0) {\r\n\t\t\t\t\treturn undefined;\r\n\t\t\t\t}\r\n\t\t\t\tif (!isNaN(f)) {\r\n\t\t\t\t\treturn f;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst id = this.mem.getUint32(addr, true);\r\n\t\t\t\treturn this._values[id];\r\n\t\t\t}\r\n\r\n\t\t\tconst storeValue = (addr, v) => {\r\n\t\t\t\tconst nanHead = 0x7FF80000;\r\n\r\n\t\t\t\tif (typeof v === \"number\" && v !== 0) {\r\n\t\t\t\t\tif (isNaN(v)) {\r\n\t\t\t\t\t\tthis.mem.setUint32(addr + 4, nanHead, true);\r\n\t\t\t\t\t\tthis.mem.setUint32(addr, 0, true);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.mem.setFloat64(addr, v, true);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (v === undefined) {\r\n\t\t\t\t\tthis.mem.setFloat64(addr, 0, true);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet id = this._ids.get(v);\r\n\t\t\t\tif (id === undefined) {\r\n\t\t\t\t\tid = this._idPool.pop();\r\n\t\t\t\t\tif (id === undefined) {\r\n\t\t\t\t\t\tid = this._values.length;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._values[id] = v;\r\n\t\t\t\t\tthis._goRefCounts[id] = 0;\r\n\t\t\t\t\tthis._ids.set(v, id);\r\n\t\t\t\t}\r\n\t\t\t\tthis._goRefCounts[id]++;\r\n\t\t\t\tlet typeFlag = 0;\r\n\t\t\t\tswitch (typeof v) {\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tif (v !== null) {\r\n\t\t\t\t\t\t\ttypeFlag = 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"string\":\r\n\t\t\t\t\t\ttypeFlag = 2;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"symbol\":\r\n\t\t\t\t\t\ttypeFlag = 3;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\t\ttypeFlag = 4;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tthis.mem.setUint32(addr + 4, nanHead | typeFlag, true);\r\n\t\t\t\tthis.mem.setUint32(addr, id, true);\r\n\t\t\t}\r\n\r\n\t\t\tconst loadSlice = (addr) => {\r\n\t\t\t\tconst array = getInt64(addr + 0);\r\n\t\t\t\tconst len = getInt64(addr + 8);\r\n\t\t\t\treturn new Uint8Array(this._inst.exports.mem.buffer, array, len);\r\n\t\t\t}\r\n\r\n\t\t\tconst loadSliceOfValues = (addr) => {\r\n\t\t\t\tconst array = getInt64(addr + 0);\r\n\t\t\t\tconst len = getInt64(addr + 8);\r\n\t\t\t\tconst a = new Array(len);\r\n\t\t\t\tfor (let i = 0; i < len; i++) {\r\n\t\t\t\t\ta[i] = loadValue(array + i * 8);\r\n\t\t\t\t}\r\n\t\t\t\treturn a;\r\n\t\t\t}\r\n\r\n\t\t\tconst loadString = (addr) => {\r\n\t\t\t\tconst saddr = getInt64(addr + 0);\r\n\t\t\t\tconst len = getInt64(addr + 8);\r\n\t\t\t\treturn decoder.decode(new DataView(this._inst.exports.mem.buffer, saddr, len));\r\n\t\t\t}\r\n\r\n\t\t\tconst timeOrigin = Date.now() - performance.now();\r\n\t\t\tthis.importObject = {\r\n\t\t\t\tgo: {\r\n\t\t\t\t\t// Go's SP does not change as long as no Go code is running. Some operations (e.g. calls, getters and setters)\r\n\t\t\t\t\t// may synchronously trigger a Go event handler. This makes Go code get executed in the middle of the imported\r\n\t\t\t\t\t// function. A goroutine can switch to a new stack if the current stack is too small (see morestack function).\r\n\t\t\t\t\t// This changes the SP, thus we have to update the SP used by the imported function.\r\n\r\n\t\t\t\t\t// func wasmExit(code int32)\r\n\t\t\t\t\t\"runtime.wasmExit\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst code = this.mem.getInt32(sp + 8, true);\r\n\t\t\t\t\t\tthis.exited = true;\r\n\t\t\t\t\t\tdelete this._inst;\r\n\t\t\t\t\t\tdelete this._values;\r\n\t\t\t\t\t\tdelete this._goRefCounts;\r\n\t\t\t\t\t\tdelete this._ids;\r\n\t\t\t\t\t\tdelete this._idPool;\r\n\t\t\t\t\t\tthis.exit(code);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func wasmWrite(fd uintptr, p unsafe.Pointer, n int32)\r\n\t\t\t\t\t\"runtime.wasmWrite\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst fd = getInt64(sp + 8);\r\n\t\t\t\t\t\tconst p = getInt64(sp + 16);\r\n\t\t\t\t\t\tconst n = this.mem.getInt32(sp + 24, true);\r\n\t\t\t\t\t\tfs.writeSync(fd, new Uint8Array(this._inst.exports.mem.buffer, p, n));\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func resetMemoryDataView()\r\n\t\t\t\t\t\"runtime.resetMemoryDataView\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tthis.mem = new DataView(this._inst.exports.mem.buffer);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func nanotime1() int64\r\n\t\t\t\t\t\"runtime.nanotime1\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tsetInt64(sp + 8, (timeOrigin + performance.now()) * 1000000);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func walltime() (sec int64, nsec int32)\r\n\t\t\t\t\t\"runtime.walltime\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst msec = (new Date).getTime();\r\n\t\t\t\t\t\tsetInt64(sp + 8, msec / 1000);\r\n\t\t\t\t\t\tthis.mem.setInt32(sp + 16, (msec % 1000) * 1000000, true);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func scheduleTimeoutEvent(delay int64) int32\r\n\t\t\t\t\t\"runtime.scheduleTimeoutEvent\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst id = this._nextCallbackTimeoutID;\r\n\t\t\t\t\t\tthis._nextCallbackTimeoutID++;\r\n\t\t\t\t\t\tthis._scheduledTimeouts.set(id, setTimeout(\r\n\t\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\t\tthis._resume();\r\n\t\t\t\t\t\t\t\twhile (this._scheduledTimeouts.has(id)) {\r\n\t\t\t\t\t\t\t\t\t// for some reason Go failed to register the timeout event, log and try again\r\n\t\t\t\t\t\t\t\t\t// (temporary workaround for https://github.com/golang/go/issues/28975)\r\n\t\t\t\t\t\t\t\t\tconsole.warn(\"scheduleTimeoutEvent: missed timeout event\");\r\n\t\t\t\t\t\t\t\t\tthis._resume();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tgetInt64(sp + 8) + 1, // setTimeout has been seen to fire up to 1 millisecond early\r\n\t\t\t\t\t\t));\r\n\t\t\t\t\t\tthis.mem.setInt32(sp + 16, id, true);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func clearTimeoutEvent(id int32)\r\n\t\t\t\t\t\"runtime.clearTimeoutEvent\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst id = this.mem.getInt32(sp + 8, true);\r\n\t\t\t\t\t\tclearTimeout(this._scheduledTimeouts.get(id));\r\n\t\t\t\t\t\tthis._scheduledTimeouts.delete(id);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func getRandomData(r []byte)\r\n\t\t\t\t\t\"runtime.getRandomData\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tcrypto.getRandomValues(loadSlice(sp + 8));\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func finalizeRef(v ref)\r\n\t\t\t\t\t\"syscall/js.finalizeRef\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst id = this.mem.getUint32(sp + 8, true);\r\n\t\t\t\t\t\tthis._goRefCounts[id]--;\r\n\t\t\t\t\t\tif (this._goRefCounts[id] === 0) {\r\n\t\t\t\t\t\t\tconst v = this._values[id];\r\n\t\t\t\t\t\t\tthis._values[id] = null;\r\n\t\t\t\t\t\t\tthis._ids.delete(v);\r\n\t\t\t\t\t\t\tthis._idPool.push(id);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func stringVal(value string) ref\r\n\t\t\t\t\t\"syscall/js.stringVal\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tstoreValue(sp + 24, loadString(sp + 8));\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func valueGet(v ref, p string) ref\r\n\t\t\t\t\t\"syscall/js.valueGet\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst result = Reflect.get(loadValue(sp + 8), loadString(sp + 16));\r\n\t\t\t\t\t\tsp = this._inst.exports.getsp() >>> 0; // see comment above\r\n\t\t\t\t\t\tstoreValue(sp + 32, result);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func valueSet(v ref, p string, x ref)\r\n\t\t\t\t\t\"syscall/js.valueSet\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tReflect.set(loadValue(sp + 8), loadString(sp + 16), loadValue(sp + 32));\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func valueDelete(v ref, p string)\r\n\t\t\t\t\t\"syscall/js.valueDelete\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tReflect.deleteProperty(loadValue(sp + 8), loadString(sp + 16));\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func valueIndex(v ref, i int) ref\r\n\t\t\t\t\t\"syscall/js.valueIndex\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tstoreValue(sp + 24, Reflect.get(loadValue(sp + 8), getInt64(sp + 16)));\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// valueSetIndex(v ref, i int, x ref)\r\n\t\t\t\t\t\"syscall/js.valueSetIndex\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tReflect.set(loadValue(sp + 8), getInt64(sp + 16), loadValue(sp + 24));\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func valueCall(v ref, m string, args []ref) (ref, bool)\r\n\t\t\t\t\t\"syscall/js.valueCall\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tconst v = loadValue(sp + 8);\r\n\t\t\t\t\t\t\tconst m = Reflect.get(v, loadString(sp + 16));\r\n\t\t\t\t\t\t\tconst args = loadSliceOfValues(sp + 32);\r\n\t\t\t\t\t\t\tconst result = Reflect.apply(m, v, args);\r\n\t\t\t\t\t\t\tsp = this._inst.exports.getsp() >>> 0; // see comment above\r\n\t\t\t\t\t\t\tstoreValue(sp + 56, result);\r\n\t\t\t\t\t\t\tthis.mem.setUint8(sp + 64, 1);\r\n\t\t\t\t\t\t} catch (err) {\r\n\t\t\t\t\t\t\tsp = this._inst.exports.getsp() >>> 0; // see comment above\r\n\t\t\t\t\t\t\tstoreValue(sp + 56, err);\r\n\t\t\t\t\t\t\tthis.mem.setUint8(sp + 64, 0);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func valueInvoke(v ref, args []ref) (ref, bool)\r\n\t\t\t\t\t\"syscall/js.valueInvoke\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tconst v = loadValue(sp + 8);\r\n\t\t\t\t\t\t\tconst args = loadSliceOfValues(sp + 16);\r\n\t\t\t\t\t\t\tconst result = Reflect.apply(v, undefined, args);\r\n\t\t\t\t\t\t\tsp = this._inst.exports.getsp() >>> 0; // see comment above\r\n\t\t\t\t\t\t\tstoreValue(sp + 40, result);\r\n\t\t\t\t\t\t\tthis.mem.setUint8(sp + 48, 1);\r\n\t\t\t\t\t\t} catch (err) {\r\n\t\t\t\t\t\t\tsp = this._inst.exports.getsp() >>> 0; // see comment above\r\n\t\t\t\t\t\t\tstoreValue(sp + 40, err);\r\n\t\t\t\t\t\t\tthis.mem.setUint8(sp + 48, 0);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func valueNew(v ref, args []ref) (ref, bool)\r\n\t\t\t\t\t\"syscall/js.valueNew\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tconst v = loadValue(sp + 8);\r\n\t\t\t\t\t\t\tconst args = loadSliceOfValues(sp + 16);\r\n\t\t\t\t\t\t\tconst result = Reflect.construct(v, args);\r\n\t\t\t\t\t\t\tsp = this._inst.exports.getsp() >>> 0; // see comment above\r\n\t\t\t\t\t\t\tstoreValue(sp + 40, result);\r\n\t\t\t\t\t\t\tthis.mem.setUint8(sp + 48, 1);\r\n\t\t\t\t\t\t} catch (err) {\r\n\t\t\t\t\t\t\tsp = this._inst.exports.getsp() >>> 0; // see comment above\r\n\t\t\t\t\t\t\tstoreValue(sp + 40, err);\r\n\t\t\t\t\t\t\tthis.mem.setUint8(sp + 48, 0);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func valueLength(v ref) int\r\n\t\t\t\t\t\"syscall/js.valueLength\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tsetInt64(sp + 16, parseInt(loadValue(sp + 8).length));\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// valuePrepareString(v ref) (ref, int)\r\n\t\t\t\t\t\"syscall/js.valuePrepareString\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst str = encoder.encode(String(loadValue(sp + 8)));\r\n\t\t\t\t\t\tstoreValue(sp + 16, str);\r\n\t\t\t\t\t\tsetInt64(sp + 24, str.length);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// valueLoadString(v ref, b []byte)\r\n\t\t\t\t\t\"syscall/js.valueLoadString\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst str = loadValue(sp + 8);\r\n\t\t\t\t\t\tloadSlice(sp + 16).set(str);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func valueInstanceOf(v ref, t ref) bool\r\n\t\t\t\t\t\"syscall/js.valueInstanceOf\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tthis.mem.setUint8(sp + 24, (loadValue(sp + 8) instanceof loadValue(sp + 16)) ? 1 : 0);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func copyBytesToGo(dst []byte, src ref) (int, bool)\r\n\t\t\t\t\t\"syscall/js.copyBytesToGo\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst dst = loadSlice(sp + 8);\r\n\t\t\t\t\t\tconst src = loadValue(sp + 32);\r\n\t\t\t\t\t\tif (!(src instanceof Uint8Array || src instanceof Uint8ClampedArray)) {\r\n\t\t\t\t\t\t\tthis.mem.setUint8(sp + 48, 0);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconst toCopy = src.subarray(0, dst.length);\r\n\t\t\t\t\t\tdst.set(toCopy);\r\n\t\t\t\t\t\tsetInt64(sp + 40, toCopy.length);\r\n\t\t\t\t\t\tthis.mem.setUint8(sp + 48, 1);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// func copyBytesToJS(dst ref, src []byte) (int, bool)\r\n\t\t\t\t\t\"syscall/js.copyBytesToJS\": (sp) => {\r\n\t\t\t\t\t\tsp >>>= 0;\r\n\t\t\t\t\t\tconst dst = loadValue(sp + 8);\r\n\t\t\t\t\t\tconst src = loadSlice(sp + 16);\r\n\t\t\t\t\t\tif (!(dst instanceof Uint8Array || dst instanceof Uint8ClampedArray)) {\r\n\t\t\t\t\t\t\tthis.mem.setUint8(sp + 48, 0);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconst toCopy = src.subarray(0, dst.length);\r\n\t\t\t\t\t\tdst.set(toCopy);\r\n\t\t\t\t\t\tsetInt64(sp + 40, toCopy.length);\r\n\t\t\t\t\t\tthis.mem.setUint8(sp + 48, 1);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t\"debug\": (value) => {\r\n\t\t\t\t\t\tconsole.log(value);\r\n\t\t\t\t\t},\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tasync run(instance) {\r\n\t\t\tif (!(instance instanceof WebAssembly.Instance)) {\r\n\t\t\t\tthrow new Error(\"Go.run: WebAssembly.Instance expected\");\r\n\t\t\t}\r\n\t\t\tthis._inst = instance;\r\n\t\t\tthis.mem = new DataView(this._inst.exports.mem.buffer);\r\n\t\t\tthis._values = [ // JS values that Go currently has references to, indexed by reference id\r\n\t\t\t\tNaN,\r\n\t\t\t\t0,\r\n\t\t\t\tnull,\r\n\t\t\t\ttrue,\r\n\t\t\t\tfalse,\r\n\t\t\t\tglobal,\r\n\t\t\t\tthis,\r\n\t\t\t];\r\n\t\t\tthis._goRefCounts = new Array(this._values.length).fill(Infinity); // number of references that Go has to a JS value, indexed by reference id\r\n\t\t\tthis._ids = new Map([ // mapping from JS values to reference ids\r\n\t\t\t\t[0, 1],\r\n\t\t\t\t[null, 2],\r\n\t\t\t\t[true, 3],\r\n\t\t\t\t[false, 4],\r\n\t\t\t\t[global, 5],\r\n\t\t\t\t[this, 6],\r\n\t\t\t]);\r\n\t\t\tthis._idPool = []; // unused ids that have been garbage collected\r\n\t\t\tthis.exited = false; // whether the Go program has exited\r\n\r\n\t\t\t// Pass command line arguments and environment variables to WebAssembly by writing them to the linear memory.\r\n\t\t\tlet offset = 4096;\r\n\r\n\t\t\tconst strPtr = (str) => {\r\n\t\t\t\tconst ptr = offset;\r\n\t\t\t\tconst bytes = encoder.encode(str + \"\\0\");\r\n\t\t\t\tnew Uint8Array(this.mem.buffer, offset, bytes.length).set(bytes);\r\n\t\t\t\toffset += bytes.length;\r\n\t\t\t\tif (offset % 8 !== 0) {\r\n\t\t\t\t\toffset += 8 - (offset % 8);\r\n\t\t\t\t}\r\n\t\t\t\treturn ptr;\r\n\t\t\t};\r\n\r\n\t\t\tconst argc = this.argv.length;\r\n\r\n\t\t\tconst argvPtrs = [];\r\n\t\t\tthis.argv.forEach((arg) => {\r\n\t\t\t\targvPtrs.push(strPtr(arg));\r\n\t\t\t});\r\n\t\t\targvPtrs.push(0);\r\n\r\n\t\t\tconst keys = Object.keys(this.env).sort();\r\n\t\t\tkeys.forEach((key) => {\r\n\t\t\t\targvPtrs.push(strPtr(`${key}=${this.env[key]}`));\r\n\t\t\t});\r\n\t\t\targvPtrs.push(0);\r\n\r\n\t\t\tconst argv = offset;\r\n\t\t\targvPtrs.forEach((ptr) => {\r\n\t\t\t\tthis.mem.setUint32(offset, ptr, true);\r\n\t\t\t\tthis.mem.setUint32(offset + 4, 0, true);\r\n\t\t\t\toffset += 8;\r\n\t\t\t});\r\n\r\n\t\t\t// The linker guarantees global data starts from at least wasmMinDataAddr.\r\n\t\t\t// Keep in sync with cmd/link/internal/ld/data.go:wasmMinDataAddr.\r\n\t\t\tconst wasmMinDataAddr = 4096 + 8192;\r\n\t\t\tif (offset >= wasmMinDataAddr) {\r\n\t\t\t\tthrow new Error(\"total length of command line and environment variables exceeds limit\");\r\n\t\t\t}\r\n\r\n\t\t\tthis._inst.exports.run(argc, argv);\r\n\t\t\tif (this.exited) {\r\n\t\t\t\tthis._resolveExitPromise();\r\n\t\t\t}\r\n\t\t\tawait this._exitPromise;\r\n\t\t}\r\n\r\n\t\t_resume() {\r\n\t\t\tif (this.exited) {\r\n\t\t\t\tthrow new Error(\"Go program has already exited\");\r\n\t\t\t}\r\n\t\t\tthis._inst.exports.resume();\r\n\t\t\tif (this.exited) {\r\n\t\t\t\tthis._resolveExitPromise();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t_makeFuncWrapper(id) {\r\n\t\t\tconst go = this;\r\n\t\t\treturn function () {\r\n\t\t\t\tconst event = { id: id, this: this, args: arguments };\r\n\t\t\t\tgo._pendingEvent = event;\r\n\t\t\t\tgo._resume();\r\n\t\t\t\treturn event.result;\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tif (\r\n\t\ttypeof module !== \"undefined\" &&\r\n\t\tglobal.require &&\r\n\t\tglobal.require.main === module &&\r\n\t\tglobal.process &&\r\n\t\tglobal.process.versions &&\r\n\t\t!global.process.versions.electron\r\n\t) {\r\n\t\tif (process.argv.length < 3) {\r\n\t\t\tconsole.error(\"usage: go_js_wasm_exec [wasm binary] [arguments]\");\r\n\t\t\tprocess.exit(1);\r\n\t\t}\r\n\r\n\t\tconst go = new Go();\r\n\t\tgo.argv = process.argv.slice(2);\r\n\t\tgo.env = Object.assign({ TMPDIR: require(\"os\").tmpdir() }, process.env);\r\n\t\tgo.exit = process.exit;\r\n\t\tWebAssembly.instantiate(fs.readFileSync(process.argv[2]), go.importObject).then((result) => {\r\n\t\t\tprocess.on(\"exit\", (code) => { // Node.js exits if no event handler is pending\r\n\t\t\t\tif (code === 0 && !go.exited) {\r\n\t\t\t\t\t// deadlock, make Go print error and stack traces\r\n\t\t\t\t\tgo._pendingEvent = { id: 0 };\r\n\t\t\t\t\tgo._resume();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\treturn go.run(result.instance);\r\n\t\t}).catch((err) => {\r\n\t\t\tconsole.error(err);\r\n\t\t\tprocess.exit(1);\r\n\t\t});\r\n\t}\r\n})();\r\n","'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n(typeof window !== \"undefined\"\n ? window\n : {}\n).pdfjsWorker = require(\"./pdf.worker.js\");\n","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\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';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","module.exports = require('./lib/_stream_duplex.js');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","module.exports = require('./browser/algorithms.json')\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pdf-view.vue?vue&type=style&index=0&id=1245efad&prod&scoped=true&lang=css&\"","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* <replacement> */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\n\n\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n/*<replacement>*/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = \"1fd5\";","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\nvar nextTick\nfunction getNextTick () {\n if (nextTick) {\n return nextTick\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask\n } else if (global.setImmediate) {\n nextTick = global.setImmediate\n } else {\n nextTick = global.setTimeout\n }\n return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out)\n })\n }, function (e) {\n getNextTick()(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n return\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n DataView: require('./_typed-buffer').DataView\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n","module.exports = require('./lib/_stream_writable.js');\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' y: ' + this.y.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC JPoint Infinity>';\n return '<EC JPoint x: ' + this.x.toString(16, 2) +\n ' y: ' + this.y.toString(16, 2) +\n ' z: ' + this.z.toString(16, 2) + '>';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array<Byte>} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array<Byte>} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\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","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","exports.endianness = function () { return 'LE' };\n\nexports.hostname = function () {\n if (typeof location !== 'undefined') {\n return location.hostname\n }\n else return '';\n};\n\nexports.loadavg = function () { return [] };\n\nexports.uptime = function () { return 0 };\n\nexports.freemem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.totalmem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.cpus = function () { return [] };\n\nexports.type = function () { return 'Browser' };\n\nexports.release = function () {\n if (typeof navigator !== 'undefined') {\n return navigator.appVersion;\n }\n return '';\n};\n\nexports.networkInterfaces\n= exports.getNetworkInterfaces\n= function () { return {} };\n\nexports.arch = function () { return 'javascript' };\n\nexports.platform = function () { return 'browser' };\n\nexports.tmpdir = exports.tmpDir = function () {\n return '/tmp';\n};\n\nexports.EOL = '\\n';\n\nexports.homedir = function () {\n\treturn '/'\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' y: ' + this.y.fromRed().toString(16, 2) +\n ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/*<replacement>*/\n\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n/*<replacement>*/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*<replacement>*/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/*</replacement>*/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","module.exports = require('events').EventEmitter;\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array<Bytes>|Object} sig -\n* @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes\n* @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array<Bytes>} [sig.Rencoded] - R point encoded\n* @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* <replacement> */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\n\n\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n/*<replacement>*/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = Buffer.from(match[2], 'hex')\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1]\n return {\n tag: tag,\n data: decrypted\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\n *\n * Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf.worker\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf.worker\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf.worker\"] = root.pdfjsWorker = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__w_pdfjs_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__w_pdfjs_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__w_pdfjs_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__w_pdfjs_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__w_pdfjs_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__w_pdfjs_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __w_pdfjs_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__w_pdfjs_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__w_pdfjs_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__w_pdfjs_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__w_pdfjs_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __w_pdfjs_require__(__w_pdfjs_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"WorkerMessageHandler\", {\n enumerable: true,\n get: function () {\n return _worker.WorkerMessageHandler;\n }\n});\n\nvar _worker = __w_pdfjs_require__(1);\n\nconst pdfjsVersion = '2.6.347';\nconst pdfjsBuild = '3be9c65f';\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.WorkerMessageHandler = exports.WorkerTask = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _pdf_manager = __w_pdfjs_require__(6);\n\nvar _writer = __w_pdfjs_require__(27);\n\nvar _is_node = __w_pdfjs_require__(4);\n\nvar _message_handler = __w_pdfjs_require__(46);\n\nvar _worker_stream = __w_pdfjs_require__(47);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nclass WorkerTask {\n constructor(name) {\n this.name = name;\n this.terminated = false;\n this._capability = (0, _util.createPromiseCapability)();\n }\n\n get finished() {\n return this._capability.promise;\n }\n\n finish() {\n this._capability.resolve();\n }\n\n terminate() {\n this.terminated = true;\n }\n\n ensureNotTerminated() {\n if (this.terminated) {\n throw new Error(\"Worker task was terminated\");\n }\n }\n\n}\n\nexports.WorkerTask = WorkerTask;\n\nclass WorkerMessageHandler {\n static setup(handler, port) {\n var testMessageProcessed = false;\n handler.on(\"test\", function wphSetupTest(data) {\n if (testMessageProcessed) {\n return;\n }\n\n testMessageProcessed = true;\n\n if (!(data instanceof Uint8Array)) {\n handler.send(\"test\", null);\n return;\n }\n\n const supportTransfers = data[0] === 255;\n handler.postMessageTransfers = supportTransfers;\n handler.send(\"test\", {\n supportTransfers\n });\n });\n handler.on(\"configure\", function wphConfigure(data) {\n (0, _util.setVerbosityLevel)(data.verbosity);\n });\n handler.on(\"GetDocRequest\", function wphSetupDoc(data) {\n return WorkerMessageHandler.createDocumentHandler(data, port);\n });\n }\n\n static createDocumentHandler(docParams, port) {\n var pdfManager;\n var terminated = false;\n var cancelXHRs = null;\n var WorkerTasks = [];\n const verbosity = (0, _util.getVerbosityLevel)();\n const apiVersion = docParams.apiVersion;\n const workerVersion = '2.6.347';\n\n if (apiVersion !== workerVersion) {\n throw new Error(`The API version \"${apiVersion}\" does not match ` + `the Worker version \"${workerVersion}\".`);\n }\n\n const enumerableProperties = [];\n\n for (const property in []) {\n enumerableProperties.push(property);\n }\n\n if (enumerableProperties.length) {\n throw new Error(\"The `Array.prototype` contains unexpected enumerable properties: \" + enumerableProperties.join(\", \") + \"; thus breaking e.g. `for...in` iteration of `Array`s.\");\n }\n\n if (typeof ReadableStream === \"undefined\" || typeof Promise.allSettled === \"undefined\") {\n throw new Error(\"The browser/environment lacks native support for critical \" + \"functionality used by the PDF.js library (e.g. \" + \"`ReadableStream` and/or `Promise.allSettled`); \" + \"please use an ES5-compatible build instead.\");\n }\n\n var docId = docParams.docId;\n var docBaseUrl = docParams.docBaseUrl;\n var workerHandlerName = docParams.docId + \"_worker\";\n var handler = new _message_handler.MessageHandler(workerHandlerName, docId, port);\n handler.postMessageTransfers = docParams.postMessageTransfers;\n\n function ensureNotTerminated() {\n if (terminated) {\n throw new Error(\"Worker was terminated\");\n }\n }\n\n function startWorkerTask(task) {\n WorkerTasks.push(task);\n }\n\n function finishWorkerTask(task) {\n task.finish();\n var i = WorkerTasks.indexOf(task);\n WorkerTasks.splice(i, 1);\n }\n\n async function loadDocument(recoveryMode) {\n await pdfManager.ensureDoc(\"checkHeader\");\n await pdfManager.ensureDoc(\"parseStartXRef\");\n await pdfManager.ensureDoc(\"parse\", [recoveryMode]);\n\n if (!recoveryMode) {\n await pdfManager.ensureDoc(\"checkFirstPage\");\n }\n\n const [numPages, fingerprint] = await Promise.all([pdfManager.ensureDoc(\"numPages\"), pdfManager.ensureDoc(\"fingerprint\")]);\n return {\n numPages,\n fingerprint\n };\n }\n\n function getPdfManager(data, evaluatorOptions) {\n var pdfManagerCapability = (0, _util.createPromiseCapability)();\n let newPdfManager;\n var source = data.source;\n\n if (source.data) {\n try {\n newPdfManager = new _pdf_manager.LocalPdfManager(docId, source.data, source.password, evaluatorOptions, docBaseUrl);\n pdfManagerCapability.resolve(newPdfManager);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n }\n\n return pdfManagerCapability.promise;\n }\n\n var pdfStream,\n cachedChunks = [];\n\n try {\n pdfStream = new _worker_stream.PDFWorkerStream(handler);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n return pdfManagerCapability.promise;\n }\n\n var fullRequest = pdfStream.getFullReader();\n fullRequest.headersReady.then(function () {\n if (!fullRequest.isRangeSupported) {\n return;\n }\n\n var disableAutoFetch = source.disableAutoFetch || fullRequest.isStreamingSupported;\n newPdfManager = new _pdf_manager.NetworkPdfManager(docId, pdfStream, {\n msgHandler: handler,\n password: source.password,\n length: fullRequest.contentLength,\n disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize\n }, evaluatorOptions, docBaseUrl);\n\n for (let i = 0; i < cachedChunks.length; i++) {\n newPdfManager.sendProgressiveData(cachedChunks[i]);\n }\n\n cachedChunks = [];\n pdfManagerCapability.resolve(newPdfManager);\n cancelXHRs = null;\n }).catch(function (reason) {\n pdfManagerCapability.reject(reason);\n cancelXHRs = null;\n });\n var loaded = 0;\n\n var flushChunks = function () {\n var pdfFile = (0, _util.arraysToBytes)(cachedChunks);\n\n if (source.length && pdfFile.length !== source.length) {\n (0, _util.warn)(\"reported HTTP length is different from actual\");\n }\n\n try {\n newPdfManager = new _pdf_manager.LocalPdfManager(docId, pdfFile, source.password, evaluatorOptions, docBaseUrl);\n pdfManagerCapability.resolve(newPdfManager);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n }\n\n cachedChunks = [];\n };\n\n var readPromise = new Promise(function (resolve, reject) {\n var readChunk = function ({\n value,\n done\n }) {\n try {\n ensureNotTerminated();\n\n if (done) {\n if (!newPdfManager) {\n flushChunks();\n }\n\n cancelXHRs = null;\n return;\n }\n\n loaded += (0, _util.arrayByteLength)(value);\n\n if (!fullRequest.isStreamingSupported) {\n handler.send(\"DocProgress\", {\n loaded,\n total: Math.max(loaded, fullRequest.contentLength || 0)\n });\n }\n\n if (newPdfManager) {\n newPdfManager.sendProgressiveData(value);\n } else {\n cachedChunks.push(value);\n }\n\n fullRequest.read().then(readChunk, reject);\n } catch (e) {\n reject(e);\n }\n };\n\n fullRequest.read().then(readChunk, reject);\n });\n readPromise.catch(function (e) {\n pdfManagerCapability.reject(e);\n cancelXHRs = null;\n });\n\n cancelXHRs = function (reason) {\n pdfStream.cancelAllRequests(reason);\n };\n\n return pdfManagerCapability.promise;\n }\n\n function setupDoc(data) {\n function onSuccess(doc) {\n ensureNotTerminated();\n handler.send(\"GetDoc\", {\n pdfInfo: doc\n });\n }\n\n function onFailure(ex) {\n ensureNotTerminated();\n\n if (ex instanceof _util.PasswordException) {\n var task = new WorkerTask(`PasswordException: response ${ex.code}`);\n startWorkerTask(task);\n handler.sendWithPromise(\"PasswordRequest\", ex).then(function ({\n password\n }) {\n finishWorkerTask(task);\n pdfManager.updatePassword(password);\n pdfManagerReady();\n }).catch(function () {\n finishWorkerTask(task);\n handler.send(\"DocException\", ex);\n });\n } else if (ex instanceof _util.InvalidPDFException || ex instanceof _util.MissingPDFException || ex instanceof _util.UnexpectedResponseException || ex instanceof _util.UnknownErrorException) {\n handler.send(\"DocException\", ex);\n } else {\n handler.send(\"DocException\", new _util.UnknownErrorException(ex.message, ex.toString()));\n }\n }\n\n function pdfManagerReady() {\n ensureNotTerminated();\n loadDocument(false).then(onSuccess, function (reason) {\n ensureNotTerminated();\n\n if (!(reason instanceof _core_utils.XRefParseException)) {\n onFailure(reason);\n return;\n }\n\n pdfManager.requestLoadedStream();\n pdfManager.onLoadedStream().then(function () {\n ensureNotTerminated();\n loadDocument(true).then(onSuccess, onFailure);\n });\n });\n }\n\n ensureNotTerminated();\n var evaluatorOptions = {\n maxImageSize: data.maxImageSize,\n disableFontFace: data.disableFontFace,\n ignoreErrors: data.ignoreErrors,\n isEvalSupported: data.isEvalSupported,\n fontExtraProperties: data.fontExtraProperties\n };\n getPdfManager(data, evaluatorOptions).then(function (newPdfManager) {\n if (terminated) {\n newPdfManager.terminate(new _util.AbortException(\"Worker was terminated.\"));\n throw new Error(\"Worker was terminated\");\n }\n\n pdfManager = newPdfManager;\n pdfManager.onLoadedStream().then(function (stream) {\n handler.send(\"DataLoaded\", {\n length: stream.bytes.byteLength\n });\n });\n }).then(pdfManagerReady, onFailure);\n }\n\n handler.on(\"GetPage\", function wphSetupGetPage(data) {\n return pdfManager.getPage(data.pageIndex).then(function (page) {\n return Promise.all([pdfManager.ensure(page, \"rotate\"), pdfManager.ensure(page, \"ref\"), pdfManager.ensure(page, \"userUnit\"), pdfManager.ensure(page, \"view\")]).then(function ([rotate, ref, userUnit, view]) {\n return {\n rotate,\n ref,\n userUnit,\n view\n };\n });\n });\n });\n handler.on(\"GetPageIndex\", function wphSetupGetPageIndex({\n ref\n }) {\n const pageRef = _primitives.Ref.get(ref.num, ref.gen);\n\n return pdfManager.ensureCatalog(\"getPageIndex\", [pageRef]);\n });\n handler.on(\"GetDestinations\", function wphSetupGetDestinations(data) {\n return pdfManager.ensureCatalog(\"destinations\");\n });\n handler.on(\"GetDestination\", function wphSetupGetDestination(data) {\n return pdfManager.ensureCatalog(\"getDestination\", [data.id]);\n });\n handler.on(\"GetPageLabels\", function wphSetupGetPageLabels(data) {\n return pdfManager.ensureCatalog(\"pageLabels\");\n });\n handler.on(\"GetPageLayout\", function wphSetupGetPageLayout(data) {\n return pdfManager.ensureCatalog(\"pageLayout\");\n });\n handler.on(\"GetPageMode\", function wphSetupGetPageMode(data) {\n return pdfManager.ensureCatalog(\"pageMode\");\n });\n handler.on(\"GetViewerPreferences\", function (data) {\n return pdfManager.ensureCatalog(\"viewerPreferences\");\n });\n handler.on(\"GetOpenAction\", function (data) {\n return pdfManager.ensureCatalog(\"openAction\");\n });\n handler.on(\"GetAttachments\", function wphSetupGetAttachments(data) {\n return pdfManager.ensureCatalog(\"attachments\");\n });\n handler.on(\"GetJavaScript\", function wphSetupGetJavaScript(data) {\n return pdfManager.ensureCatalog(\"javaScript\");\n });\n handler.on(\"GetOutline\", function wphSetupGetOutline(data) {\n return pdfManager.ensureCatalog(\"documentOutline\");\n });\n handler.on(\"GetOptionalContentConfig\", function (data) {\n return pdfManager.ensureCatalog(\"optionalContentConfig\");\n });\n handler.on(\"GetPermissions\", function (data) {\n return pdfManager.ensureCatalog(\"permissions\");\n });\n handler.on(\"GetMetadata\", function wphSetupGetMetadata(data) {\n return Promise.all([pdfManager.ensureDoc(\"documentInfo\"), pdfManager.ensureCatalog(\"metadata\")]);\n });\n handler.on(\"GetData\", function wphSetupGetData(data) {\n pdfManager.requestLoadedStream();\n return pdfManager.onLoadedStream().then(function (stream) {\n return stream.bytes;\n });\n });\n handler.on(\"GetStats\", function wphSetupGetStats(data) {\n return pdfManager.ensureXRef(\"stats\");\n });\n handler.on(\"GetAnnotations\", function ({\n pageIndex,\n intent\n }) {\n return pdfManager.getPage(pageIndex).then(function (page) {\n return page.getAnnotationsData(intent);\n });\n });\n handler.on(\"SaveDocument\", function ({\n numPages,\n annotationStorage,\n filename\n }) {\n pdfManager.requestLoadedStream();\n const promises = [pdfManager.onLoadedStream()];\n const document = pdfManager.pdfDocument;\n\n for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {\n promises.push(pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(`Save: page ${pageIndex}`);\n return page.save(handler, task, annotationStorage);\n }));\n }\n\n return Promise.all(promises).then(([stream, ...refs]) => {\n let newRefs = [];\n\n for (const ref of refs) {\n newRefs = ref.filter(x => x !== null).reduce((a, b) => a.concat(b), newRefs);\n }\n\n if (newRefs.length === 0) {\n return stream.bytes;\n }\n\n const xref = document.xref;\n let newXrefInfo = Object.create(null);\n\n if (xref.trailer) {\n const _info = Object.create(null);\n\n const xrefInfo = xref.trailer.get(\"Info\") || null;\n\n if (xrefInfo) {\n xrefInfo.forEach((key, value) => {\n if ((0, _util.isString)(key) && (0, _util.isString)(value)) {\n _info[key] = (0, _util.stringToPDFString)(value);\n }\n });\n }\n\n newXrefInfo = {\n rootRef: xref.trailer.getRaw(\"Root\") || null,\n encrypt: xref.trailer.getRaw(\"Encrypt\") || null,\n newRef: xref.getNewRef(),\n infoRef: xref.trailer.getRaw(\"Info\") || null,\n info: _info,\n fileIds: xref.trailer.getRaw(\"ID\") || null,\n startXRef: document.startXRef,\n filename\n };\n }\n\n xref.resetNewRef();\n return (0, _writer.incrementalUpdate)(stream.bytes, newXrefInfo, newRefs);\n });\n });\n handler.on(\"GetOperatorList\", function wphSetupRenderPage(data, sink) {\n var pageIndex = data.pageIndex;\n pdfManager.getPage(pageIndex).then(function (page) {\n var task = new WorkerTask(`GetOperatorList: page ${pageIndex}`);\n startWorkerTask(task);\n const start = verbosity >= _util.VerbosityLevel.INFOS ? Date.now() : 0;\n page.getOperatorList({\n handler,\n sink,\n task,\n intent: data.intent,\n renderInteractiveForms: data.renderInteractiveForms,\n annotationStorage: data.annotationStorage\n }).then(function (operatorListInfo) {\n finishWorkerTask(task);\n\n if (start) {\n (0, _util.info)(`page=${pageIndex + 1} - getOperatorList: time=` + `${Date.now() - start}ms, len=${operatorListInfo.length}`);\n }\n\n sink.close();\n }, function (reason) {\n finishWorkerTask(task);\n\n if (task.terminated) {\n return;\n }\n\n handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorOperatorList\n });\n sink.error(reason);\n });\n });\n }, this);\n handler.on(\"GetTextContent\", function wphExtractText(data, sink) {\n var pageIndex = data.pageIndex;\n\n sink.onPull = function (desiredSize) {};\n\n sink.onCancel = function (reason) {};\n\n pdfManager.getPage(pageIndex).then(function (page) {\n var task = new WorkerTask(\"GetTextContent: page \" + pageIndex);\n startWorkerTask(task);\n const start = verbosity >= _util.VerbosityLevel.INFOS ? Date.now() : 0;\n page.extractTextContent({\n handler,\n task,\n sink,\n normalizeWhitespace: data.normalizeWhitespace,\n combineTextItems: data.combineTextItems\n }).then(function () {\n finishWorkerTask(task);\n\n if (start) {\n (0, _util.info)(`page=${pageIndex + 1} - getTextContent: time=` + `${Date.now() - start}ms`);\n }\n\n sink.close();\n }, function (reason) {\n finishWorkerTask(task);\n\n if (task.terminated) {\n return;\n }\n\n sink.error(reason);\n });\n });\n });\n handler.on(\"FontFallback\", function (data) {\n return pdfManager.fontFallback(data.id, handler);\n });\n handler.on(\"Cleanup\", function wphCleanup(data) {\n return pdfManager.cleanup(true);\n });\n handler.on(\"Terminate\", function wphTerminate(data) {\n terminated = true;\n const waitOn = [];\n\n if (pdfManager) {\n pdfManager.terminate(new _util.AbortException(\"Worker was terminated.\"));\n const cleanupPromise = pdfManager.cleanup();\n waitOn.push(cleanupPromise);\n pdfManager = null;\n } else {\n (0, _primitives.clearPrimitiveCaches)();\n }\n\n if (cancelXHRs) {\n cancelXHRs(new _util.AbortException(\"Worker was terminated.\"));\n }\n\n WorkerTasks.forEach(function (task) {\n waitOn.push(task.finished);\n task.terminate();\n });\n return Promise.all(waitOn).then(function () {\n handler.destroy();\n handler = null;\n });\n });\n handler.on(\"Ready\", function wphReady(data) {\n setupDoc(docParams);\n docParams = null;\n });\n return workerHandlerName;\n }\n\n static initializeFromPort(port) {\n var handler = new _message_handler.MessageHandler(\"worker\", \"main\", port);\n WorkerMessageHandler.setup(handler, port);\n handler.send(\"ready\", null);\n }\n\n}\n\nexports.WorkerMessageHandler = WorkerMessageHandler;\n\nfunction isMessagePort(maybePort) {\n return typeof maybePort.postMessage === \"function\" && \"onmessage\" in maybePort;\n}\n\nif (typeof window === \"undefined\" && !_is_node.isNodeJS && typeof self !== \"undefined\" && isMessagePort(self)) {\n WorkerMessageHandler.initializeFromPort(self);\n}\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.arrayByteLength = arrayByteLength;\nexports.arraysToBytes = arraysToBytes;\nexports.assert = assert;\nexports.bytesToString = bytesToString;\nexports.createPromiseCapability = createPromiseCapability;\nexports.escapeString = escapeString;\nexports.getModificationDate = getModificationDate;\nexports.getVerbosityLevel = getVerbosityLevel;\nexports.info = info;\nexports.isArrayBuffer = isArrayBuffer;\nexports.isArrayEqual = isArrayEqual;\nexports.isBool = isBool;\nexports.isNum = isNum;\nexports.isString = isString;\nexports.isSameOrigin = isSameOrigin;\nexports.createValidAbsoluteUrl = createValidAbsoluteUrl;\nexports.removeNullCharacters = removeNullCharacters;\nexports.setVerbosityLevel = setVerbosityLevel;\nexports.shadow = shadow;\nexports.string32 = string32;\nexports.stringToBytes = stringToBytes;\nexports.stringToPDFString = stringToPDFString;\nexports.stringToUTF8String = stringToUTF8String;\nexports.utf8StringToString = utf8StringToString;\nexports.warn = warn;\nexports.unreachable = unreachable;\nexports.IsEvalSupportedCached = exports.IsLittleEndianCached = exports.createObjectURL = exports.FormatError = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.MissingPDFException = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = exports.BaseException = void 0;\n\n__w_pdfjs_require__(3);\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nexports.IDENTITY_MATRIX = IDENTITY_MATRIX;\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nexports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nexports.PermissionFlag = PermissionFlag;\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nexports.TextRenderingMode = TextRenderingMode;\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nexports.ImageKind = ImageKind;\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n};\nexports.AnnotationType = AnnotationType;\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\"\n};\nexports.AnnotationStateModelType = AnnotationStateModelType;\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\"\n};\nexports.AnnotationMarkedState = AnnotationMarkedState;\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\"\n};\nexports.AnnotationReviewState = AnnotationReviewState;\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nexports.AnnotationReplyType = AnnotationReplyType;\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nexports.AnnotationFlag = AnnotationFlag;\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nexports.AnnotationFieldFlag = AnnotationFieldFlag;\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nexports.AnnotationBorderStyleType = AnnotationBorderStyleType;\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\"\n};\nexports.StreamType = StreamType;\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\"\n};\nexports.FontType = FontType;\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nexports.VerbosityLevel = VerbosityLevel;\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2\n};\nexports.CMapCompressionType = CMapCompressionType;\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91\n};\nexports.OPS = OPS;\nconst UNSUPPORTED_FEATURES = {\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\"\n};\nexports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nexports.PasswordResponses = PasswordResponses;\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\nfunction isSameOrigin(baseUrl, otherUrl) {\n let base;\n\n try {\n base = new URL(baseUrl);\n\n if (!base.origin || base.origin === \"null\") {\n return false;\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n\n default:\n return false;\n }\n}\n\nfunction createValidAbsoluteUrl(url, baseUrl) {\n if (!url) {\n return null;\n }\n\n try {\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {}\n\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false\n });\n return value;\n}\n\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n\n this.message = message;\n this.name = this.constructor.name;\n }\n\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\n\nexports.BaseException = BaseException;\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg);\n this.code = code;\n }\n\n}\n\nexports.PasswordException = PasswordException;\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg);\n this.details = details;\n }\n\n}\n\nexports.UnknownErrorException = UnknownErrorException;\n\nclass InvalidPDFException extends BaseException {}\n\nexports.InvalidPDFException = InvalidPDFException;\n\nclass MissingPDFException extends BaseException {}\n\nexports.MissingPDFException = MissingPDFException;\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg);\n this.status = status;\n }\n\n}\n\nexports.UnexpectedResponseException = UnexpectedResponseException;\n\nclass FormatError extends BaseException {}\n\nexports.FormatError = FormatError;\n\nclass AbortException extends BaseException {}\n\nexports.AbortException = AbortException;\nconst NullCharactersRegExp = /\\x00/g;\n\nfunction removeNullCharacters(str) {\n if (typeof str !== \"string\") {\n warn(\"The argument for removeNullCharacters must be a string.\");\n return str;\n }\n\n return str.replace(NullCharactersRegExp, \"\");\n}\n\nfunction bytesToString(bytes) {\n assert(bytes !== null && typeof bytes === \"object\" && bytes.length !== undefined, \"Invalid argument for bytesToString\");\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n\n const strBuf = [];\n\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n assert(typeof str === \"string\", \"Invalid argument for stringToBytes\");\n const length = str.length;\n const bytes = new Uint8Array(length);\n\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n\n return bytes;\n}\n\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n\n assert(arr.byteLength !== undefined, \"arrayByteLength - invalid argument.\");\n return arr.byteLength;\n}\n\nfunction arraysToBytes(arr) {\n const length = arr.length;\n\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n\n let resultLength = 0;\n\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n\n let pos = 0;\n const data = new Uint8Array(resultLength);\n\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n\n return data;\n}\n\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\n\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\n\nconst IsLittleEndianCached = {\n get value() {\n return shadow(this, \"value\", isLittleEndian());\n }\n\n};\nexports.IsLittleEndianCached = IsLittleEndianCached;\n\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch (e) {\n return false;\n }\n}\n\nconst IsEvalSupportedCached = {\n get value() {\n return shadow(this, \"value\", isEvalSupported());\n }\n\n};\nexports.IsEvalSupportedCached = IsEvalSupportedCached;\nconst rgbBuf = [\"rgb(\", 0, \",\", 0, \",\", 0, \")\"];\n\nclass Util {\n static makeCssRgb(r, g, b) {\n rgbBuf[1] = r;\n rgbBuf[3] = g;\n rgbBuf[5] = b;\n return rgbBuf.join(\"\");\n }\n\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n\n static apply3dTransform(m, v) {\n return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]];\n }\n\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n static normalizeRect(rect) {\n const r = rect.slice(0);\n\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n\n return r;\n }\n\n static intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n const result = [];\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return null;\n }\n\n if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return null;\n }\n\n return result;\n }\n\n}\n\nexports.Util = Util;\nconst PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C, 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160, 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC];\n\nfunction stringToPDFString(str) {\n const length = str.length,\n strBuf = [];\n\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n for (let i = 2; i < length; i += 2) {\n strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1)));\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n for (let i = 2; i < length; i += 2) {\n strBuf.push(String.fromCharCode(str.charCodeAt(i + 1) << 8 | str.charCodeAt(i)));\n }\n } else {\n for (let i = 0; i < length; ++i) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n }\n\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n return str.replace(/([\\(\\)\\\\])/g, \"\\\\$1\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isBool(v) {\n return typeof v === \"boolean\";\n}\n\nfunction isNum(v) {\n return typeof v === \"number\";\n}\n\nfunction isString(v) {\n return typeof v === \"string\";\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n\n return arr1.every(function (element, index) {\n return element === arr2[index];\n });\n}\n\nfunction getModificationDate(date = new Date(Date.now())) {\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), (date.getUTCDate() + 1).toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\n\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n }\n\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nconst createObjectURL = function createObjectURLClosure() {\n const digits = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n return function createObjectURL(data, contentType, forceDataSchema = false) {\n if (!forceDataSchema && URL.createObjectURL) {\n const blob = new Blob([data], {\n type: contentType\n });\n return URL.createObjectURL(blob);\n }\n\n let buffer = `data:${contentType};base64,`;\n\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const b1 = data[i] & 0xff;\n const b2 = data[i + 1] & 0xff;\n const b3 = data[i + 2] & 0xff;\n const d1 = b1 >> 2,\n d2 = (b1 & 3) << 4 | b2 >> 4;\n const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;\n const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n\n return buffer;\n };\n}();\n\nexports.createObjectURL = createObjectURL;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _is_node = __w_pdfjs_require__(4);\n\n;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isNodeJS = void 0;\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nexports.isNodeJS = isNodeJS;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.clearPrimitiveCaches = clearPrimitiveCaches;\nexports.isEOF = isEOF;\nexports.isCmd = isCmd;\nexports.isDict = isDict;\nexports.isName = isName;\nexports.isRef = isRef;\nexports.isRefsEqual = isRefsEqual;\nexports.isStream = isStream;\nexports.RefSetCache = exports.RefSet = exports.Ref = exports.Name = exports.Dict = exports.Cmd = exports.EOF = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar EOF = {};\nexports.EOF = EOF;\n\nvar Name = function NameClosure() {\n let nameCache = Object.create(null);\n\n function Name(name) {\n this.name = name;\n }\n\n Name.prototype = {};\n\n Name.get = function Name_get(name) {\n var nameValue = nameCache[name];\n return nameValue ? nameValue : nameCache[name] = new Name(name);\n };\n\n Name._clearCache = function () {\n nameCache = Object.create(null);\n };\n\n return Name;\n}();\n\nexports.Name = Name;\n\nvar Cmd = function CmdClosure() {\n let cmdCache = Object.create(null);\n\n function Cmd(cmd) {\n this.cmd = cmd;\n }\n\n Cmd.prototype = {};\n\n Cmd.get = function Cmd_get(cmd) {\n var cmdValue = cmdCache[cmd];\n return cmdValue ? cmdValue : cmdCache[cmd] = new Cmd(cmd);\n };\n\n Cmd._clearCache = function () {\n cmdCache = Object.create(null);\n };\n\n return Cmd;\n}();\n\nexports.Cmd = Cmd;\n\nvar Dict = function DictClosure() {\n var nonSerializable = function nonSerializableClosure() {\n return nonSerializable;\n };\n\n function Dict(xref) {\n this._map = Object.create(null);\n this.xref = xref;\n this.objId = null;\n this.suppressEncryption = false;\n this.__nonSerializable__ = nonSerializable;\n }\n\n Dict.prototype = {\n assignXref: function Dict_assignXref(newXref) {\n this.xref = newXref;\n },\n\n get size() {\n return Object.keys(this._map).length;\n },\n\n get(key1, key2, key3) {\n let value = this._map[key1];\n\n if (value === undefined && key2 !== undefined) {\n value = this._map[key2];\n\n if (value === undefined && key3 !== undefined) {\n value = this._map[key3];\n }\n }\n\n if (value instanceof Ref && this.xref) {\n return this.xref.fetch(value, this.suppressEncryption);\n }\n\n return value;\n },\n\n async getAsync(key1, key2, key3) {\n let value = this._map[key1];\n\n if (value === undefined && key2 !== undefined) {\n value = this._map[key2];\n\n if (value === undefined && key3 !== undefined) {\n value = this._map[key3];\n }\n }\n\n if (value instanceof Ref && this.xref) {\n return this.xref.fetchAsync(value, this.suppressEncryption);\n }\n\n return value;\n },\n\n getArray(key1, key2, key3) {\n let value = this.get(key1, key2, key3);\n\n if (!Array.isArray(value) || !this.xref) {\n return value;\n }\n\n value = value.slice();\n\n for (let i = 0, ii = value.length; i < ii; i++) {\n if (!(value[i] instanceof Ref)) {\n continue;\n }\n\n value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n }\n\n return value;\n },\n\n getRaw: function Dict_getRaw(key) {\n return this._map[key];\n },\n getKeys: function Dict_getKeys() {\n return Object.keys(this._map);\n },\n getRawValues: function Dict_getRawValues() {\n return Object.values(this._map);\n },\n set: function Dict_set(key, value) {\n this._map[key] = value;\n },\n has: function Dict_has(key) {\n return this._map[key] !== undefined;\n },\n forEach: function Dict_forEach(callback) {\n for (var key in this._map) {\n callback(key, this.get(key));\n }\n }\n };\n Dict.empty = new Dict(null);\n\n Dict.merge = function ({\n xref,\n dictArray,\n mergeSubDicts = false\n }) {\n const mergedDict = new Dict(xref);\n\n if (!mergeSubDicts) {\n for (const dict of dictArray) {\n if (!(dict instanceof Dict)) {\n continue;\n }\n\n for (const [key, value] of Object.entries(dict._map)) {\n if (mergedDict._map[key] === undefined) {\n mergedDict._map[key] = value;\n }\n }\n }\n\n return mergedDict.size > 0 ? mergedDict : Dict.empty;\n }\n\n const properties = new Map();\n\n for (const dict of dictArray) {\n if (!(dict instanceof Dict)) {\n continue;\n }\n\n for (const [key, value] of Object.entries(dict._map)) {\n let property = properties.get(key);\n\n if (property === undefined) {\n property = [];\n properties.set(key, property);\n }\n\n property.push(value);\n }\n }\n\n for (const [name, values] of properties) {\n if (values.length === 1 || !(values[0] instanceof Dict)) {\n mergedDict._map[name] = values[0];\n continue;\n }\n\n const subDict = new Dict(xref);\n\n for (const dict of values) {\n if (!(dict instanceof Dict)) {\n continue;\n }\n\n for (const [key, value] of Object.entries(dict._map)) {\n if (subDict._map[key] === undefined) {\n subDict._map[key] = value;\n }\n }\n }\n\n if (subDict.size > 0) {\n mergedDict._map[name] = subDict;\n }\n }\n\n properties.clear();\n return mergedDict.size > 0 ? mergedDict : Dict.empty;\n };\n\n return Dict;\n}();\n\nexports.Dict = Dict;\n\nvar Ref = function RefClosure() {\n let refCache = Object.create(null);\n\n function Ref(num, gen) {\n this.num = num;\n this.gen = gen;\n }\n\n Ref.prototype = {\n toString: function Ref_toString() {\n if (this.gen === 0) {\n return `${this.num}R`;\n }\n\n return `${this.num}R${this.gen}`;\n }\n };\n\n Ref.get = function (num, gen) {\n const key = gen === 0 ? `${num}R` : `${num}R${gen}`;\n const refValue = refCache[key];\n return refValue ? refValue : refCache[key] = new Ref(num, gen);\n };\n\n Ref._clearCache = function () {\n refCache = Object.create(null);\n };\n\n return Ref;\n}();\n\nexports.Ref = Ref;\n\nclass RefSet {\n constructor() {\n this._set = new Set();\n }\n\n has(ref) {\n return this._set.has(ref.toString());\n }\n\n put(ref) {\n this._set.add(ref.toString());\n }\n\n remove(ref) {\n this._set.delete(ref.toString());\n }\n\n}\n\nexports.RefSet = RefSet;\n\nclass RefSetCache {\n constructor() {\n this._map = new Map();\n }\n\n get size() {\n return this._map.size;\n }\n\n get(ref) {\n return this._map.get(ref.toString());\n }\n\n has(ref) {\n return this._map.has(ref.toString());\n }\n\n put(ref, obj) {\n this._map.set(ref.toString(), obj);\n }\n\n putAlias(ref, aliasRef) {\n this._map.set(ref.toString(), this.get(aliasRef));\n }\n\n forEach(callback) {\n for (const value of this._map.values()) {\n callback(value);\n }\n }\n\n clear() {\n this._map.clear();\n }\n\n}\n\nexports.RefSetCache = RefSetCache;\n\nfunction isEOF(v) {\n return v === EOF;\n}\n\nfunction isName(v, name) {\n return v instanceof Name && (name === undefined || v.name === name);\n}\n\nfunction isCmd(v, cmd) {\n return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n return v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type));\n}\n\nfunction isRef(v) {\n return v instanceof Ref;\n}\n\nfunction isRefsEqual(v1, v2) {\n return v1.num === v2.num && v1.gen === v2.gen;\n}\n\nfunction isStream(v) {\n return typeof v === \"object\" && v !== null && v.getBytes !== undefined;\n}\n\nfunction clearPrimitiveCaches() {\n Cmd._clearCache();\n\n Name._clearCache();\n\n Ref._clearCache();\n}\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NetworkPdfManager = exports.LocalPdfManager = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _chunked_stream = __w_pdfjs_require__(7);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _document = __w_pdfjs_require__(9);\n\nvar _stream = __w_pdfjs_require__(12);\n\nclass BasePdfManager {\n constructor() {\n if (this.constructor === BasePdfManager) {\n (0, _util.unreachable)(\"Cannot initialize BasePdfManager.\");\n }\n }\n\n get docId() {\n return this._docId;\n }\n\n get password() {\n return this._password;\n }\n\n get docBaseUrl() {\n let docBaseUrl = null;\n\n if (this._docBaseUrl) {\n const absoluteUrl = (0, _util.createValidAbsoluteUrl)(this._docBaseUrl);\n\n if (absoluteUrl) {\n docBaseUrl = absoluteUrl.href;\n } else {\n (0, _util.warn)(`Invalid absolute docBaseUrl: \"${this._docBaseUrl}\".`);\n }\n }\n\n return (0, _util.shadow)(this, \"docBaseUrl\", docBaseUrl);\n }\n\n onLoadedStream() {\n (0, _util.unreachable)(\"Abstract method `onLoadedStream` called\");\n }\n\n ensureDoc(prop, args) {\n return this.ensure(this.pdfDocument, prop, args);\n }\n\n ensureXRef(prop, args) {\n return this.ensure(this.pdfDocument.xref, prop, args);\n }\n\n ensureCatalog(prop, args) {\n return this.ensure(this.pdfDocument.catalog, prop, args);\n }\n\n getPage(pageIndex) {\n return this.pdfDocument.getPage(pageIndex);\n }\n\n fontFallback(id, handler) {\n return this.pdfDocument.fontFallback(id, handler);\n }\n\n cleanup(manuallyTriggered = false) {\n return this.pdfDocument.cleanup(manuallyTriggered);\n }\n\n async ensure(obj, prop, args) {\n (0, _util.unreachable)(\"Abstract method `ensure` called\");\n }\n\n requestRange(begin, end) {\n (0, _util.unreachable)(\"Abstract method `requestRange` called\");\n }\n\n requestLoadedStream() {\n (0, _util.unreachable)(\"Abstract method `requestLoadedStream` called\");\n }\n\n sendProgressiveData(chunk) {\n (0, _util.unreachable)(\"Abstract method `sendProgressiveData` called\");\n }\n\n updatePassword(password) {\n this._password = password;\n }\n\n terminate(reason) {\n (0, _util.unreachable)(\"Abstract method `terminate` called\");\n }\n\n}\n\nclass LocalPdfManager extends BasePdfManager {\n constructor(docId, data, password, evaluatorOptions, docBaseUrl) {\n super();\n this._docId = docId;\n this._password = password;\n this._docBaseUrl = docBaseUrl;\n this.evaluatorOptions = evaluatorOptions;\n const stream = new _stream.Stream(data);\n this.pdfDocument = new _document.PDFDocument(this, stream);\n this._loadedStreamPromise = Promise.resolve(stream);\n }\n\n async ensure(obj, prop, args) {\n const value = obj[prop];\n\n if (typeof value === \"function\") {\n return value.apply(obj, args);\n }\n\n return value;\n }\n\n requestRange(begin, end) {\n return Promise.resolve();\n }\n\n requestLoadedStream() {}\n\n onLoadedStream() {\n return this._loadedStreamPromise;\n }\n\n terminate(reason) {}\n\n}\n\nexports.LocalPdfManager = LocalPdfManager;\n\nclass NetworkPdfManager extends BasePdfManager {\n constructor(docId, pdfNetworkStream, args, evaluatorOptions, docBaseUrl) {\n super();\n this._docId = docId;\n this._password = args.password;\n this._docBaseUrl = docBaseUrl;\n this.msgHandler = args.msgHandler;\n this.evaluatorOptions = evaluatorOptions;\n this.streamManager = new _chunked_stream.ChunkedStreamManager(pdfNetworkStream, {\n msgHandler: args.msgHandler,\n length: args.length,\n disableAutoFetch: args.disableAutoFetch,\n rangeChunkSize: args.rangeChunkSize\n });\n this.pdfDocument = new _document.PDFDocument(this, this.streamManager.getStream());\n }\n\n async ensure(obj, prop, args) {\n try {\n const value = obj[prop];\n\n if (typeof value === \"function\") {\n return value.apply(obj, args);\n }\n\n return value;\n } catch (ex) {\n if (!(ex instanceof _core_utils.MissingDataException)) {\n throw ex;\n }\n\n await this.requestRange(ex.begin, ex.end);\n return this.ensure(obj, prop, args);\n }\n }\n\n requestRange(begin, end) {\n return this.streamManager.requestRange(begin, end);\n }\n\n requestLoadedStream() {\n this.streamManager.requestAllChunks();\n }\n\n sendProgressiveData(chunk) {\n this.streamManager.onReceiveData({\n chunk\n });\n }\n\n onLoadedStream() {\n return this.streamManager.onLoadedStream();\n }\n\n terminate(reason) {\n this.streamManager.abort(reason);\n }\n\n}\n\nexports.NetworkPdfManager = NetworkPdfManager;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ChunkedStreamManager = exports.ChunkedStream = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nclass ChunkedStream {\n constructor(length, chunkSize, manager) {\n this.bytes = new Uint8Array(length);\n this.start = 0;\n this.pos = 0;\n this.end = length;\n this.chunkSize = chunkSize;\n this._loadedChunks = new Set();\n this.numChunks = Math.ceil(length / chunkSize);\n this.manager = manager;\n this.progressiveDataLength = 0;\n this.lastSuccessfulEnsureByteChunk = -1;\n }\n\n getMissingChunks() {\n const chunks = [];\n\n for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n chunks.push(chunk);\n }\n }\n\n return chunks;\n }\n\n getBaseStreams() {\n return [this];\n }\n\n get numChunksLoaded() {\n return this._loadedChunks.size;\n }\n\n allChunksLoaded() {\n return this.numChunksLoaded === this.numChunks;\n }\n\n onReceiveData(begin, chunk) {\n const chunkSize = this.chunkSize;\n\n if (begin % chunkSize !== 0) {\n throw new Error(`Bad begin offset: ${begin}`);\n }\n\n const end = begin + chunk.byteLength;\n\n if (end % chunkSize !== 0 && end !== this.bytes.length) {\n throw new Error(`Bad end offset: ${end}`);\n }\n\n this.bytes.set(new Uint8Array(chunk), begin);\n const beginChunk = Math.floor(begin / chunkSize);\n const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n this._loadedChunks.add(curChunk);\n }\n }\n\n onReceiveProgressiveData(data) {\n let position = this.progressiveDataLength;\n const beginChunk = Math.floor(position / this.chunkSize);\n this.bytes.set(new Uint8Array(data), position);\n position += data.byteLength;\n this.progressiveDataLength = position;\n const endChunk = position >= this.end ? this.numChunks : Math.floor(position / this.chunkSize);\n\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n this._loadedChunks.add(curChunk);\n }\n }\n\n ensureByte(pos) {\n if (pos < this.progressiveDataLength) {\n return;\n }\n\n const chunk = Math.floor(pos / this.chunkSize);\n\n if (chunk === this.lastSuccessfulEnsureByteChunk) {\n return;\n }\n\n if (!this._loadedChunks.has(chunk)) {\n throw new _core_utils.MissingDataException(pos, pos + 1);\n }\n\n this.lastSuccessfulEnsureByteChunk = chunk;\n }\n\n ensureRange(begin, end) {\n if (begin >= end) {\n return;\n }\n\n if (end <= this.progressiveDataLength) {\n return;\n }\n\n const chunkSize = this.chunkSize;\n const beginChunk = Math.floor(begin / chunkSize);\n const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n throw new _core_utils.MissingDataException(begin, end);\n }\n }\n }\n\n nextEmptyChunk(beginChunk) {\n const numChunks = this.numChunks;\n\n for (let i = 0; i < numChunks; ++i) {\n const chunk = (beginChunk + i) % numChunks;\n\n if (!this._loadedChunks.has(chunk)) {\n return chunk;\n }\n }\n\n return null;\n }\n\n hasChunk(chunk) {\n return this._loadedChunks.has(chunk);\n }\n\n get length() {\n return this.end - this.start;\n }\n\n get isEmpty() {\n return this.length === 0;\n }\n\n getByte() {\n const pos = this.pos;\n\n if (pos >= this.end) {\n return -1;\n }\n\n if (pos >= this.progressiveDataLength) {\n this.ensureByte(pos);\n }\n\n return this.bytes[this.pos++];\n }\n\n getUint16() {\n const b0 = this.getByte();\n const b1 = this.getByte();\n\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n\n return (b0 << 8) + b1;\n }\n\n getInt32() {\n const b0 = this.getByte();\n const b1 = this.getByte();\n const b2 = this.getByte();\n const b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n }\n\n getBytes(length, forceClamped = false) {\n const bytes = this.bytes;\n const pos = this.pos;\n const strEnd = this.end;\n\n if (!length) {\n if (strEnd > this.progressiveDataLength) {\n this.ensureRange(pos, strEnd);\n }\n\n const subarray = bytes.subarray(pos, strEnd);\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n\n let end = pos + length;\n\n if (end > strEnd) {\n end = strEnd;\n }\n\n if (end > this.progressiveDataLength) {\n this.ensureRange(pos, end);\n }\n\n this.pos = end;\n const subarray = bytes.subarray(pos, end);\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n\n peekByte() {\n const peekedByte = this.getByte();\n\n if (peekedByte !== -1) {\n this.pos--;\n }\n\n return peekedByte;\n }\n\n peekBytes(length, forceClamped = false) {\n const bytes = this.getBytes(length, forceClamped);\n this.pos -= bytes.length;\n return bytes;\n }\n\n getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n\n if (end > this.end) {\n end = this.end;\n }\n\n if (end > this.progressiveDataLength) {\n this.ensureRange(begin, end);\n }\n\n return this.bytes.subarray(begin, end);\n }\n\n skip(n) {\n if (!n) {\n n = 1;\n }\n\n this.pos += n;\n }\n\n reset() {\n this.pos = this.start;\n }\n\n moveStart() {\n this.start = this.pos;\n }\n\n makeSubStream(start, length, dict) {\n if (length) {\n if (start + length > this.progressiveDataLength) {\n this.ensureRange(start, start + length);\n }\n } else {\n if (start >= this.progressiveDataLength) {\n this.ensureByte(start);\n }\n }\n\n function ChunkedStreamSubstream() {}\n\n ChunkedStreamSubstream.prototype = Object.create(this);\n\n ChunkedStreamSubstream.prototype.getMissingChunks = function () {\n const chunkSize = this.chunkSize;\n const beginChunk = Math.floor(this.start / chunkSize);\n const endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n const missingChunks = [];\n\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n missingChunks.push(chunk);\n }\n }\n\n return missingChunks;\n };\n\n ChunkedStreamSubstream.prototype.allChunksLoaded = function () {\n if (this.numChunksLoaded === this.numChunks) {\n return true;\n }\n\n return this.getMissingChunks().length === 0;\n };\n\n const subStream = new ChunkedStreamSubstream();\n subStream.pos = subStream.start = start;\n subStream.end = start + length || this.end;\n subStream.dict = dict;\n return subStream;\n }\n\n}\n\nexports.ChunkedStream = ChunkedStream;\n\nclass ChunkedStreamManager {\n constructor(pdfNetworkStream, args) {\n this.length = args.length;\n this.chunkSize = args.rangeChunkSize;\n this.stream = new ChunkedStream(this.length, this.chunkSize, this);\n this.pdfNetworkStream = pdfNetworkStream;\n this.disableAutoFetch = args.disableAutoFetch;\n this.msgHandler = args.msgHandler;\n this.currRequestId = 0;\n this._chunksNeededByRequest = new Map();\n this._requestsByChunk = new Map();\n this._promisesByRequest = new Map();\n this.progressiveDataLength = 0;\n this.aborted = false;\n this._loadedStreamCapability = (0, _util.createPromiseCapability)();\n }\n\n onLoadedStream() {\n return this._loadedStreamCapability.promise;\n }\n\n sendRequest(begin, end) {\n const rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\n\n if (!rangeReader.isStreamingSupported) {\n rangeReader.onProgress = this.onProgress.bind(this);\n }\n\n let chunks = [],\n loaded = 0;\n const promise = new Promise((resolve, reject) => {\n const readChunk = chunk => {\n try {\n if (!chunk.done) {\n const data = chunk.value;\n chunks.push(data);\n loaded += (0, _util.arrayByteLength)(data);\n\n if (rangeReader.isStreamingSupported) {\n this.onProgress({\n loaded\n });\n }\n\n rangeReader.read().then(readChunk, reject);\n return;\n }\n\n const chunkData = (0, _util.arraysToBytes)(chunks);\n chunks = null;\n resolve(chunkData);\n } catch (e) {\n reject(e);\n }\n };\n\n rangeReader.read().then(readChunk, reject);\n });\n promise.then(data => {\n if (this.aborted) {\n return;\n }\n\n this.onReceiveData({\n chunk: data,\n begin\n });\n });\n }\n\n requestAllChunks() {\n const missingChunks = this.stream.getMissingChunks();\n\n this._requestChunks(missingChunks);\n\n return this._loadedStreamCapability.promise;\n }\n\n _requestChunks(chunks) {\n const requestId = this.currRequestId++;\n const chunksNeeded = new Set();\n\n this._chunksNeededByRequest.set(requestId, chunksNeeded);\n\n for (const chunk of chunks) {\n if (!this.stream.hasChunk(chunk)) {\n chunksNeeded.add(chunk);\n }\n }\n\n if (chunksNeeded.size === 0) {\n return Promise.resolve();\n }\n\n const capability = (0, _util.createPromiseCapability)();\n\n this._promisesByRequest.set(requestId, capability);\n\n const chunksToRequest = [];\n\n for (const chunk of chunksNeeded) {\n let requestIds = this._requestsByChunk.get(chunk);\n\n if (!requestIds) {\n requestIds = [];\n\n this._requestsByChunk.set(chunk, requestIds);\n\n chunksToRequest.push(chunk);\n }\n\n requestIds.push(requestId);\n }\n\n if (chunksToRequest.length > 0) {\n const groupedChunksToRequest = this.groupChunks(chunksToRequest);\n\n for (const groupedChunk of groupedChunksToRequest) {\n const begin = groupedChunk.beginChunk * this.chunkSize;\n const end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length);\n this.sendRequest(begin, end);\n }\n }\n\n return capability.promise.catch(reason => {\n if (this.aborted) {\n return;\n }\n\n throw reason;\n });\n }\n\n getStream() {\n return this.stream;\n }\n\n requestRange(begin, end) {\n end = Math.min(end, this.length);\n const beginChunk = this.getBeginChunk(begin);\n const endChunk = this.getEndChunk(end);\n const chunks = [];\n\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n chunks.push(chunk);\n }\n\n return this._requestChunks(chunks);\n }\n\n requestRanges(ranges = []) {\n const chunksToRequest = [];\n\n for (const range of ranges) {\n const beginChunk = this.getBeginChunk(range.begin);\n const endChunk = this.getEndChunk(range.end);\n\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!chunksToRequest.includes(chunk)) {\n chunksToRequest.push(chunk);\n }\n }\n }\n\n chunksToRequest.sort(function (a, b) {\n return a - b;\n });\n return this._requestChunks(chunksToRequest);\n }\n\n groupChunks(chunks) {\n const groupedChunks = [];\n let beginChunk = -1;\n let prevChunk = -1;\n\n for (let i = 0, ii = chunks.length; i < ii; ++i) {\n const chunk = chunks[i];\n\n if (beginChunk < 0) {\n beginChunk = chunk;\n }\n\n if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n groupedChunks.push({\n beginChunk,\n endChunk: prevChunk + 1\n });\n beginChunk = chunk;\n }\n\n if (i + 1 === chunks.length) {\n groupedChunks.push({\n beginChunk,\n endChunk: chunk + 1\n });\n }\n\n prevChunk = chunk;\n }\n\n return groupedChunks;\n }\n\n onProgress(args) {\n this.msgHandler.send(\"DocProgress\", {\n loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded,\n total: this.length\n });\n }\n\n onReceiveData(args) {\n const chunk = args.chunk;\n const isProgressive = args.begin === undefined;\n const begin = isProgressive ? this.progressiveDataLength : args.begin;\n const end = begin + chunk.byteLength;\n const beginChunk = Math.floor(begin / this.chunkSize);\n const endChunk = end < this.length ? Math.floor(end / this.chunkSize) : Math.ceil(end / this.chunkSize);\n\n if (isProgressive) {\n this.stream.onReceiveProgressiveData(chunk);\n this.progressiveDataLength = end;\n } else {\n this.stream.onReceiveData(begin, chunk);\n }\n\n if (this.stream.allChunksLoaded()) {\n this._loadedStreamCapability.resolve(this.stream);\n }\n\n const loadedRequests = [];\n\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n const requestIds = this._requestsByChunk.get(curChunk);\n\n if (!requestIds) {\n continue;\n }\n\n this._requestsByChunk.delete(curChunk);\n\n for (const requestId of requestIds) {\n const chunksNeeded = this._chunksNeededByRequest.get(requestId);\n\n if (chunksNeeded.has(curChunk)) {\n chunksNeeded.delete(curChunk);\n }\n\n if (chunksNeeded.size > 0) {\n continue;\n }\n\n loadedRequests.push(requestId);\n }\n }\n\n if (!this.disableAutoFetch && this._requestsByChunk.size === 0) {\n let nextEmptyChunk;\n\n if (this.stream.numChunksLoaded === 1) {\n const lastChunk = this.stream.numChunks - 1;\n\n if (!this.stream.hasChunk(lastChunk)) {\n nextEmptyChunk = lastChunk;\n }\n } else {\n nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\n }\n\n if (Number.isInteger(nextEmptyChunk)) {\n this._requestChunks([nextEmptyChunk]);\n }\n }\n\n for (const requestId of loadedRequests) {\n const capability = this._promisesByRequest.get(requestId);\n\n this._promisesByRequest.delete(requestId);\n\n capability.resolve();\n }\n\n this.msgHandler.send(\"DocProgress\", {\n loaded: this.stream.numChunksLoaded * this.chunkSize,\n total: this.length\n });\n }\n\n onError(err) {\n this._loadedStreamCapability.reject(err);\n }\n\n getBeginChunk(begin) {\n return Math.floor(begin / this.chunkSize);\n }\n\n getEndChunk(end) {\n return Math.floor((end - 1) / this.chunkSize) + 1;\n }\n\n abort(reason) {\n this.aborted = true;\n\n if (this.pdfNetworkStream) {\n this.pdfNetworkStream.cancelAllRequests(reason);\n }\n\n for (const capability of this._promisesByRequest.values()) {\n capability.reject(reason);\n }\n }\n\n}\n\nexports.ChunkedStreamManager = ChunkedStreamManager;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getLookupTableFactory = getLookupTableFactory;\nexports.getInheritableProperty = getInheritableProperty;\nexports.toRomanNumerals = toRomanNumerals;\nexports.log2 = log2;\nexports.readInt8 = readInt8;\nexports.readUint16 = readUint16;\nexports.readUint32 = readUint32;\nexports.isWhiteSpace = isWhiteSpace;\nexports.XRefParseException = exports.XRefEntryException = exports.MissingDataException = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nfunction getLookupTableFactory(initializer) {\n let lookup;\n return function () {\n if (initializer) {\n lookup = Object.create(null);\n initializer(lookup);\n initializer = null;\n }\n\n return lookup;\n };\n}\n\nclass MissingDataException extends _util.BaseException {\n constructor(begin, end) {\n super(`Missing data [${begin}, ${end})`);\n this.begin = begin;\n this.end = end;\n }\n\n}\n\nexports.MissingDataException = MissingDataException;\n\nclass XRefEntryException extends _util.BaseException {}\n\nexports.XRefEntryException = XRefEntryException;\n\nclass XRefParseException extends _util.BaseException {}\n\nexports.XRefParseException = XRefParseException;\n\nfunction getInheritableProperty({\n dict,\n key,\n getArray = false,\n stopWhenFound = true\n}) {\n const LOOP_LIMIT = 100;\n let loopCount = 0;\n let values;\n\n while (dict) {\n const value = getArray ? dict.getArray(key) : dict.get(key);\n\n if (value !== undefined) {\n if (stopWhenFound) {\n return value;\n }\n\n if (!values) {\n values = [];\n }\n\n values.push(value);\n }\n\n if (++loopCount > LOOP_LIMIT) {\n (0, _util.warn)(`getInheritableProperty: maximum loop count exceeded for \"${key}\"`);\n break;\n }\n\n dict = dict.get(\"Parent\");\n }\n\n return values;\n}\n\nconst ROMAN_NUMBER_MAP = [\"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\", \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\", \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"];\n\nfunction toRomanNumerals(number, lowerCase = false) {\n (0, _util.assert)(Number.isInteger(number) && number > 0, \"The number should be a positive integer.\");\n const romanBuf = [];\n let pos;\n\n while (number >= 1000) {\n number -= 1000;\n romanBuf.push(\"M\");\n }\n\n pos = number / 100 | 0;\n number %= 100;\n romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n pos = number / 10 | 0;\n number %= 10;\n romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);\n const romanStr = romanBuf.join(\"\");\n return lowerCase ? romanStr.toLowerCase() : romanStr;\n}\n\nfunction log2(x) {\n if (x <= 0) {\n return 0;\n }\n\n return Math.ceil(Math.log2(x));\n}\n\nfunction readInt8(data, offset) {\n return data[offset] << 24 >> 24;\n}\n\nfunction readUint16(data, offset) {\n return data[offset] << 8 | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0;\n}\n\nfunction isWhiteSpace(ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFDocument = exports.Page = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _obj = __w_pdfjs_require__(10);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _stream = __w_pdfjs_require__(12);\n\nvar _annotation = __w_pdfjs_require__(25);\n\nvar _crypto = __w_pdfjs_require__(22);\n\nvar _parser = __w_pdfjs_require__(11);\n\nvar _operator_list = __w_pdfjs_require__(26);\n\nvar _evaluator = __w_pdfjs_require__(28);\n\nconst DEFAULT_USER_UNIT = 1.0;\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\n\nfunction isAnnotationRenderable(annotation, intent) {\n return intent === \"display\" && annotation.viewable || intent === \"print\" && annotation.printable;\n}\n\nclass Page {\n constructor({\n pdfManager,\n xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory,\n fontCache,\n builtInCMapCache,\n globalImageCache\n }) {\n this.pdfManager = pdfManager;\n this.pageIndex = pageIndex;\n this.pageDict = pageDict;\n this.xref = xref;\n this.ref = ref;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.globalImageCache = globalImageCache;\n this.evaluatorOptions = pdfManager.evaluatorOptions;\n this.resourcesPromise = null;\n const idCounters = {\n obj: 0\n };\n this._localIdFactory = class extends globalIdFactory {\n static createObjId() {\n return `p${pageIndex}_${++idCounters.obj}`;\n }\n\n };\n }\n\n _getInheritableProperty(key, getArray = false) {\n const value = (0, _core_utils.getInheritableProperty)({\n dict: this.pageDict,\n key,\n getArray,\n stopWhenFound: false\n });\n\n if (!Array.isArray(value)) {\n return value;\n }\n\n if (value.length === 1 || !(0, _primitives.isDict)(value[0])) {\n return value[0];\n }\n\n return _primitives.Dict.merge({\n xref: this.xref,\n dictArray: value\n });\n }\n\n get content() {\n return this.pageDict.get(\"Contents\");\n }\n\n get resources() {\n return (0, _util.shadow)(this, \"resources\", this._getInheritableProperty(\"Resources\") || _primitives.Dict.empty);\n }\n\n _getBoundingBox(name) {\n const box = this._getInheritableProperty(name, true);\n\n if (Array.isArray(box) && box.length === 4) {\n if (box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n return box;\n }\n\n (0, _util.warn)(`Empty /${name} entry.`);\n }\n\n return null;\n }\n\n get mediaBox() {\n return (0, _util.shadow)(this, \"mediaBox\", this._getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX);\n }\n\n get cropBox() {\n return (0, _util.shadow)(this, \"cropBox\", this._getBoundingBox(\"CropBox\") || this.mediaBox);\n }\n\n get userUnit() {\n let obj = this.pageDict.get(\"UserUnit\");\n\n if (!(0, _util.isNum)(obj) || obj <= 0) {\n obj = DEFAULT_USER_UNIT;\n }\n\n return (0, _util.shadow)(this, \"userUnit\", obj);\n }\n\n get view() {\n const {\n cropBox,\n mediaBox\n } = this;\n let view;\n\n if (cropBox === mediaBox || (0, _util.isArrayEqual)(cropBox, mediaBox)) {\n view = mediaBox;\n } else {\n const box = _util.Util.intersect(cropBox, mediaBox);\n\n if (box && box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n view = box;\n } else {\n (0, _util.warn)(\"Empty /CropBox and /MediaBox intersection.\");\n }\n }\n\n return (0, _util.shadow)(this, \"view\", view || mediaBox);\n }\n\n get rotate() {\n let rotate = this._getInheritableProperty(\"Rotate\") || 0;\n\n if (rotate % 90 !== 0) {\n rotate = 0;\n } else if (rotate >= 360) {\n rotate = rotate % 360;\n } else if (rotate < 0) {\n rotate = (rotate % 360 + 360) % 360;\n }\n\n return (0, _util.shadow)(this, \"rotate\", rotate);\n }\n\n getContentStream() {\n const content = this.content;\n let stream;\n\n if (Array.isArray(content)) {\n const xref = this.xref;\n const streams = [];\n\n for (const subStream of content) {\n streams.push(xref.fetchIfRef(subStream));\n }\n\n stream = new _stream.StreamsSequenceStream(streams);\n } else if ((0, _primitives.isStream)(content)) {\n stream = content;\n } else {\n stream = new _stream.NullStream();\n }\n\n return stream;\n }\n\n save(handler, task, annotationStorage) {\n const partialEvaluator = new _evaluator.PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions\n });\n return this._parsedAnnotations.then(function (annotations) {\n const newRefsPromises = [];\n\n for (const annotation of annotations) {\n if (!isAnnotationRenderable(annotation, \"print\")) {\n continue;\n }\n\n newRefsPromises.push(annotation.save(partialEvaluator, task, annotationStorage).catch(function (reason) {\n (0, _util.warn)(\"save - ignoring annotation data during \" + `\"${task.name}\" task: \"${reason}\".`);\n return null;\n }));\n }\n\n return Promise.all(newRefsPromises);\n });\n }\n\n loadResources(keys) {\n if (!this.resourcesPromise) {\n this.resourcesPromise = this.pdfManager.ensure(this, \"resources\");\n }\n\n return this.resourcesPromise.then(() => {\n const objectLoader = new _obj.ObjectLoader(this.resources, keys, this.xref);\n return objectLoader.load();\n });\n }\n\n getOperatorList({\n handler,\n sink,\n task,\n intent,\n renderInteractiveForms,\n annotationStorage\n }) {\n const contentStreamPromise = this.pdfManager.ensure(this, \"getContentStream\");\n const resourcesPromise = this.loadResources([\"ExtGState\", \"ColorSpace\", \"Pattern\", \"Shading\", \"XObject\", \"Font\"]);\n const partialEvaluator = new _evaluator.PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions\n });\n const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n const pageListPromise = dataPromises.then(([contentStream]) => {\n const opList = new _operator_list.OperatorList(intent, sink);\n handler.send(\"StartRenderPage\", {\n transparency: partialEvaluator.hasBlendModes(this.resources),\n pageIndex: this.pageIndex,\n intent\n });\n return partialEvaluator.getOperatorList({\n stream: contentStream,\n task,\n resources: this.resources,\n operatorList: opList\n }).then(function () {\n return opList;\n });\n });\n return Promise.all([pageListPromise, this._parsedAnnotations]).then(function ([pageOpList, annotations]) {\n if (annotations.length === 0) {\n pageOpList.flush(true);\n return {\n length: pageOpList.totalLength\n };\n }\n\n const opListPromises = [];\n\n for (const annotation of annotations) {\n if (isAnnotationRenderable(annotation, intent)) {\n opListPromises.push(annotation.getOperatorList(partialEvaluator, task, renderInteractiveForms, annotationStorage).catch(function (reason) {\n (0, _util.warn)(\"getOperatorList - ignoring annotation data during \" + `\"${task.name}\" task: \"${reason}\".`);\n return null;\n }));\n }\n }\n\n return Promise.all(opListPromises).then(function (opLists) {\n pageOpList.addOp(_util.OPS.beginAnnotations, []);\n\n for (const opList of opLists) {\n pageOpList.addOpList(opList);\n }\n\n pageOpList.addOp(_util.OPS.endAnnotations, []);\n pageOpList.flush(true);\n return {\n length: pageOpList.totalLength\n };\n });\n });\n }\n\n extractTextContent({\n handler,\n task,\n normalizeWhitespace,\n sink,\n combineTextItems\n }) {\n const contentStreamPromise = this.pdfManager.ensure(this, \"getContentStream\");\n const resourcesPromise = this.loadResources([\"ExtGState\", \"XObject\", \"Font\"]);\n const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n return dataPromises.then(([contentStream]) => {\n const partialEvaluator = new _evaluator.PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions\n });\n return partialEvaluator.getTextContent({\n stream: contentStream,\n task,\n resources: this.resources,\n normalizeWhitespace,\n combineTextItems,\n sink\n });\n });\n }\n\n getAnnotationsData(intent) {\n return this._parsedAnnotations.then(function (annotations) {\n const annotationsData = [];\n\n for (let i = 0, ii = annotations.length; i < ii; i++) {\n if (!intent || isAnnotationRenderable(annotations[i], intent)) {\n annotationsData.push(annotations[i].data);\n }\n }\n\n return annotationsData;\n });\n }\n\n get annotations() {\n return (0, _util.shadow)(this, \"annotations\", this._getInheritableProperty(\"Annots\") || []);\n }\n\n get _parsedAnnotations() {\n const parsedAnnotations = this.pdfManager.ensure(this, \"annotations\").then(() => {\n const annotationPromises = [];\n\n for (const annotationRef of this.annotations) {\n annotationPromises.push(_annotation.AnnotationFactory.create(this.xref, annotationRef, this.pdfManager, this._localIdFactory).catch(function (reason) {\n (0, _util.warn)(`_parsedAnnotations: \"${reason}\".`);\n return null;\n }));\n }\n\n return Promise.all(annotationPromises).then(function (annotations) {\n return annotations.filter(annotation => !!annotation);\n });\n });\n return (0, _util.shadow)(this, \"_parsedAnnotations\", parsedAnnotations);\n }\n\n}\n\nexports.Page = Page;\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\nconst STARTXREF_SIGNATURE = new Uint8Array([0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66]);\nconst ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\nconst FINGERPRINT_FIRST_BYTES = 1024;\nconst EMPTY_FINGERPRINT = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nconst PDF_HEADER_VERSION_REGEXP = /^[1-9]\\.[0-9]$/;\n\nfunction find(stream, signature, limit = 1024, backwards = false) {\n const signatureLength = signature.length;\n const scanBytes = stream.peekBytes(limit);\n const scanLength = scanBytes.length - signatureLength;\n\n if (scanLength <= 0) {\n return false;\n }\n\n if (backwards) {\n const signatureEnd = signatureLength - 1;\n let pos = scanBytes.length - 1;\n\n while (pos >= signatureEnd) {\n let j = 0;\n\n while (j < signatureLength && scanBytes[pos - j] === signature[signatureEnd - j]) {\n j++;\n }\n\n if (j >= signatureLength) {\n stream.pos += pos - signatureEnd;\n return true;\n }\n\n pos--;\n }\n } else {\n let pos = 0;\n\n while (pos <= scanLength) {\n let j = 0;\n\n while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n j++;\n }\n\n if (j >= signatureLength) {\n stream.pos += pos;\n return true;\n }\n\n pos++;\n }\n }\n\n return false;\n}\n\nclass PDFDocument {\n constructor(pdfManager, arg) {\n let stream;\n\n if ((0, _primitives.isStream)(arg)) {\n stream = arg;\n } else if ((0, _util.isArrayBuffer)(arg)) {\n stream = new _stream.Stream(arg);\n } else {\n throw new Error(\"PDFDocument: Unknown argument type\");\n }\n\n if (stream.length <= 0) {\n throw new _util.InvalidPDFException(\"The PDF file is empty, i.e. its size is zero bytes.\");\n }\n\n this.pdfManager = pdfManager;\n this.stream = stream;\n this.xref = new _obj.XRef(stream, pdfManager);\n this._pagePromises = [];\n this._version = null;\n const idCounters = {\n font: 0\n };\n this._globalIdFactory = class {\n static getDocId() {\n return `g_${pdfManager.docId}`;\n }\n\n static createFontId() {\n return `f${++idCounters.font}`;\n }\n\n static createObjId() {\n (0, _util.unreachable)(\"Abstract method `createObjId` called.\");\n }\n\n };\n }\n\n parse(recoveryMode) {\n this.xref.parse(recoveryMode);\n this.catalog = new _obj.Catalog(this.pdfManager, this.xref);\n\n if (this.catalog.version) {\n this._version = this.catalog.version;\n }\n }\n\n get linearization() {\n let linearization = null;\n\n try {\n linearization = _parser.Linearization.create(this.stream);\n } catch (err) {\n if (err instanceof _core_utils.MissingDataException) {\n throw err;\n }\n\n (0, _util.info)(err);\n }\n\n return (0, _util.shadow)(this, \"linearization\", linearization);\n }\n\n get startXRef() {\n const stream = this.stream;\n let startXRef = 0;\n\n if (this.linearization) {\n stream.reset();\n\n if (find(stream, ENDOBJ_SIGNATURE)) {\n startXRef = stream.pos + 6 - stream.start;\n }\n } else {\n const step = 1024;\n const startXRefLength = STARTXREF_SIGNATURE.length;\n let found = false,\n pos = stream.end;\n\n while (!found && pos > 0) {\n pos -= step - startXRefLength;\n\n if (pos < 0) {\n pos = 0;\n }\n\n stream.pos = pos;\n found = find(stream, STARTXREF_SIGNATURE, step, true);\n }\n\n if (found) {\n stream.skip(9);\n let ch;\n\n do {\n ch = stream.getByte();\n } while ((0, _core_utils.isWhiteSpace)(ch));\n\n let str = \"\";\n\n while (ch >= 0x20 && ch <= 0x39) {\n str += String.fromCharCode(ch);\n ch = stream.getByte();\n }\n\n startXRef = parseInt(str, 10);\n\n if (isNaN(startXRef)) {\n startXRef = 0;\n }\n }\n }\n\n return (0, _util.shadow)(this, \"startXRef\", startXRef);\n }\n\n checkHeader() {\n const stream = this.stream;\n stream.reset();\n\n if (!find(stream, PDF_HEADER_SIGNATURE)) {\n return;\n }\n\n stream.moveStart();\n const MAX_PDF_VERSION_LENGTH = 12;\n let version = \"\",\n ch;\n\n while ((ch = stream.getByte()) > 0x20) {\n if (version.length >= MAX_PDF_VERSION_LENGTH) {\n break;\n }\n\n version += String.fromCharCode(ch);\n }\n\n if (!this._version) {\n this._version = version.substring(5);\n }\n }\n\n parseStartXRef() {\n this.xref.setStartXRef(this.startXRef);\n }\n\n get numPages() {\n const linearization = this.linearization;\n const num = linearization ? linearization.numPages : this.catalog.numPages;\n return (0, _util.shadow)(this, \"numPages\", num);\n }\n\n _hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\n const RECURSION_LIMIT = 10;\n return fields.every(field => {\n field = this.xref.fetchIfRef(field);\n\n if (field.has(\"Kids\")) {\n if (++recursionDepth > RECURSION_LIMIT) {\n (0, _util.warn)(\"_hasOnlyDocumentSignatures: maximum recursion depth reached\");\n return false;\n }\n\n return this._hasOnlyDocumentSignatures(field.get(\"Kids\"), recursionDepth);\n }\n\n const isSignature = (0, _primitives.isName)(field.get(\"FT\"), \"Sig\");\n const rectangle = field.get(\"Rect\");\n const isInvisible = Array.isArray(rectangle) && rectangle.every(value => value === 0);\n return isSignature && isInvisible;\n });\n }\n\n get formInfo() {\n const formInfo = {\n hasAcroForm: false,\n hasXfa: false\n };\n const acroForm = this.catalog.acroForm;\n\n if (!acroForm) {\n return (0, _util.shadow)(this, \"formInfo\", formInfo);\n }\n\n try {\n const xfa = acroForm.get(\"XFA\");\n const hasXfa = Array.isArray(xfa) && xfa.length > 0 || (0, _primitives.isStream)(xfa) && !xfa.isEmpty;\n formInfo.hasXfa = hasXfa;\n const fields = acroForm.get(\"Fields\");\n const hasFields = Array.isArray(fields) && fields.length > 0;\n const sigFlags = acroForm.get(\"SigFlags\");\n\n const hasOnlyDocumentSignatures = !!(sigFlags & 0x1) && this._hasOnlyDocumentSignatures(fields);\n\n formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures;\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.info)(\"Cannot fetch form information.\");\n }\n\n return (0, _util.shadow)(this, \"formInfo\", formInfo);\n }\n\n get documentInfo() {\n const DocumentInfoValidators = {\n Title: _util.isString,\n Author: _util.isString,\n Subject: _util.isString,\n Keywords: _util.isString,\n Creator: _util.isString,\n Producer: _util.isString,\n CreationDate: _util.isString,\n ModDate: _util.isString,\n Trapped: _primitives.isName\n };\n let version = this._version;\n\n if (typeof version !== \"string\" || !PDF_HEADER_VERSION_REGEXP.test(version)) {\n (0, _util.warn)(`Invalid PDF header version number: ${version}`);\n version = null;\n }\n\n const docInfo = {\n PDFFormatVersion: version,\n IsLinearized: !!this.linearization,\n IsAcroFormPresent: this.formInfo.hasAcroForm,\n IsXFAPresent: this.formInfo.hasXfa,\n IsCollectionPresent: !!this.catalog.collection\n };\n let infoDict;\n\n try {\n infoDict = this.xref.trailer.get(\"Info\");\n } catch (err) {\n if (err instanceof _core_utils.MissingDataException) {\n throw err;\n }\n\n (0, _util.info)(\"The document information dictionary is invalid.\");\n }\n\n if ((0, _primitives.isDict)(infoDict)) {\n for (const key of infoDict.getKeys()) {\n const value = infoDict.get(key);\n\n if (DocumentInfoValidators[key]) {\n if (DocumentInfoValidators[key](value)) {\n docInfo[key] = typeof value !== \"string\" ? value : (0, _util.stringToPDFString)(value);\n } else {\n (0, _util.info)(`Bad value in document info for \"${key}\".`);\n }\n } else if (typeof key === \"string\") {\n let customValue;\n\n if ((0, _util.isString)(value)) {\n customValue = (0, _util.stringToPDFString)(value);\n } else if ((0, _primitives.isName)(value) || (0, _util.isNum)(value) || (0, _util.isBool)(value)) {\n customValue = value;\n } else {\n (0, _util.info)(`Unsupported value in document info for (custom) \"${key}\".`);\n continue;\n }\n\n if (!docInfo.Custom) {\n docInfo.Custom = Object.create(null);\n }\n\n docInfo.Custom[key] = customValue;\n }\n }\n }\n\n return (0, _util.shadow)(this, \"documentInfo\", docInfo);\n }\n\n get fingerprint() {\n let hash;\n const idArray = this.xref.trailer.get(\"ID\");\n\n if (Array.isArray(idArray) && idArray[0] && (0, _util.isString)(idArray[0]) && idArray[0] !== EMPTY_FINGERPRINT) {\n hash = (0, _util.stringToBytes)(idArray[0]);\n } else {\n hash = (0, _crypto.calculateMD5)(this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES);\n }\n\n const fingerprintBuf = [];\n\n for (let i = 0, ii = hash.length; i < ii; i++) {\n const hex = hash[i].toString(16);\n fingerprintBuf.push(hex.padStart(2, \"0\"));\n }\n\n return (0, _util.shadow)(this, \"fingerprint\", fingerprintBuf.join(\"\"));\n }\n\n _getLinearizationPage(pageIndex) {\n const {\n catalog,\n linearization\n } = this;\n\n const ref = _primitives.Ref.get(linearization.objectNumberFirst, 0);\n\n return this.xref.fetchAsync(ref).then(obj => {\n if ((0, _primitives.isDict)(obj, \"Page\") || (0, _primitives.isDict)(obj) && !obj.has(\"Type\") && obj.has(\"Contents\")) {\n if (ref && !catalog.pageKidsCountCache.has(ref)) {\n catalog.pageKidsCountCache.put(ref, 1);\n }\n\n return [obj, ref];\n }\n\n throw new _util.FormatError(\"The Linearization dictionary doesn't point \" + \"to a valid Page dictionary.\");\n }).catch(reason => {\n (0, _util.info)(reason);\n return catalog.getPageDict(pageIndex);\n });\n }\n\n getPage(pageIndex) {\n if (this._pagePromises[pageIndex] !== undefined) {\n return this._pagePromises[pageIndex];\n }\n\n const {\n catalog,\n linearization\n } = this;\n const promise = linearization && linearization.pageFirst === pageIndex ? this._getLinearizationPage(pageIndex) : catalog.getPageDict(pageIndex);\n return this._pagePromises[pageIndex] = promise.then(([pageDict, ref]) => {\n return new Page({\n pdfManager: this.pdfManager,\n xref: this.xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory: this._globalIdFactory,\n fontCache: catalog.fontCache,\n builtInCMapCache: catalog.builtInCMapCache,\n globalImageCache: catalog.globalImageCache\n });\n });\n }\n\n checkFirstPage() {\n return this.getPage(0).catch(async reason => {\n if (reason instanceof _core_utils.XRefEntryException) {\n this._pagePromises.length = 0;\n await this.cleanup();\n throw new _core_utils.XRefParseException();\n }\n });\n }\n\n fontFallback(id, handler) {\n return this.catalog.fontFallback(id, handler);\n }\n\n async cleanup(manuallyTriggered = false) {\n return this.catalog ? this.catalog.cleanup(manuallyTriggered) : (0, _primitives.clearPrimitiveCaches)();\n }\n\n}\n\nexports.PDFDocument = PDFDocument;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FileSpec = exports.XRef = exports.ObjectLoader = exports.Catalog = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _parser = __w_pdfjs_require__(11);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _crypto = __w_pdfjs_require__(22);\n\nvar _colorspace = __w_pdfjs_require__(23);\n\nvar _image_utils = __w_pdfjs_require__(24);\n\nfunction fetchDestination(dest) {\n return (0, _primitives.isDict)(dest) ? dest.get(\"D\") : dest;\n}\n\nclass Catalog {\n constructor(pdfManager, xref) {\n this.pdfManager = pdfManager;\n this.xref = xref;\n this._catDict = xref.getCatalogObj();\n\n if (!(0, _primitives.isDict)(this._catDict)) {\n throw new _util.FormatError(\"Catalog object is not a dictionary.\");\n }\n\n this.fontCache = new _primitives.RefSetCache();\n this.builtInCMapCache = new Map();\n this.globalImageCache = new _image_utils.GlobalImageCache();\n this.pageKidsCountCache = new _primitives.RefSetCache();\n }\n\n get version() {\n const version = this._catDict.get(\"Version\");\n\n if (!(0, _primitives.isName)(version)) {\n return (0, _util.shadow)(this, \"version\", null);\n }\n\n return (0, _util.shadow)(this, \"version\", version.name);\n }\n\n get collection() {\n let collection = null;\n\n try {\n const obj = this._catDict.get(\"Collection\");\n\n if ((0, _primitives.isDict)(obj) && obj.size > 0) {\n collection = obj;\n }\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.info)(\"Cannot fetch Collection entry; assuming no collection is present.\");\n }\n\n return (0, _util.shadow)(this, \"collection\", collection);\n }\n\n get acroForm() {\n let acroForm = null;\n\n try {\n const obj = this._catDict.get(\"AcroForm\");\n\n if ((0, _primitives.isDict)(obj) && obj.size > 0) {\n acroForm = obj;\n }\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.info)(\"Cannot fetch AcroForm entry; assuming no forms are present.\");\n }\n\n return (0, _util.shadow)(this, \"acroForm\", acroForm);\n }\n\n get metadata() {\n const streamRef = this._catDict.getRaw(\"Metadata\");\n\n if (!(0, _primitives.isRef)(streamRef)) {\n return (0, _util.shadow)(this, \"metadata\", null);\n }\n\n const suppressEncryption = !(this.xref.encrypt && this.xref.encrypt.encryptMetadata);\n const stream = this.xref.fetch(streamRef, suppressEncryption);\n let metadata;\n\n if (stream && (0, _primitives.isDict)(stream.dict)) {\n const type = stream.dict.get(\"Type\");\n const subtype = stream.dict.get(\"Subtype\");\n\n if ((0, _primitives.isName)(type, \"Metadata\") && (0, _primitives.isName)(subtype, \"XML\")) {\n try {\n metadata = (0, _util.stringToUTF8String)((0, _util.bytesToString)(stream.getBytes()));\n } catch (e) {\n if (e instanceof _core_utils.MissingDataException) {\n throw e;\n }\n\n (0, _util.info)(\"Skipping invalid metadata.\");\n }\n }\n }\n\n return (0, _util.shadow)(this, \"metadata\", metadata);\n }\n\n get toplevelPagesDict() {\n const pagesObj = this._catDict.get(\"Pages\");\n\n if (!(0, _primitives.isDict)(pagesObj)) {\n throw new _util.FormatError(\"Invalid top-level pages dictionary.\");\n }\n\n return (0, _util.shadow)(this, \"toplevelPagesDict\", pagesObj);\n }\n\n get documentOutline() {\n let obj = null;\n\n try {\n obj = this._readDocumentOutline();\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.warn)(\"Unable to read document outline.\");\n }\n\n return (0, _util.shadow)(this, \"documentOutline\", obj);\n }\n\n _readDocumentOutline() {\n let obj = this._catDict.get(\"Outlines\");\n\n if (!(0, _primitives.isDict)(obj)) {\n return null;\n }\n\n obj = obj.getRaw(\"First\");\n\n if (!(0, _primitives.isRef)(obj)) {\n return null;\n }\n\n const root = {\n items: []\n };\n const queue = [{\n obj,\n parent: root\n }];\n const processed = new _primitives.RefSet();\n processed.put(obj);\n const xref = this.xref,\n blackColor = new Uint8ClampedArray(3);\n\n while (queue.length > 0) {\n const i = queue.shift();\n const outlineDict = xref.fetchIfRef(i.obj);\n\n if (outlineDict === null) {\n continue;\n }\n\n if (!outlineDict.has(\"Title\")) {\n throw new _util.FormatError(\"Invalid outline item encountered.\");\n }\n\n const data = {\n url: null,\n dest: null\n };\n Catalog.parseDestDictionary({\n destDict: outlineDict,\n resultObj: data,\n docBaseUrl: this.pdfManager.docBaseUrl\n });\n const title = outlineDict.get(\"Title\");\n const flags = outlineDict.get(\"F\") || 0;\n const color = outlineDict.getArray(\"C\");\n const count = outlineDict.get(\"Count\");\n let rgbColor = blackColor;\n\n if (Array.isArray(color) && color.length === 3 && (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)) {\n rgbColor = _colorspace.ColorSpace.singletons.rgb.getRgb(color, 0);\n }\n\n const outlineItem = {\n dest: data.dest,\n url: data.url,\n unsafeUrl: data.unsafeUrl,\n newWindow: data.newWindow,\n title: (0, _util.stringToPDFString)(title),\n color: rgbColor,\n count: Number.isInteger(count) ? count : undefined,\n bold: !!(flags & 2),\n italic: !!(flags & 1),\n items: []\n };\n i.parent.items.push(outlineItem);\n obj = outlineDict.getRaw(\"First\");\n\n if ((0, _primitives.isRef)(obj) && !processed.has(obj)) {\n queue.push({\n obj,\n parent: outlineItem\n });\n processed.put(obj);\n }\n\n obj = outlineDict.getRaw(\"Next\");\n\n if ((0, _primitives.isRef)(obj) && !processed.has(obj)) {\n queue.push({\n obj,\n parent: i.parent\n });\n processed.put(obj);\n }\n }\n\n return root.items.length > 0 ? root.items : null;\n }\n\n get permissions() {\n let permissions = null;\n\n try {\n permissions = this._readPermissions();\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.warn)(\"Unable to read permissions.\");\n }\n\n return (0, _util.shadow)(this, \"permissions\", permissions);\n }\n\n _readPermissions() {\n const encrypt = this.xref.trailer.get(\"Encrypt\");\n\n if (!(0, _primitives.isDict)(encrypt)) {\n return null;\n }\n\n let flags = encrypt.get(\"P\");\n\n if (!(0, _util.isNum)(flags)) {\n return null;\n }\n\n flags += 2 ** 32;\n const permissions = [];\n\n for (const key in _util.PermissionFlag) {\n const value = _util.PermissionFlag[key];\n\n if (flags & value) {\n permissions.push(value);\n }\n }\n\n return permissions;\n }\n\n get optionalContentConfig() {\n let config = null;\n\n try {\n const properties = this._catDict.get(\"OCProperties\");\n\n if (!properties) {\n return (0, _util.shadow)(this, \"optionalContentConfig\", null);\n }\n\n const defaultConfig = properties.get(\"D\");\n\n if (!defaultConfig) {\n return (0, _util.shadow)(this, \"optionalContentConfig\", null);\n }\n\n const groupsData = properties.get(\"OCGs\");\n\n if (!Array.isArray(groupsData)) {\n return (0, _util.shadow)(this, \"optionalContentConfig\", null);\n }\n\n const groups = [];\n const groupRefs = [];\n\n for (const groupRef of groupsData) {\n if (!(0, _primitives.isRef)(groupRef)) {\n continue;\n }\n\n groupRefs.push(groupRef);\n const group = this.xref.fetchIfRef(groupRef);\n groups.push({\n id: groupRef.toString(),\n name: (0, _util.isString)(group.get(\"Name\")) ? (0, _util.stringToPDFString)(group.get(\"Name\")) : null,\n intent: (0, _util.isString)(group.get(\"Intent\")) ? (0, _util.stringToPDFString)(group.get(\"Intent\")) : null\n });\n }\n\n config = this._readOptionalContentConfig(defaultConfig, groupRefs);\n config.groups = groups;\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.warn)(`Unable to read optional content config: ${ex}`);\n }\n\n return (0, _util.shadow)(this, \"optionalContentConfig\", config);\n }\n\n _readOptionalContentConfig(config, contentGroupRefs) {\n function parseOnOff(refs) {\n const onParsed = [];\n\n if (Array.isArray(refs)) {\n for (const value of refs) {\n if (!(0, _primitives.isRef)(value)) {\n continue;\n }\n\n if (contentGroupRefs.includes(value)) {\n onParsed.push(value.toString());\n }\n }\n }\n\n return onParsed;\n }\n\n function parseOrder(refs, nestedLevels = 0) {\n if (!Array.isArray(refs)) {\n return null;\n }\n\n const order = [];\n\n for (const value of refs) {\n if ((0, _primitives.isRef)(value) && contentGroupRefs.includes(value)) {\n parsedOrderRefs.put(value);\n order.push(value.toString());\n continue;\n }\n\n const nestedOrder = parseNestedOrder(value, nestedLevels);\n\n if (nestedOrder) {\n order.push(nestedOrder);\n }\n }\n\n if (nestedLevels > 0) {\n return order;\n }\n\n const hiddenGroups = [];\n\n for (const groupRef of contentGroupRefs) {\n if (parsedOrderRefs.has(groupRef)) {\n continue;\n }\n\n hiddenGroups.push(groupRef.toString());\n }\n\n if (hiddenGroups.length) {\n order.push({\n name: null,\n order: hiddenGroups\n });\n }\n\n return order;\n }\n\n function parseNestedOrder(ref, nestedLevels) {\n if (++nestedLevels > MAX_NESTED_LEVELS) {\n (0, _util.warn)(\"parseNestedOrder - reached MAX_NESTED_LEVELS.\");\n return null;\n }\n\n const value = xref.fetchIfRef(ref);\n\n if (!Array.isArray(value)) {\n return null;\n }\n\n const nestedName = xref.fetchIfRef(value[0]);\n\n if (typeof nestedName !== \"string\") {\n return null;\n }\n\n const nestedOrder = parseOrder(value.slice(1), nestedLevels);\n\n if (!nestedOrder || !nestedOrder.length) {\n return null;\n }\n\n return {\n name: (0, _util.stringToPDFString)(nestedName),\n order: nestedOrder\n };\n }\n\n const xref = this.xref,\n parsedOrderRefs = new _primitives.RefSet(),\n MAX_NESTED_LEVELS = 10;\n return {\n name: (0, _util.isString)(config.get(\"Name\")) ? (0, _util.stringToPDFString)(config.get(\"Name\")) : null,\n creator: (0, _util.isString)(config.get(\"Creator\")) ? (0, _util.stringToPDFString)(config.get(\"Creator\")) : null,\n baseState: (0, _primitives.isName)(config.get(\"BaseState\")) ? config.get(\"BaseState\").name : null,\n on: parseOnOff(config.get(\"ON\")),\n off: parseOnOff(config.get(\"OFF\")),\n order: parseOrder(config.get(\"Order\")),\n groups: null\n };\n }\n\n get numPages() {\n const obj = this.toplevelPagesDict.get(\"Count\");\n\n if (!Number.isInteger(obj)) {\n throw new _util.FormatError(\"Page count in top-level pages dictionary is not an integer.\");\n }\n\n return (0, _util.shadow)(this, \"numPages\", obj);\n }\n\n get destinations() {\n const obj = this._readDests(),\n dests = Object.create(null);\n\n if (obj instanceof NameTree) {\n const names = obj.getAll();\n\n for (const name in names) {\n dests[name] = fetchDestination(names[name]);\n }\n } else if (obj instanceof _primitives.Dict) {\n obj.forEach(function (key, value) {\n if (value) {\n dests[key] = fetchDestination(value);\n }\n });\n }\n\n return (0, _util.shadow)(this, \"destinations\", dests);\n }\n\n getDestination(destinationId) {\n const obj = this._readDests();\n\n if (obj instanceof NameTree || obj instanceof _primitives.Dict) {\n return fetchDestination(obj.get(destinationId) || null);\n }\n\n return null;\n }\n\n _readDests() {\n const obj = this._catDict.get(\"Names\");\n\n if (obj && obj.has(\"Dests\")) {\n return new NameTree(obj.getRaw(\"Dests\"), this.xref);\n } else if (this._catDict.has(\"Dests\")) {\n return this._catDict.get(\"Dests\");\n }\n\n return undefined;\n }\n\n get pageLabels() {\n let obj = null;\n\n try {\n obj = this._readPageLabels();\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.warn)(\"Unable to read page labels.\");\n }\n\n return (0, _util.shadow)(this, \"pageLabels\", obj);\n }\n\n _readPageLabels() {\n const obj = this._catDict.getRaw(\"PageLabels\");\n\n if (!obj) {\n return null;\n }\n\n const pageLabels = new Array(this.numPages);\n let style = null,\n prefix = \"\";\n const numberTree = new NumberTree(obj, this.xref);\n const nums = numberTree.getAll();\n let currentLabel = \"\",\n currentIndex = 1;\n\n for (let i = 0, ii = this.numPages; i < ii; i++) {\n if (i in nums) {\n const labelDict = nums[i];\n\n if (!(0, _primitives.isDict)(labelDict)) {\n throw new _util.FormatError(\"PageLabel is not a dictionary.\");\n }\n\n if (labelDict.has(\"Type\") && !(0, _primitives.isName)(labelDict.get(\"Type\"), \"PageLabel\")) {\n throw new _util.FormatError(\"Invalid type in PageLabel dictionary.\");\n }\n\n if (labelDict.has(\"S\")) {\n const s = labelDict.get(\"S\");\n\n if (!(0, _primitives.isName)(s)) {\n throw new _util.FormatError(\"Invalid style in PageLabel dictionary.\");\n }\n\n style = s.name;\n } else {\n style = null;\n }\n\n if (labelDict.has(\"P\")) {\n const p = labelDict.get(\"P\");\n\n if (!(0, _util.isString)(p)) {\n throw new _util.FormatError(\"Invalid prefix in PageLabel dictionary.\");\n }\n\n prefix = (0, _util.stringToPDFString)(p);\n } else {\n prefix = \"\";\n }\n\n if (labelDict.has(\"St\")) {\n const st = labelDict.get(\"St\");\n\n if (!(Number.isInteger(st) && st >= 1)) {\n throw new _util.FormatError(\"Invalid start in PageLabel dictionary.\");\n }\n\n currentIndex = st;\n } else {\n currentIndex = 1;\n }\n }\n\n switch (style) {\n case \"D\":\n currentLabel = currentIndex;\n break;\n\n case \"R\":\n case \"r\":\n currentLabel = (0, _core_utils.toRomanNumerals)(currentIndex, style === \"r\");\n break;\n\n case \"A\":\n case \"a\":\n const LIMIT = 26;\n const A_UPPER_CASE = 0x41,\n A_LOWER_CASE = 0x61;\n const baseCharCode = style === \"a\" ? A_LOWER_CASE : A_UPPER_CASE;\n const letterIndex = currentIndex - 1;\n const character = String.fromCharCode(baseCharCode + letterIndex % LIMIT);\n const charBuf = [];\n\n for (let j = 0, jj = letterIndex / LIMIT | 0; j <= jj; j++) {\n charBuf.push(character);\n }\n\n currentLabel = charBuf.join(\"\");\n break;\n\n default:\n if (style) {\n throw new _util.FormatError(`Invalid style \"${style}\" in PageLabel dictionary.`);\n }\n\n currentLabel = \"\";\n }\n\n pageLabels[i] = prefix + currentLabel;\n currentIndex++;\n }\n\n return pageLabels;\n }\n\n get pageLayout() {\n const obj = this._catDict.get(\"PageLayout\");\n\n let pageLayout = \"\";\n\n if ((0, _primitives.isName)(obj)) {\n switch (obj.name) {\n case \"SinglePage\":\n case \"OneColumn\":\n case \"TwoColumnLeft\":\n case \"TwoColumnRight\":\n case \"TwoPageLeft\":\n case \"TwoPageRight\":\n pageLayout = obj.name;\n }\n }\n\n return (0, _util.shadow)(this, \"pageLayout\", pageLayout);\n }\n\n get pageMode() {\n const obj = this._catDict.get(\"PageMode\");\n\n let pageMode = \"UseNone\";\n\n if ((0, _primitives.isName)(obj)) {\n switch (obj.name) {\n case \"UseNone\":\n case \"UseOutlines\":\n case \"UseThumbs\":\n case \"FullScreen\":\n case \"UseOC\":\n case \"UseAttachments\":\n pageMode = obj.name;\n }\n }\n\n return (0, _util.shadow)(this, \"pageMode\", pageMode);\n }\n\n get viewerPreferences() {\n const ViewerPreferencesValidators = {\n HideToolbar: _util.isBool,\n HideMenubar: _util.isBool,\n HideWindowUI: _util.isBool,\n FitWindow: _util.isBool,\n CenterWindow: _util.isBool,\n DisplayDocTitle: _util.isBool,\n NonFullScreenPageMode: _primitives.isName,\n Direction: _primitives.isName,\n ViewArea: _primitives.isName,\n ViewClip: _primitives.isName,\n PrintArea: _primitives.isName,\n PrintClip: _primitives.isName,\n PrintScaling: _primitives.isName,\n Duplex: _primitives.isName,\n PickTrayByPDFSize: _util.isBool,\n PrintPageRange: Array.isArray,\n NumCopies: Number.isInteger\n };\n\n const obj = this._catDict.get(\"ViewerPreferences\");\n\n let prefs = null;\n\n if ((0, _primitives.isDict)(obj)) {\n for (const key in ViewerPreferencesValidators) {\n if (!obj.has(key)) {\n continue;\n }\n\n const value = obj.get(key);\n\n if (!ViewerPreferencesValidators[key](value)) {\n (0, _util.info)(`Bad value in ViewerPreferences for \"${key}\".`);\n continue;\n }\n\n let prefValue;\n\n switch (key) {\n case \"NonFullScreenPageMode\":\n switch (value.name) {\n case \"UseNone\":\n case \"UseOutlines\":\n case \"UseThumbs\":\n case \"UseOC\":\n prefValue = value.name;\n break;\n\n default:\n prefValue = \"UseNone\";\n }\n\n break;\n\n case \"Direction\":\n switch (value.name) {\n case \"L2R\":\n case \"R2L\":\n prefValue = value.name;\n break;\n\n default:\n prefValue = \"L2R\";\n }\n\n break;\n\n case \"ViewArea\":\n case \"ViewClip\":\n case \"PrintArea\":\n case \"PrintClip\":\n switch (value.name) {\n case \"MediaBox\":\n case \"CropBox\":\n case \"BleedBox\":\n case \"TrimBox\":\n case \"ArtBox\":\n prefValue = value.name;\n break;\n\n default:\n prefValue = \"CropBox\";\n }\n\n break;\n\n case \"PrintScaling\":\n switch (value.name) {\n case \"None\":\n case \"AppDefault\":\n prefValue = value.name;\n break;\n\n default:\n prefValue = \"AppDefault\";\n }\n\n break;\n\n case \"Duplex\":\n switch (value.name) {\n case \"Simplex\":\n case \"DuplexFlipShortEdge\":\n case \"DuplexFlipLongEdge\":\n prefValue = value.name;\n break;\n\n default:\n prefValue = \"None\";\n }\n\n break;\n\n case \"PrintPageRange\":\n const length = value.length;\n\n if (length % 2 !== 0) {\n break;\n }\n\n const isValid = value.every((page, i, arr) => {\n return Number.isInteger(page) && page > 0 && (i === 0 || page >= arr[i - 1]) && page <= this.numPages;\n });\n\n if (isValid) {\n prefValue = value;\n }\n\n break;\n\n case \"NumCopies\":\n if (value > 0) {\n prefValue = value;\n }\n\n break;\n\n default:\n if (typeof value !== \"boolean\") {\n throw new _util.FormatError(`viewerPreferences - expected a boolean value for: ${key}`);\n }\n\n prefValue = value;\n }\n\n if (prefValue !== undefined) {\n if (!prefs) {\n prefs = Object.create(null);\n }\n\n prefs[key] = prefValue;\n } else {\n (0, _util.info)(`Bad value in ViewerPreferences for \"${key}\".`);\n }\n }\n }\n\n return (0, _util.shadow)(this, \"viewerPreferences\", prefs);\n }\n\n get openAction() {\n const obj = this._catDict.get(\"OpenAction\");\n\n let openAction = null;\n\n if ((0, _primitives.isDict)(obj)) {\n const destDict = new _primitives.Dict(this.xref);\n destDict.set(\"A\", obj);\n const resultObj = {\n url: null,\n dest: null,\n action: null\n };\n Catalog.parseDestDictionary({\n destDict,\n resultObj\n });\n\n if (Array.isArray(resultObj.dest)) {\n if (!openAction) {\n openAction = Object.create(null);\n }\n\n openAction.dest = resultObj.dest;\n } else if (resultObj.action) {\n if (!openAction) {\n openAction = Object.create(null);\n }\n\n openAction.action = resultObj.action;\n }\n } else if (Array.isArray(obj)) {\n if (!openAction) {\n openAction = Object.create(null);\n }\n\n openAction.dest = obj;\n }\n\n return (0, _util.shadow)(this, \"openAction\", openAction);\n }\n\n get attachments() {\n const obj = this._catDict.get(\"Names\");\n\n let attachments = null;\n\n if (obj && obj.has(\"EmbeddedFiles\")) {\n const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n const names = nameTree.getAll();\n\n for (const name in names) {\n const fs = new FileSpec(names[name], this.xref);\n\n if (!attachments) {\n attachments = Object.create(null);\n }\n\n attachments[(0, _util.stringToPDFString)(name)] = fs.serializable;\n }\n }\n\n return (0, _util.shadow)(this, \"attachments\", attachments);\n }\n\n get javaScript() {\n const obj = this._catDict.get(\"Names\");\n\n let javaScript = null;\n\n function appendIfJavaScriptDict(jsDict) {\n const type = jsDict.get(\"S\");\n\n if (!(0, _primitives.isName)(type, \"JavaScript\")) {\n return;\n }\n\n let js = jsDict.get(\"JS\");\n\n if ((0, _primitives.isStream)(js)) {\n js = (0, _util.bytesToString)(js.getBytes());\n } else if (!(0, _util.isString)(js)) {\n return;\n }\n\n if (!javaScript) {\n javaScript = [];\n }\n\n javaScript.push((0, _util.stringToPDFString)(js));\n }\n\n if (obj && obj.has(\"JavaScript\")) {\n const nameTree = new NameTree(obj.getRaw(\"JavaScript\"), this.xref);\n const names = nameTree.getAll();\n\n for (const name in names) {\n const jsDict = names[name];\n\n if ((0, _primitives.isDict)(jsDict)) {\n appendIfJavaScriptDict(jsDict);\n }\n }\n }\n\n const openAction = this._catDict.get(\"OpenAction\");\n\n if ((0, _primitives.isDict)(openAction) && (0, _primitives.isName)(openAction.get(\"S\"), \"JavaScript\")) {\n appendIfJavaScriptDict(openAction);\n }\n\n return (0, _util.shadow)(this, \"javaScript\", javaScript);\n }\n\n fontFallback(id, handler) {\n const promises = [];\n this.fontCache.forEach(function (promise) {\n promises.push(promise);\n });\n return Promise.all(promises).then(translatedFonts => {\n for (const translatedFont of translatedFonts) {\n if (translatedFont.loadedName === id) {\n translatedFont.fallback(handler);\n return;\n }\n }\n });\n }\n\n cleanup(manuallyTriggered = false) {\n (0, _primitives.clearPrimitiveCaches)();\n this.globalImageCache.clear(manuallyTriggered);\n this.pageKidsCountCache.clear();\n const promises = [];\n this.fontCache.forEach(function (promise) {\n promises.push(promise);\n });\n return Promise.all(promises).then(translatedFonts => {\n for (const {\n dict\n } of translatedFonts) {\n delete dict.translated;\n }\n\n this.fontCache.clear();\n this.builtInCMapCache.clear();\n });\n }\n\n getPageDict(pageIndex) {\n const capability = (0, _util.createPromiseCapability)();\n const nodesToVisit = [this._catDict.getRaw(\"Pages\")];\n const visitedNodes = new _primitives.RefSet();\n const xref = this.xref,\n pageKidsCountCache = this.pageKidsCountCache;\n let count,\n currentPageIndex = 0;\n\n function next() {\n while (nodesToVisit.length) {\n const currentNode = nodesToVisit.pop();\n\n if ((0, _primitives.isRef)(currentNode)) {\n count = pageKidsCountCache.get(currentNode);\n\n if (count > 0 && currentPageIndex + count < pageIndex) {\n currentPageIndex += count;\n continue;\n }\n\n if (visitedNodes.has(currentNode)) {\n capability.reject(new _util.FormatError(\"Pages tree contains circular reference.\"));\n return;\n }\n\n visitedNodes.put(currentNode);\n xref.fetchAsync(currentNode).then(function (obj) {\n if ((0, _primitives.isDict)(obj, \"Page\") || (0, _primitives.isDict)(obj) && !obj.has(\"Kids\")) {\n if (pageIndex === currentPageIndex) {\n if (currentNode && !pageKidsCountCache.has(currentNode)) {\n pageKidsCountCache.put(currentNode, 1);\n }\n\n capability.resolve([obj, currentNode]);\n } else {\n currentPageIndex++;\n next();\n }\n\n return;\n }\n\n nodesToVisit.push(obj);\n next();\n }, capability.reject);\n return;\n }\n\n if (!(0, _primitives.isDict)(currentNode)) {\n capability.reject(new _util.FormatError(\"Page dictionary kid reference points to wrong type of object.\"));\n return;\n }\n\n count = currentNode.get(\"Count\");\n\n if (Number.isInteger(count) && count >= 0) {\n const objId = currentNode.objId;\n\n if (objId && !pageKidsCountCache.has(objId)) {\n pageKidsCountCache.put(objId, count);\n }\n\n if (currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\n }\n }\n\n const kids = currentNode.get(\"Kids\");\n\n if (!Array.isArray(kids)) {\n if ((0, _primitives.isName)(currentNode.get(\"Type\"), \"Page\") || !currentNode.has(\"Type\") && currentNode.has(\"Contents\")) {\n if (currentPageIndex === pageIndex) {\n capability.resolve([currentNode, null]);\n return;\n }\n\n currentPageIndex++;\n continue;\n }\n\n capability.reject(new _util.FormatError(\"Page dictionary kids object is not an array.\"));\n return;\n }\n\n for (let last = kids.length - 1; last >= 0; last--) {\n nodesToVisit.push(kids[last]);\n }\n }\n\n capability.reject(new Error(`Page index ${pageIndex} not found.`));\n }\n\n next();\n return capability.promise;\n }\n\n getPageIndex(pageRef) {\n const xref = this.xref;\n\n function pagesBeforeRef(kidRef) {\n let total = 0,\n parentRef;\n return xref.fetchAsync(kidRef).then(function (node) {\n if ((0, _primitives.isRefsEqual)(kidRef, pageRef) && !(0, _primitives.isDict)(node, \"Page\") && !((0, _primitives.isDict)(node) && !node.has(\"Type\") && node.has(\"Contents\"))) {\n throw new _util.FormatError(\"The reference does not point to a /Page dictionary.\");\n }\n\n if (!node) {\n return null;\n }\n\n if (!(0, _primitives.isDict)(node)) {\n throw new _util.FormatError(\"Node must be a dictionary.\");\n }\n\n parentRef = node.getRaw(\"Parent\");\n return node.getAsync(\"Parent\");\n }).then(function (parent) {\n if (!parent) {\n return null;\n }\n\n if (!(0, _primitives.isDict)(parent)) {\n throw new _util.FormatError(\"Parent must be a dictionary.\");\n }\n\n return parent.getAsync(\"Kids\");\n }).then(function (kids) {\n if (!kids) {\n return null;\n }\n\n const kidPromises = [];\n let found = false;\n\n for (let i = 0, ii = kids.length; i < ii; i++) {\n const kid = kids[i];\n\n if (!(0, _primitives.isRef)(kid)) {\n throw new _util.FormatError(\"Kid must be a reference.\");\n }\n\n if ((0, _primitives.isRefsEqual)(kid, kidRef)) {\n found = true;\n break;\n }\n\n kidPromises.push(xref.fetchAsync(kid).then(function (obj) {\n if (!(0, _primitives.isDict)(obj)) {\n throw new _util.FormatError(\"Kid node must be a dictionary.\");\n }\n\n if (obj.has(\"Count\")) {\n total += obj.get(\"Count\");\n } else {\n total++;\n }\n }));\n }\n\n if (!found) {\n throw new _util.FormatError(\"Kid reference not found in parent's kids.\");\n }\n\n return Promise.all(kidPromises).then(function () {\n return [total, parentRef];\n });\n });\n }\n\n let total = 0;\n\n function next(ref) {\n return pagesBeforeRef(ref).then(function (args) {\n if (!args) {\n return total;\n }\n\n const [count, parentRef] = args;\n total += count;\n return next(parentRef);\n });\n }\n\n return next(pageRef);\n }\n\n static parseDestDictionary(params) {\n function addDefaultProtocolToUrl(url) {\n return url.startsWith(\"www.\") ? `http://${url}` : url;\n }\n\n function tryConvertUrlEncoding(url) {\n try {\n return (0, _util.stringToUTF8String)(url);\n } catch (e) {\n return url;\n }\n }\n\n const destDict = params.destDict;\n\n if (!(0, _primitives.isDict)(destDict)) {\n (0, _util.warn)(\"parseDestDictionary: `destDict` must be a dictionary.\");\n return;\n }\n\n const resultObj = params.resultObj;\n\n if (typeof resultObj !== \"object\") {\n (0, _util.warn)(\"parseDestDictionary: `resultObj` must be an object.\");\n return;\n }\n\n const docBaseUrl = params.docBaseUrl || null;\n let action = destDict.get(\"A\"),\n url,\n dest;\n\n if (!(0, _primitives.isDict)(action) && destDict.has(\"Dest\")) {\n action = destDict.get(\"Dest\");\n }\n\n if ((0, _primitives.isDict)(action)) {\n const actionType = action.get(\"S\");\n\n if (!(0, _primitives.isName)(actionType)) {\n (0, _util.warn)(\"parseDestDictionary: Invalid type in Action dictionary.\");\n return;\n }\n\n const actionName = actionType.name;\n\n switch (actionName) {\n case \"URI\":\n url = action.get(\"URI\");\n\n if ((0, _primitives.isName)(url)) {\n url = \"/\" + url.name;\n } else if ((0, _util.isString)(url)) {\n url = addDefaultProtocolToUrl(url);\n }\n\n break;\n\n case \"GoTo\":\n dest = action.get(\"D\");\n break;\n\n case \"Launch\":\n case \"GoToR\":\n const urlDict = action.get(\"F\");\n\n if ((0, _primitives.isDict)(urlDict)) {\n url = urlDict.get(\"F\") || null;\n } else if ((0, _util.isString)(urlDict)) {\n url = urlDict;\n }\n\n let remoteDest = action.get(\"D\");\n\n if (remoteDest) {\n if ((0, _primitives.isName)(remoteDest)) {\n remoteDest = remoteDest.name;\n }\n\n if ((0, _util.isString)(url)) {\n const baseUrl = url.split(\"#\")[0];\n\n if ((0, _util.isString)(remoteDest)) {\n url = baseUrl + \"#\" + remoteDest;\n } else if (Array.isArray(remoteDest)) {\n url = baseUrl + \"#\" + JSON.stringify(remoteDest);\n }\n }\n }\n\n const newWindow = action.get(\"NewWindow\");\n\n if ((0, _util.isBool)(newWindow)) {\n resultObj.newWindow = newWindow;\n }\n\n break;\n\n case \"Named\":\n const namedAction = action.get(\"N\");\n\n if ((0, _primitives.isName)(namedAction)) {\n resultObj.action = namedAction.name;\n }\n\n break;\n\n case \"JavaScript\":\n const jsAction = action.get(\"JS\");\n let js;\n\n if ((0, _primitives.isStream)(jsAction)) {\n js = (0, _util.bytesToString)(jsAction.getBytes());\n } else if ((0, _util.isString)(jsAction)) {\n js = jsAction;\n }\n\n if (js) {\n const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\"];\n const regex = new RegExp(\"^\\\\s*(\" + URL_OPEN_METHODS.join(\"|\").split(\".\").join(\"\\\\.\") + \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\", \"i\");\n const jsUrl = regex.exec((0, _util.stringToPDFString)(js));\n\n if (jsUrl && jsUrl[2]) {\n url = jsUrl[2];\n\n if (jsUrl[3] === \"true\" && jsUrl[1] === \"app.launchURL\") {\n resultObj.newWindow = true;\n }\n\n break;\n }\n }\n\n default:\n (0, _util.warn)(`parseDestDictionary: unsupported action type \"${actionName}\".`);\n break;\n }\n } else if (destDict.has(\"Dest\")) {\n dest = destDict.get(\"Dest\");\n }\n\n if ((0, _util.isString)(url)) {\n url = tryConvertUrlEncoding(url);\n const absoluteUrl = (0, _util.createValidAbsoluteUrl)(url, docBaseUrl);\n\n if (absoluteUrl) {\n resultObj.url = absoluteUrl.href;\n }\n\n resultObj.unsafeUrl = url;\n }\n\n if (dest) {\n if ((0, _primitives.isName)(dest)) {\n dest = dest.name;\n }\n\n if ((0, _util.isString)(dest) || Array.isArray(dest)) {\n resultObj.dest = dest;\n }\n }\n }\n\n}\n\nexports.Catalog = Catalog;\n\nvar XRef = function XRefClosure() {\n function XRef(stream, pdfManager) {\n this.stream = stream;\n this.pdfManager = pdfManager;\n this.entries = [];\n this.xrefstms = Object.create(null);\n this._cacheMap = new Map();\n this.stats = {\n streamTypes: Object.create(null),\n fontTypes: Object.create(null)\n };\n this._newRefNum = null;\n }\n\n XRef.prototype = {\n getNewRef: function XRef_getNewRef() {\n if (this._newRefNum === null) {\n this._newRefNum = this.entries.length;\n }\n\n return _primitives.Ref.get(this._newRefNum++, 0);\n },\n resetNewRef: function XRef_resetNewRef() {\n this._newRefNum = null;\n },\n setStartXRef: function XRef_setStartXRef(startXRef) {\n this.startXRefQueue = [startXRef];\n },\n parse: function XRef_parse(recoveryMode) {\n var trailerDict;\n\n if (!recoveryMode) {\n trailerDict = this.readXRef();\n } else {\n (0, _util.warn)(\"Indexing all PDF objects\");\n trailerDict = this.indexObjects();\n }\n\n trailerDict.assignXref(this);\n this.trailer = trailerDict;\n let encrypt;\n\n try {\n encrypt = trailerDict.get(\"Encrypt\");\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.warn)(`XRef.parse - Invalid \"Encrypt\" reference: \"${ex}\".`);\n }\n\n if ((0, _primitives.isDict)(encrypt)) {\n var ids = trailerDict.get(\"ID\");\n var fileId = ids && ids.length ? ids[0] : \"\";\n encrypt.suppressEncryption = true;\n this.encrypt = new _crypto.CipherTransformFactory(encrypt, fileId, this.pdfManager.password);\n }\n\n let root;\n\n try {\n root = trailerDict.get(\"Root\");\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.warn)(`XRef.parse - Invalid \"Root\" reference: \"${ex}\".`);\n }\n\n if ((0, _primitives.isDict)(root) && root.has(\"Pages\")) {\n this.root = root;\n } else {\n if (!recoveryMode) {\n throw new _core_utils.XRefParseException();\n }\n\n throw new _util.FormatError(\"Invalid root reference\");\n }\n },\n processXRefTable: function XRef_processXRefTable(parser) {\n if (!(\"tableState\" in this)) {\n this.tableState = {\n entryNum: 0,\n streamPos: parser.lexer.stream.pos,\n parserBuf1: parser.buf1,\n parserBuf2: parser.buf2\n };\n }\n\n var obj = this.readXRefTable(parser);\n\n if (!(0, _primitives.isCmd)(obj, \"trailer\")) {\n throw new _util.FormatError(\"Invalid XRef table: could not find trailer dictionary\");\n }\n\n var dict = parser.getObj();\n\n if (!(0, _primitives.isDict)(dict) && dict.dict) {\n dict = dict.dict;\n }\n\n if (!(0, _primitives.isDict)(dict)) {\n throw new _util.FormatError(\"Invalid XRef table: could not parse trailer dictionary\");\n }\n\n delete this.tableState;\n return dict;\n },\n readXRefTable: function XRef_readXRefTable(parser) {\n var stream = parser.lexer.stream;\n var tableState = this.tableState;\n stream.pos = tableState.streamPos;\n parser.buf1 = tableState.parserBuf1;\n parser.buf2 = tableState.parserBuf2;\n var obj;\n\n while (true) {\n if (!(\"firstEntryNum\" in tableState) || !(\"entryCount\" in tableState)) {\n if ((0, _primitives.isCmd)(obj = parser.getObj(), \"trailer\")) {\n break;\n }\n\n tableState.firstEntryNum = obj;\n tableState.entryCount = parser.getObj();\n }\n\n var first = tableState.firstEntryNum;\n var count = tableState.entryCount;\n\n if (!Number.isInteger(first) || !Number.isInteger(count)) {\n throw new _util.FormatError(\"Invalid XRef table: wrong types in subsection header\");\n }\n\n for (var i = tableState.entryNum; i < count; i++) {\n tableState.streamPos = stream.pos;\n tableState.entryNum = i;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n var entry = {};\n entry.offset = parser.getObj();\n entry.gen = parser.getObj();\n var type = parser.getObj();\n\n if (type instanceof _primitives.Cmd) {\n switch (type.cmd) {\n case \"f\":\n entry.free = true;\n break;\n\n case \"n\":\n entry.uncompressed = true;\n break;\n }\n }\n\n if (!Number.isInteger(entry.offset) || !Number.isInteger(entry.gen) || !(entry.free || entry.uncompressed)) {\n throw new _util.FormatError(`Invalid entry in XRef subsection: ${first}, ${count}`);\n }\n\n if (i === 0 && entry.free && first === 1) {\n first = 0;\n }\n\n if (!this.entries[i + first]) {\n this.entries[i + first] = entry;\n }\n }\n\n tableState.entryNum = 0;\n tableState.streamPos = stream.pos;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n delete tableState.firstEntryNum;\n delete tableState.entryCount;\n }\n\n if (this.entries[0] && !this.entries[0].free) {\n throw new _util.FormatError(\"Invalid XRef table: unexpected first object\");\n }\n\n return obj;\n },\n processXRefStream: function XRef_processXRefStream(stream) {\n if (!(\"streamState\" in this)) {\n var streamParameters = stream.dict;\n var byteWidths = streamParameters.get(\"W\");\n var range = streamParameters.get(\"Index\");\n\n if (!range) {\n range = [0, streamParameters.get(\"Size\")];\n }\n\n this.streamState = {\n entryRanges: range,\n byteWidths,\n entryNum: 0,\n streamPos: stream.pos\n };\n }\n\n this.readXRefStream(stream);\n delete this.streamState;\n return stream.dict;\n },\n readXRefStream: function XRef_readXRefStream(stream) {\n var i, j;\n var streamState = this.streamState;\n stream.pos = streamState.streamPos;\n var byteWidths = streamState.byteWidths;\n var typeFieldWidth = byteWidths[0];\n var offsetFieldWidth = byteWidths[1];\n var generationFieldWidth = byteWidths[2];\n var entryRanges = streamState.entryRanges;\n\n while (entryRanges.length > 0) {\n var first = entryRanges[0];\n var n = entryRanges[1];\n\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new _util.FormatError(`Invalid XRef range fields: ${first}, ${n}`);\n }\n\n if (!Number.isInteger(typeFieldWidth) || !Number.isInteger(offsetFieldWidth) || !Number.isInteger(generationFieldWidth)) {\n throw new _util.FormatError(`Invalid XRef entry fields length: ${first}, ${n}`);\n }\n\n for (i = streamState.entryNum; i < n; ++i) {\n streamState.entryNum = i;\n streamState.streamPos = stream.pos;\n var type = 0,\n offset = 0,\n generation = 0;\n\n for (j = 0; j < typeFieldWidth; ++j) {\n type = type << 8 | stream.getByte();\n }\n\n if (typeFieldWidth === 0) {\n type = 1;\n }\n\n for (j = 0; j < offsetFieldWidth; ++j) {\n offset = offset << 8 | stream.getByte();\n }\n\n for (j = 0; j < generationFieldWidth; ++j) {\n generation = generation << 8 | stream.getByte();\n }\n\n var entry = {};\n entry.offset = offset;\n entry.gen = generation;\n\n switch (type) {\n case 0:\n entry.free = true;\n break;\n\n case 1:\n entry.uncompressed = true;\n break;\n\n case 2:\n break;\n\n default:\n throw new _util.FormatError(`Invalid XRef entry type: ${type}`);\n }\n\n if (!this.entries[first + i]) {\n this.entries[first + i] = entry;\n }\n }\n\n streamState.entryNum = 0;\n streamState.streamPos = stream.pos;\n entryRanges.splice(0, 2);\n }\n },\n indexObjects: function XRef_indexObjects() {\n var TAB = 0x9,\n LF = 0xa,\n CR = 0xd,\n SPACE = 0x20;\n var PERCENT = 0x25,\n LT = 0x3c;\n\n function readToken(data, offset) {\n var token = \"\",\n ch = data[offset];\n\n while (ch !== LF && ch !== CR && ch !== LT) {\n if (++offset >= data.length) {\n break;\n }\n\n token += String.fromCharCode(ch);\n ch = data[offset];\n }\n\n return token;\n }\n\n function skipUntil(data, offset, what) {\n var length = what.length,\n dataLength = data.length;\n var skipped = 0;\n\n while (offset < dataLength) {\n var i = 0;\n\n while (i < length && data[offset + i] === what[i]) {\n ++i;\n }\n\n if (i >= length) {\n break;\n }\n\n offset++;\n skipped++;\n }\n\n return skipped;\n }\n\n var objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n const endobjRegExp = /\\bendobj[\\b\\s]$/;\n const nestedObjRegExp = /\\s+(\\d+\\s+\\d+\\s+obj[\\b\\s<])$/;\n const CHECK_CONTENT_LENGTH = 25;\n var trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n var startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]);\n const objBytes = new Uint8Array([111, 98, 106]);\n var xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n this.entries.length = 0;\n var stream = this.stream;\n stream.pos = 0;\n var buffer = stream.getBytes();\n var position = stream.start,\n length = buffer.length;\n var trailers = [],\n xrefStms = [];\n\n while (position < length) {\n var ch = buffer[position];\n\n if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n ++position;\n continue;\n }\n\n if (ch === PERCENT) {\n do {\n ++position;\n\n if (position >= length) {\n break;\n }\n\n ch = buffer[position];\n } while (ch !== LF && ch !== CR);\n\n continue;\n }\n\n var token = readToken(buffer, position);\n var m;\n\n if (token.startsWith(\"xref\") && (token.length === 4 || /\\s/.test(token[4]))) {\n position += skipUntil(buffer, position, trailerBytes);\n trailers.push(position);\n position += skipUntil(buffer, position, startxrefBytes);\n } else if (m = objRegExp.exec(token)) {\n const num = m[1] | 0,\n gen = m[2] | 0;\n\n if (!this.entries[num] || this.entries[num].gen === gen) {\n this.entries[num] = {\n offset: position - stream.start,\n gen,\n uncompressed: true\n };\n }\n\n let contentLength,\n startPos = position + token.length;\n\n while (startPos < buffer.length) {\n const endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4;\n contentLength = endPos - position;\n const checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos);\n const tokenStr = (0, _util.bytesToString)(buffer.subarray(checkPos, endPos));\n\n if (endobjRegExp.test(tokenStr)) {\n break;\n } else {\n const objToken = nestedObjRegExp.exec(tokenStr);\n\n if (objToken && objToken[1]) {\n (0, _util.warn)('indexObjects: Found new \"obj\" inside of another \"obj\", ' + 'caused by missing \"endobj\" -- trying to recover.');\n contentLength -= objToken[1].length;\n break;\n }\n }\n\n startPos = endPos;\n }\n\n const content = buffer.subarray(position, position + contentLength);\n var xrefTagOffset = skipUntil(content, 0, xrefBytes);\n\n if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) {\n xrefStms.push(position - stream.start);\n this.xrefstms[position - stream.start] = 1;\n }\n\n position += contentLength;\n } else if (token.startsWith(\"trailer\") && (token.length === 7 || /\\s/.test(token[7]))) {\n trailers.push(position);\n position += skipUntil(buffer, position, startxrefBytes);\n } else {\n position += token.length + 1;\n }\n }\n\n var i, ii;\n\n for (i = 0, ii = xrefStms.length; i < ii; ++i) {\n this.startXRefQueue.push(xrefStms[i]);\n this.readXRef(true);\n }\n\n let trailerDict;\n\n for (i = 0, ii = trailers.length; i < ii; ++i) {\n stream.pos = trailers[i];\n const parser = new _parser.Parser({\n lexer: new _parser.Lexer(stream),\n xref: this,\n allowStreams: true,\n recoveryMode: true\n });\n var obj = parser.getObj();\n\n if (!(0, _primitives.isCmd)(obj, \"trailer\")) {\n continue;\n }\n\n const dict = parser.getObj();\n\n if (!(0, _primitives.isDict)(dict)) {\n continue;\n }\n\n let rootDict;\n\n try {\n rootDict = dict.get(\"Root\");\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n continue;\n }\n\n if (!(0, _primitives.isDict)(rootDict) || !rootDict.has(\"Pages\")) {\n continue;\n }\n\n if (dict.has(\"ID\")) {\n return dict;\n }\n\n trailerDict = dict;\n }\n\n if (trailerDict) {\n return trailerDict;\n }\n\n throw new _util.InvalidPDFException(\"Invalid PDF structure.\");\n },\n readXRef: function XRef_readXRef(recoveryMode) {\n var stream = this.stream;\n const startXRefParsedCache = Object.create(null);\n\n try {\n while (this.startXRefQueue.length) {\n var startXRef = this.startXRefQueue[0];\n\n if (startXRefParsedCache[startXRef]) {\n (0, _util.warn)(\"readXRef - skipping XRef table since it was already parsed.\");\n this.startXRefQueue.shift();\n continue;\n }\n\n startXRefParsedCache[startXRef] = true;\n stream.pos = startXRef + stream.start;\n const parser = new _parser.Parser({\n lexer: new _parser.Lexer(stream),\n xref: this,\n allowStreams: true\n });\n var obj = parser.getObj();\n var dict;\n\n if ((0, _primitives.isCmd)(obj, \"xref\")) {\n dict = this.processXRefTable(parser);\n\n if (!this.topDict) {\n this.topDict = dict;\n }\n\n obj = dict.get(\"XRefStm\");\n\n if (Number.isInteger(obj)) {\n var pos = obj;\n\n if (!(pos in this.xrefstms)) {\n this.xrefstms[pos] = 1;\n this.startXRefQueue.push(pos);\n }\n }\n } else if (Number.isInteger(obj)) {\n if (!Number.isInteger(parser.getObj()) || !(0, _primitives.isCmd)(parser.getObj(), \"obj\") || !(0, _primitives.isStream)(obj = parser.getObj())) {\n throw new _util.FormatError(\"Invalid XRef stream\");\n }\n\n dict = this.processXRefStream(obj);\n\n if (!this.topDict) {\n this.topDict = dict;\n }\n\n if (!dict) {\n throw new _util.FormatError(\"Failed to read XRef stream\");\n }\n } else {\n throw new _util.FormatError(\"Invalid XRef stream header\");\n }\n\n obj = dict.get(\"Prev\");\n\n if (Number.isInteger(obj)) {\n this.startXRefQueue.push(obj);\n } else if ((0, _primitives.isRef)(obj)) {\n this.startXRefQueue.push(obj.num);\n }\n\n this.startXRefQueue.shift();\n }\n\n return this.topDict;\n } catch (e) {\n if (e instanceof _core_utils.MissingDataException) {\n throw e;\n }\n\n (0, _util.info)(\"(while reading XRef): \" + e);\n }\n\n if (recoveryMode) {\n return undefined;\n }\n\n throw new _core_utils.XRefParseException();\n },\n getEntry: function XRef_getEntry(i) {\n var xrefEntry = this.entries[i];\n\n if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n return xrefEntry;\n }\n\n return null;\n },\n fetchIfRef: function XRef_fetchIfRef(obj, suppressEncryption) {\n if (obj instanceof _primitives.Ref) {\n return this.fetch(obj, suppressEncryption);\n }\n\n return obj;\n },\n fetch: function XRef_fetch(ref, suppressEncryption) {\n if (!(ref instanceof _primitives.Ref)) {\n throw new Error(\"ref object is not a reference\");\n }\n\n const num = ref.num;\n\n const cacheEntry = this._cacheMap.get(num);\n\n if (cacheEntry !== undefined) {\n if (cacheEntry instanceof _primitives.Dict && !cacheEntry.objId) {\n cacheEntry.objId = ref.toString();\n }\n\n return cacheEntry;\n }\n\n let xrefEntry = this.getEntry(num);\n\n if (xrefEntry === null) {\n this._cacheMap.set(num, xrefEntry);\n\n return xrefEntry;\n }\n\n if (xrefEntry.uncompressed) {\n xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);\n } else {\n xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption);\n }\n\n if ((0, _primitives.isDict)(xrefEntry)) {\n xrefEntry.objId = ref.toString();\n } else if ((0, _primitives.isStream)(xrefEntry)) {\n xrefEntry.dict.objId = ref.toString();\n }\n\n return xrefEntry;\n },\n\n fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\n var gen = ref.gen;\n var num = ref.num;\n\n if (xrefEntry.gen !== gen) {\n throw new _core_utils.XRefEntryException(`Inconsistent generation in XRef: ${ref}`);\n }\n\n var stream = this.stream.makeSubStream(xrefEntry.offset + this.stream.start);\n const parser = new _parser.Parser({\n lexer: new _parser.Lexer(stream),\n xref: this,\n allowStreams: true\n });\n var obj1 = parser.getObj();\n var obj2 = parser.getObj();\n var obj3 = parser.getObj();\n\n if (obj1 !== num || obj2 !== gen || !(obj3 instanceof _primitives.Cmd)) {\n throw new _core_utils.XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n }\n\n if (obj3.cmd !== \"obj\") {\n if (obj3.cmd.startsWith(\"obj\")) {\n num = parseInt(obj3.cmd.substring(3), 10);\n\n if (!Number.isNaN(num)) {\n return num;\n }\n }\n\n throw new _core_utils.XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n }\n\n if (this.encrypt && !suppressEncryption) {\n xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));\n } else {\n xrefEntry = parser.getObj();\n }\n\n if (!(0, _primitives.isStream)(xrefEntry)) {\n this._cacheMap.set(num, xrefEntry);\n }\n\n return xrefEntry;\n },\n\n fetchCompressed(ref, xrefEntry, suppressEncryption = false) {\n const tableOffset = xrefEntry.offset;\n const stream = this.fetch(_primitives.Ref.get(tableOffset, 0));\n\n if (!(0, _primitives.isStream)(stream)) {\n throw new _util.FormatError(\"bad ObjStm stream\");\n }\n\n const first = stream.dict.get(\"First\");\n const n = stream.dict.get(\"N\");\n\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new _util.FormatError(\"invalid first and n parameters for ObjStm stream\");\n }\n\n const parser = new _parser.Parser({\n lexer: new _parser.Lexer(stream),\n xref: this,\n allowStreams: true\n });\n const nums = new Array(n);\n\n for (let i = 0; i < n; ++i) {\n const num = parser.getObj();\n\n if (!Number.isInteger(num)) {\n throw new _util.FormatError(`invalid object number in the ObjStm stream: ${num}`);\n }\n\n const offset = parser.getObj();\n\n if (!Number.isInteger(offset)) {\n throw new _util.FormatError(`invalid object offset in the ObjStm stream: ${offset}`);\n }\n\n nums[i] = num;\n }\n\n const entries = new Array(n);\n\n for (let i = 0; i < n; ++i) {\n const obj = parser.getObj();\n entries[i] = obj;\n\n if (parser.buf1 instanceof _primitives.Cmd && parser.buf1.cmd === \"endobj\") {\n parser.shift();\n }\n\n if ((0, _primitives.isStream)(obj)) {\n continue;\n }\n\n const num = nums[i],\n entry = this.entries[num];\n\n if (entry && entry.offset === tableOffset && entry.gen === i) {\n this._cacheMap.set(num, obj);\n }\n }\n\n xrefEntry = entries[xrefEntry.gen];\n\n if (xrefEntry === undefined) {\n throw new _core_utils.XRefEntryException(`Bad (compressed) XRef entry: ${ref}`);\n }\n\n return xrefEntry;\n },\n\n async fetchIfRefAsync(obj, suppressEncryption) {\n if (obj instanceof _primitives.Ref) {\n return this.fetchAsync(obj, suppressEncryption);\n }\n\n return obj;\n },\n\n async fetchAsync(ref, suppressEncryption) {\n try {\n return this.fetch(ref, suppressEncryption);\n } catch (ex) {\n if (!(ex instanceof _core_utils.MissingDataException)) {\n throw ex;\n }\n\n await this.pdfManager.requestRange(ex.begin, ex.end);\n return this.fetchAsync(ref, suppressEncryption);\n }\n },\n\n getCatalogObj: function XRef_getCatalogObj() {\n return this.root;\n }\n };\n return XRef;\n}();\n\nexports.XRef = XRef;\n\nclass NameOrNumberTree {\n constructor(root, xref, type) {\n if (this.constructor === NameOrNumberTree) {\n (0, _util.unreachable)(\"Cannot initialize NameOrNumberTree.\");\n }\n\n this.root = root;\n this.xref = xref;\n this._type = type;\n }\n\n getAll() {\n const dict = Object.create(null);\n\n if (!this.root) {\n return dict;\n }\n\n const xref = this.xref;\n const processed = new _primitives.RefSet();\n processed.put(this.root);\n const queue = [this.root];\n\n while (queue.length > 0) {\n const obj = xref.fetchIfRef(queue.shift());\n\n if (!(0, _primitives.isDict)(obj)) {\n continue;\n }\n\n if (obj.has(\"Kids\")) {\n const kids = obj.get(\"Kids\");\n\n for (let i = 0, ii = kids.length; i < ii; i++) {\n const kid = kids[i];\n\n if (processed.has(kid)) {\n throw new _util.FormatError(`Duplicate entry in \"${this._type}\" tree.`);\n }\n\n queue.push(kid);\n processed.put(kid);\n }\n\n continue;\n }\n\n const entries = obj.get(this._type);\n\n if (Array.isArray(entries)) {\n for (let i = 0, ii = entries.length; i < ii; i += 2) {\n dict[xref.fetchIfRef(entries[i])] = xref.fetchIfRef(entries[i + 1]);\n }\n }\n }\n\n return dict;\n }\n\n get(key) {\n if (!this.root) {\n return null;\n }\n\n const xref = this.xref;\n let kidsOrEntries = xref.fetchIfRef(this.root);\n let loopCount = 0;\n const MAX_LEVELS = 10;\n\n while (kidsOrEntries.has(\"Kids\")) {\n if (++loopCount > MAX_LEVELS) {\n (0, _util.warn)(`Search depth limit reached for \"${this._type}\" tree.`);\n return null;\n }\n\n const kids = kidsOrEntries.get(\"Kids\");\n\n if (!Array.isArray(kids)) {\n return null;\n }\n\n let l = 0,\n r = kids.length - 1;\n\n while (l <= r) {\n const m = l + r >> 1;\n const kid = xref.fetchIfRef(kids[m]);\n const limits = kid.get(\"Limits\");\n\n if (key < xref.fetchIfRef(limits[0])) {\n r = m - 1;\n } else if (key > xref.fetchIfRef(limits[1])) {\n l = m + 1;\n } else {\n kidsOrEntries = xref.fetchIfRef(kids[m]);\n break;\n }\n }\n\n if (l > r) {\n return null;\n }\n }\n\n const entries = kidsOrEntries.get(this._type);\n\n if (Array.isArray(entries)) {\n let l = 0,\n r = entries.length - 2;\n\n while (l <= r) {\n const tmp = l + r >> 1,\n m = tmp + (tmp & 1);\n const currentKey = xref.fetchIfRef(entries[m]);\n\n if (key < currentKey) {\n r = m - 2;\n } else if (key > currentKey) {\n l = m + 2;\n } else {\n return xref.fetchIfRef(entries[m + 1]);\n }\n }\n\n (0, _util.info)(`Falling back to an exhaustive search, for key \"${key}\", ` + `in \"${this._type}\" tree.`);\n\n for (let m = 0, mm = entries.length; m < mm; m += 2) {\n const currentKey = xref.fetchIfRef(entries[m]);\n\n if (currentKey === key) {\n (0, _util.warn)(`The \"${key}\" key was found at an incorrect, ` + `i.e. out-of-order, position in \"${this._type}\" tree.`);\n return xref.fetchIfRef(entries[m + 1]);\n }\n }\n }\n\n return null;\n }\n\n}\n\nclass NameTree extends NameOrNumberTree {\n constructor(root, xref) {\n super(root, xref, \"Names\");\n }\n\n}\n\nclass NumberTree extends NameOrNumberTree {\n constructor(root, xref) {\n super(root, xref, \"Nums\");\n }\n\n}\n\nvar FileSpec = function FileSpecClosure() {\n function FileSpec(root, xref) {\n if (!root || !(0, _primitives.isDict)(root)) {\n return;\n }\n\n this.xref = xref;\n this.root = root;\n\n if (root.has(\"FS\")) {\n this.fs = root.get(\"FS\");\n }\n\n this.description = root.has(\"Desc\") ? (0, _util.stringToPDFString)(root.get(\"Desc\")) : \"\";\n\n if (root.has(\"RF\")) {\n (0, _util.warn)(\"Related file specifications are not supported\");\n }\n\n this.contentAvailable = true;\n\n if (!root.has(\"EF\")) {\n this.contentAvailable = false;\n (0, _util.warn)(\"Non-embedded file specifications are not supported\");\n }\n }\n\n function pickPlatformItem(dict) {\n if (dict.has(\"UF\")) {\n return dict.get(\"UF\");\n } else if (dict.has(\"F\")) {\n return dict.get(\"F\");\n } else if (dict.has(\"Unix\")) {\n return dict.get(\"Unix\");\n } else if (dict.has(\"Mac\")) {\n return dict.get(\"Mac\");\n } else if (dict.has(\"DOS\")) {\n return dict.get(\"DOS\");\n }\n\n return null;\n }\n\n FileSpec.prototype = {\n get filename() {\n if (!this._filename && this.root) {\n var filename = pickPlatformItem(this.root) || \"unnamed\";\n this._filename = (0, _util.stringToPDFString)(filename).replace(/\\\\\\\\/g, \"\\\\\").replace(/\\\\\\//g, \"/\").replace(/\\\\/g, \"/\");\n }\n\n return this._filename;\n },\n\n get content() {\n if (!this.contentAvailable) {\n return null;\n }\n\n if (!this.contentRef && this.root) {\n this.contentRef = pickPlatformItem(this.root.get(\"EF\"));\n }\n\n var content = null;\n\n if (this.contentRef) {\n var xref = this.xref;\n var fileObj = xref.fetchIfRef(this.contentRef);\n\n if (fileObj && (0, _primitives.isStream)(fileObj)) {\n content = fileObj.getBytes();\n } else {\n (0, _util.warn)(\"Embedded file specification points to non-existing/invalid \" + \"content\");\n }\n } else {\n (0, _util.warn)(\"Embedded file specification does not have a content\");\n }\n\n return content;\n },\n\n get serializable() {\n return {\n filename: this.filename,\n content: this.content\n };\n }\n\n };\n return FileSpec;\n}();\n\nexports.FileSpec = FileSpec;\n\nconst ObjectLoader = function () {\n function mayHaveChildren(value) {\n return value instanceof _primitives.Ref || value instanceof _primitives.Dict || Array.isArray(value) || (0, _primitives.isStream)(value);\n }\n\n function addChildren(node, nodesToVisit) {\n if (node instanceof _primitives.Dict) {\n node = node.getRawValues();\n } else if ((0, _primitives.isStream)(node)) {\n node = node.dict.getRawValues();\n } else if (!Array.isArray(node)) {\n return;\n }\n\n for (const rawValue of node) {\n if (mayHaveChildren(rawValue)) {\n nodesToVisit.push(rawValue);\n }\n }\n }\n\n function ObjectLoader(dict, keys, xref) {\n this.dict = dict;\n this.keys = keys;\n this.xref = xref;\n this.refSet = null;\n }\n\n ObjectLoader.prototype = {\n async load() {\n if (!this.xref.stream.allChunksLoaded || this.xref.stream.allChunksLoaded()) {\n return undefined;\n }\n\n const {\n keys,\n dict\n } = this;\n this.refSet = new _primitives.RefSet();\n const nodesToVisit = [];\n\n for (let i = 0, ii = keys.length; i < ii; i++) {\n const rawValue = dict.getRaw(keys[i]);\n\n if (rawValue !== undefined) {\n nodesToVisit.push(rawValue);\n }\n }\n\n return this._walk(nodesToVisit);\n },\n\n async _walk(nodesToVisit) {\n const nodesToRevisit = [];\n const pendingRequests = [];\n\n while (nodesToVisit.length) {\n let currentNode = nodesToVisit.pop();\n\n if (currentNode instanceof _primitives.Ref) {\n if (this.refSet.has(currentNode)) {\n continue;\n }\n\n try {\n this.refSet.put(currentNode);\n currentNode = this.xref.fetch(currentNode);\n } catch (ex) {\n if (!(ex instanceof _core_utils.MissingDataException)) {\n throw ex;\n }\n\n nodesToRevisit.push(currentNode);\n pendingRequests.push({\n begin: ex.begin,\n end: ex.end\n });\n }\n }\n\n if (currentNode && currentNode.getBaseStreams) {\n const baseStreams = currentNode.getBaseStreams();\n let foundMissingData = false;\n\n for (let i = 0, ii = baseStreams.length; i < ii; i++) {\n const stream = baseStreams[i];\n\n if (stream.allChunksLoaded && !stream.allChunksLoaded()) {\n foundMissingData = true;\n pendingRequests.push({\n begin: stream.start,\n end: stream.end\n });\n }\n }\n\n if (foundMissingData) {\n nodesToRevisit.push(currentNode);\n }\n }\n\n addChildren(currentNode, nodesToVisit);\n }\n\n if (pendingRequests.length) {\n await this.xref.stream.manager.requestRanges(pendingRequests);\n\n for (let i = 0, ii = nodesToRevisit.length; i < ii; i++) {\n const node = nodesToRevisit[i];\n\n if (node instanceof _primitives.Ref) {\n this.refSet.remove(node);\n }\n }\n\n return this._walk(nodesToRevisit);\n }\n\n this.refSet = null;\n return undefined;\n }\n\n };\n return ObjectLoader;\n}();\n\nexports.ObjectLoader = ObjectLoader;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Parser = exports.Linearization = exports.Lexer = void 0;\n\nvar _stream = __w_pdfjs_require__(12);\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _ccitt_stream = __w_pdfjs_require__(13);\n\nvar _jbig2_stream = __w_pdfjs_require__(15);\n\nvar _jpeg_stream = __w_pdfjs_require__(18);\n\nvar _jpx_stream = __w_pdfjs_require__(20);\n\nconst MAX_LENGTH_TO_CACHE = 1000;\nconst MAX_ADLER32_LENGTH = 5552;\n\nfunction computeAdler32(bytes) {\n const bytesLength = bytes.length;\n let a = 1,\n b = 0;\n\n for (let i = 0; i < bytesLength; ++i) {\n a += bytes[i] & 0xff;\n b += a;\n }\n\n return b % 65521 << 16 | a % 65521;\n}\n\nclass Parser {\n constructor({\n lexer,\n xref,\n allowStreams = false,\n recoveryMode = false\n }) {\n this.lexer = lexer;\n this.xref = xref;\n this.allowStreams = allowStreams;\n this.recoveryMode = recoveryMode;\n this.imageCache = Object.create(null);\n this.refill();\n }\n\n refill() {\n this.buf1 = this.lexer.getObj();\n this.buf2 = this.lexer.getObj();\n }\n\n shift() {\n if (this.buf2 instanceof _primitives.Cmd && this.buf2.cmd === \"ID\") {\n this.buf1 = this.buf2;\n this.buf2 = null;\n } else {\n this.buf1 = this.buf2;\n this.buf2 = this.lexer.getObj();\n }\n }\n\n tryShift() {\n try {\n this.shift();\n return true;\n } catch (e) {\n if (e instanceof _core_utils.MissingDataException) {\n throw e;\n }\n\n return false;\n }\n }\n\n getObj(cipherTransform = null) {\n const buf1 = this.buf1;\n this.shift();\n\n if (buf1 instanceof _primitives.Cmd) {\n switch (buf1.cmd) {\n case \"BI\":\n return this.makeInlineImage(cipherTransform);\n\n case \"[\":\n const array = [];\n\n while (!(0, _primitives.isCmd)(this.buf1, \"]\") && !(0, _primitives.isEOF)(this.buf1)) {\n array.push(this.getObj(cipherTransform));\n }\n\n if ((0, _primitives.isEOF)(this.buf1)) {\n if (!this.recoveryMode) {\n throw new _util.FormatError(\"End of file inside array\");\n }\n\n return array;\n }\n\n this.shift();\n return array;\n\n case \"<<\":\n const dict = new _primitives.Dict(this.xref);\n\n while (!(0, _primitives.isCmd)(this.buf1, \">>\") && !(0, _primitives.isEOF)(this.buf1)) {\n if (!(0, _primitives.isName)(this.buf1)) {\n (0, _util.info)(\"Malformed dictionary: key must be a name object\");\n this.shift();\n continue;\n }\n\n const key = this.buf1.name;\n this.shift();\n\n if ((0, _primitives.isEOF)(this.buf1)) {\n break;\n }\n\n dict.set(key, this.getObj(cipherTransform));\n }\n\n if ((0, _primitives.isEOF)(this.buf1)) {\n if (!this.recoveryMode) {\n throw new _util.FormatError(\"End of file inside dictionary\");\n }\n\n return dict;\n }\n\n if ((0, _primitives.isCmd)(this.buf2, \"stream\")) {\n return this.allowStreams ? this.makeStream(dict, cipherTransform) : dict;\n }\n\n this.shift();\n return dict;\n\n default:\n return buf1;\n }\n }\n\n if (Number.isInteger(buf1)) {\n if (Number.isInteger(this.buf1) && (0, _primitives.isCmd)(this.buf2, \"R\")) {\n const ref = _primitives.Ref.get(buf1, this.buf1);\n\n this.shift();\n this.shift();\n return ref;\n }\n\n return buf1;\n }\n\n if (typeof buf1 === \"string\") {\n if (cipherTransform) {\n return cipherTransform.decryptString(buf1);\n }\n\n return buf1;\n }\n\n return buf1;\n }\n\n findDefaultInlineStreamEnd(stream) {\n const E = 0x45,\n I = 0x49,\n SPACE = 0x20,\n LF = 0xa,\n CR = 0xd,\n NUL = 0x0;\n const lexer = this.lexer,\n startPos = stream.pos,\n n = 10;\n let state = 0,\n ch,\n maybeEIPos;\n\n while ((ch = stream.getByte()) !== -1) {\n if (state === 0) {\n state = ch === E ? 1 : 0;\n } else if (state === 1) {\n state = ch === I ? 2 : 0;\n } else {\n (0, _util.assert)(state === 2, \"findDefaultInlineStreamEnd - invalid state.\");\n\n if (ch === SPACE || ch === LF || ch === CR) {\n maybeEIPos = stream.pos;\n const followingBytes = stream.peekBytes(n);\n\n for (let i = 0, ii = followingBytes.length; i < ii; i++) {\n ch = followingBytes[i];\n\n if (ch === NUL && followingBytes[i + 1] !== NUL) {\n continue;\n }\n\n if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {\n state = 0;\n break;\n }\n }\n\n if (state !== 2) {\n continue;\n }\n\n if (lexer.knownCommands) {\n const nextObj = lexer.peekObj();\n\n if (nextObj instanceof _primitives.Cmd && !lexer.knownCommands[nextObj.cmd]) {\n state = 0;\n }\n } else {\n (0, _util.warn)(\"findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.\");\n }\n\n if (state === 2) {\n break;\n }\n } else {\n state = 0;\n }\n }\n }\n\n if (ch === -1) {\n (0, _util.warn)(\"findDefaultInlineStreamEnd: \" + \"Reached the end of the stream without finding a valid EI marker\");\n\n if (maybeEIPos) {\n (0, _util.warn)('... trying to recover by using the last \"EI\" occurrence.');\n stream.skip(-(stream.pos - maybeEIPos));\n }\n }\n\n let endOffset = 4;\n stream.skip(-endOffset);\n ch = stream.peekByte();\n stream.skip(endOffset);\n\n if (!(0, _core_utils.isWhiteSpace)(ch)) {\n endOffset--;\n }\n\n return stream.pos - endOffset - startPos;\n }\n\n findDCTDecodeInlineStreamEnd(stream) {\n const startPos = stream.pos;\n let foundEOI = false,\n b,\n markerLength;\n\n while ((b = stream.getByte()) !== -1) {\n if (b !== 0xff) {\n continue;\n }\n\n switch (stream.getByte()) {\n case 0x00:\n break;\n\n case 0xff:\n stream.skip(-1);\n break;\n\n case 0xd9:\n foundEOI = true;\n break;\n\n case 0xc0:\n case 0xc1:\n case 0xc2:\n case 0xc3:\n case 0xc5:\n case 0xc6:\n case 0xc7:\n case 0xc9:\n case 0xca:\n case 0xcb:\n case 0xcd:\n case 0xce:\n case 0xcf:\n case 0xc4:\n case 0xcc:\n case 0xda:\n case 0xdb:\n case 0xdc:\n case 0xdd:\n case 0xde:\n case 0xdf:\n case 0xe0:\n case 0xe1:\n case 0xe2:\n case 0xe3:\n case 0xe4:\n case 0xe5:\n case 0xe6:\n case 0xe7:\n case 0xe8:\n case 0xe9:\n case 0xea:\n case 0xeb:\n case 0xec:\n case 0xed:\n case 0xee:\n case 0xef:\n case 0xfe:\n markerLength = stream.getUint16();\n\n if (markerLength > 2) {\n stream.skip(markerLength - 2);\n } else {\n stream.skip(-2);\n }\n\n break;\n }\n\n if (foundEOI) {\n break;\n }\n }\n\n const length = stream.pos - startPos;\n\n if (b === -1) {\n (0, _util.warn)(\"Inline DCTDecode image stream: \" + \"EOI marker not found, searching for /EI/ instead.\");\n stream.skip(-length);\n return this.findDefaultInlineStreamEnd(stream);\n }\n\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n findASCII85DecodeInlineStreamEnd(stream) {\n const TILDE = 0x7e,\n GT = 0x3e;\n const startPos = stream.pos;\n let ch;\n\n while ((ch = stream.getByte()) !== -1) {\n if (ch === TILDE) {\n const tildePos = stream.pos;\n ch = stream.peekByte();\n\n while ((0, _core_utils.isWhiteSpace)(ch)) {\n stream.skip();\n ch = stream.peekByte();\n }\n\n if (ch === GT) {\n stream.skip();\n break;\n }\n\n if (stream.pos > tildePos) {\n const maybeEI = stream.peekBytes(2);\n\n if (maybeEI[0] === 0x45 && maybeEI[1] === 0x49) {\n break;\n }\n }\n }\n }\n\n const length = stream.pos - startPos;\n\n if (ch === -1) {\n (0, _util.warn)(\"Inline ASCII85Decode image stream: \" + \"EOD marker not found, searching for /EI/ instead.\");\n stream.skip(-length);\n return this.findDefaultInlineStreamEnd(stream);\n }\n\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n findASCIIHexDecodeInlineStreamEnd(stream) {\n const GT = 0x3e;\n const startPos = stream.pos;\n let ch;\n\n while ((ch = stream.getByte()) !== -1) {\n if (ch === GT) {\n break;\n }\n }\n\n const length = stream.pos - startPos;\n\n if (ch === -1) {\n (0, _util.warn)(\"Inline ASCIIHexDecode image stream: \" + \"EOD marker not found, searching for /EI/ instead.\");\n stream.skip(-length);\n return this.findDefaultInlineStreamEnd(stream);\n }\n\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n inlineStreamSkipEI(stream) {\n const E = 0x45,\n I = 0x49;\n let state = 0,\n ch;\n\n while ((ch = stream.getByte()) !== -1) {\n if (state === 0) {\n state = ch === E ? 1 : 0;\n } else if (state === 1) {\n state = ch === I ? 2 : 0;\n } else if (state === 2) {\n break;\n }\n }\n }\n\n makeInlineImage(cipherTransform) {\n const lexer = this.lexer;\n const stream = lexer.stream;\n const dict = new _primitives.Dict(this.xref);\n let dictLength;\n\n while (!(0, _primitives.isCmd)(this.buf1, \"ID\") && !(0, _primitives.isEOF)(this.buf1)) {\n if (!(0, _primitives.isName)(this.buf1)) {\n throw new _util.FormatError(\"Dictionary key must be a name object\");\n }\n\n const key = this.buf1.name;\n this.shift();\n\n if ((0, _primitives.isEOF)(this.buf1)) {\n break;\n }\n\n dict.set(key, this.getObj(cipherTransform));\n }\n\n if (lexer.beginInlineImagePos !== -1) {\n dictLength = stream.pos - lexer.beginInlineImagePos;\n }\n\n const filter = dict.get(\"Filter\", \"F\");\n let filterName;\n\n if ((0, _primitives.isName)(filter)) {\n filterName = filter.name;\n } else if (Array.isArray(filter)) {\n const filterZero = this.xref.fetchIfRef(filter[0]);\n\n if ((0, _primitives.isName)(filterZero)) {\n filterName = filterZero.name;\n }\n }\n\n const startPos = stream.pos;\n let length;\n\n if (filterName === \"DCTDecode\" || filterName === \"DCT\") {\n length = this.findDCTDecodeInlineStreamEnd(stream);\n } else if (filterName === \"ASCII85Decode\" || filterName === \"A85\") {\n length = this.findASCII85DecodeInlineStreamEnd(stream);\n } else if (filterName === \"ASCIIHexDecode\" || filterName === \"AHx\") {\n length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n } else {\n length = this.findDefaultInlineStreamEnd(stream);\n }\n\n let imageStream = stream.makeSubStream(startPos, length, dict);\n let cacheKey;\n\n if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) {\n const imageBytes = imageStream.getBytes();\n imageStream.reset();\n const initialStreamPos = stream.pos;\n stream.pos = lexer.beginInlineImagePos;\n const dictBytes = stream.getBytes(dictLength);\n stream.pos = initialStreamPos;\n cacheKey = computeAdler32(imageBytes) + \"_\" + computeAdler32(dictBytes);\n const cacheEntry = this.imageCache[cacheKey];\n\n if (cacheEntry !== undefined) {\n this.buf2 = _primitives.Cmd.get(\"EI\");\n this.shift();\n cacheEntry.reset();\n return cacheEntry;\n }\n }\n\n if (cipherTransform) {\n imageStream = cipherTransform.createStream(imageStream, length);\n }\n\n imageStream = this.filter(imageStream, dict, length);\n imageStream.dict = dict;\n\n if (cacheKey !== undefined) {\n imageStream.cacheKey = `inline_${length}_${cacheKey}`;\n this.imageCache[cacheKey] = imageStream;\n }\n\n this.buf2 = _primitives.Cmd.get(\"EI\");\n this.shift();\n return imageStream;\n }\n\n _findStreamLength(startPos, signature) {\n const {\n stream\n } = this.lexer;\n stream.pos = startPos;\n const SCAN_BLOCK_LENGTH = 2048;\n const signatureLength = signature.length;\n\n while (stream.pos < stream.end) {\n const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n const scanLength = scanBytes.length - signatureLength;\n\n if (scanLength <= 0) {\n break;\n }\n\n let pos = 0;\n\n while (pos < scanLength) {\n let j = 0;\n\n while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n j++;\n }\n\n if (j >= signatureLength) {\n stream.pos += pos;\n return stream.pos - startPos;\n }\n\n pos++;\n }\n\n stream.pos += scanLength;\n }\n\n return -1;\n }\n\n makeStream(dict, cipherTransform) {\n const lexer = this.lexer;\n let stream = lexer.stream;\n lexer.skipToNextLine();\n const startPos = stream.pos - 1;\n let length = dict.get(\"Length\");\n\n if (!Number.isInteger(length)) {\n (0, _util.info)(`Bad length \"${length}\" in stream`);\n length = 0;\n }\n\n stream.pos = startPos + length;\n lexer.nextChar();\n\n if (this.tryShift() && (0, _primitives.isCmd)(this.buf2, \"endstream\")) {\n this.shift();\n } else {\n const ENDSTREAM_SIGNATURE = new Uint8Array([0x65, 0x6E, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D]);\n\n let actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE);\n\n if (actualLength < 0) {\n const MAX_TRUNCATION = 1;\n\n for (let i = 1; i <= MAX_TRUNCATION; i++) {\n const end = ENDSTREAM_SIGNATURE.length - i;\n const TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);\n\n const maybeLength = this._findStreamLength(startPos, TRUNCATED_SIGNATURE);\n\n if (maybeLength >= 0) {\n const lastByte = stream.peekBytes(end + 1)[end];\n\n if (!(0, _core_utils.isWhiteSpace)(lastByte)) {\n break;\n }\n\n (0, _util.info)(`Found \"${(0, _util.bytesToString)(TRUNCATED_SIGNATURE)}\" when ` + \"searching for endstream command.\");\n actualLength = maybeLength;\n break;\n }\n }\n\n if (actualLength < 0) {\n throw new _util.FormatError(\"Missing endstream command.\");\n }\n }\n\n length = actualLength;\n lexer.nextChar();\n this.shift();\n this.shift();\n }\n\n this.shift();\n stream = stream.makeSubStream(startPos, length, dict);\n\n if (cipherTransform) {\n stream = cipherTransform.createStream(stream, length);\n }\n\n stream = this.filter(stream, dict, length);\n stream.dict = dict;\n return stream;\n }\n\n filter(stream, dict, length) {\n let filter = dict.get(\"Filter\", \"F\");\n let params = dict.get(\"DecodeParms\", \"DP\");\n\n if ((0, _primitives.isName)(filter)) {\n if (Array.isArray(params)) {\n (0, _util.warn)(\"/DecodeParms should not contain an Array, \" + \"when /Filter contains a Name.\");\n }\n\n return this.makeFilter(stream, filter.name, length, params);\n }\n\n let maybeLength = length;\n\n if (Array.isArray(filter)) {\n const filterArray = filter;\n const paramsArray = params;\n\n for (let i = 0, ii = filterArray.length; i < ii; ++i) {\n filter = this.xref.fetchIfRef(filterArray[i]);\n\n if (!(0, _primitives.isName)(filter)) {\n throw new _util.FormatError(`Bad filter name \"${filter}\"`);\n }\n\n params = null;\n\n if (Array.isArray(paramsArray) && i in paramsArray) {\n params = this.xref.fetchIfRef(paramsArray[i]);\n }\n\n stream = this.makeFilter(stream, filter.name, maybeLength, params);\n maybeLength = null;\n }\n }\n\n return stream;\n }\n\n makeFilter(stream, name, maybeLength, params) {\n if (maybeLength === 0) {\n (0, _util.warn)(`Empty \"${name}\" stream.`);\n return new _stream.NullStream();\n }\n\n try {\n const xrefStreamStats = this.xref.stats.streamTypes;\n\n if (name === \"FlateDecode\" || name === \"Fl\") {\n xrefStreamStats[_util.StreamType.FLATE] = true;\n\n if (params) {\n return new _stream.PredictorStream(new _stream.FlateStream(stream, maybeLength), maybeLength, params);\n }\n\n return new _stream.FlateStream(stream, maybeLength);\n }\n\n if (name === \"LZWDecode\" || name === \"LZW\") {\n xrefStreamStats[_util.StreamType.LZW] = true;\n let earlyChange = 1;\n\n if (params) {\n if (params.has(\"EarlyChange\")) {\n earlyChange = params.get(\"EarlyChange\");\n }\n\n return new _stream.PredictorStream(new _stream.LZWStream(stream, maybeLength, earlyChange), maybeLength, params);\n }\n\n return new _stream.LZWStream(stream, maybeLength, earlyChange);\n }\n\n if (name === \"DCTDecode\" || name === \"DCT\") {\n xrefStreamStats[_util.StreamType.DCT] = true;\n return new _jpeg_stream.JpegStream(stream, maybeLength, stream.dict, params);\n }\n\n if (name === \"JPXDecode\" || name === \"JPX\") {\n xrefStreamStats[_util.StreamType.JPX] = true;\n return new _jpx_stream.JpxStream(stream, maybeLength, stream.dict, params);\n }\n\n if (name === \"ASCII85Decode\" || name === \"A85\") {\n xrefStreamStats[_util.StreamType.A85] = true;\n return new _stream.Ascii85Stream(stream, maybeLength);\n }\n\n if (name === \"ASCIIHexDecode\" || name === \"AHx\") {\n xrefStreamStats[_util.StreamType.AHX] = true;\n return new _stream.AsciiHexStream(stream, maybeLength);\n }\n\n if (name === \"CCITTFaxDecode\" || name === \"CCF\") {\n xrefStreamStats[_util.StreamType.CCF] = true;\n return new _ccitt_stream.CCITTFaxStream(stream, maybeLength, params);\n }\n\n if (name === \"RunLengthDecode\" || name === \"RL\") {\n xrefStreamStats[_util.StreamType.RLX] = true;\n return new _stream.RunLengthStream(stream, maybeLength);\n }\n\n if (name === \"JBIG2Decode\") {\n xrefStreamStats[_util.StreamType.JBIG] = true;\n return new _jbig2_stream.Jbig2Stream(stream, maybeLength, stream.dict, params);\n }\n\n (0, _util.warn)(`Filter \"${name}\" is not supported.`);\n return stream;\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.warn)(`Invalid stream: \"${ex}\"`);\n return new _stream.NullStream();\n }\n }\n\n}\n\nexports.Parser = Parser;\nconst specialChars = [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n\nfunction toHexDigit(ch) {\n if (ch >= 0x30 && ch <= 0x39) {\n return ch & 0x0f;\n }\n\n if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {\n return (ch & 0x0f) + 9;\n }\n\n return -1;\n}\n\nclass Lexer {\n constructor(stream, knownCommands = null) {\n this.stream = stream;\n this.nextChar();\n this.strBuf = [];\n this.knownCommands = knownCommands;\n this._hexStringNumWarn = 0;\n this.beginInlineImagePos = -1;\n }\n\n nextChar() {\n return this.currentChar = this.stream.getByte();\n }\n\n peekChar() {\n return this.stream.peekByte();\n }\n\n getNumber() {\n let ch = this.currentChar;\n let eNotation = false;\n let divideBy = 0;\n let sign = 0;\n\n if (ch === 0x2d) {\n sign = -1;\n ch = this.nextChar();\n\n if (ch === 0x2d) {\n ch = this.nextChar();\n }\n } else if (ch === 0x2b) {\n sign = 1;\n ch = this.nextChar();\n }\n\n if (ch === 0x0a || ch === 0x0d) {\n do {\n ch = this.nextChar();\n } while (ch === 0x0a || ch === 0x0d);\n }\n\n if (ch === 0x2e) {\n divideBy = 10;\n ch = this.nextChar();\n }\n\n if (ch < 0x30 || ch > 0x39) {\n if (divideBy === 10 && sign === 0 && ((0, _core_utils.isWhiteSpace)(ch) || ch === -1)) {\n (0, _util.warn)(\"Lexer.getNumber - treating a single decimal point as zero.\");\n return 0;\n }\n\n throw new _util.FormatError(`Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`);\n }\n\n sign = sign || 1;\n let baseValue = ch - 0x30;\n let powerValue = 0;\n let powerValueSign = 1;\n\n while ((ch = this.nextChar()) >= 0) {\n if (ch >= 0x30 && ch <= 0x39) {\n const currentDigit = ch - 0x30;\n\n if (eNotation) {\n powerValue = powerValue * 10 + currentDigit;\n } else {\n if (divideBy !== 0) {\n divideBy *= 10;\n }\n\n baseValue = baseValue * 10 + currentDigit;\n }\n } else if (ch === 0x2e) {\n if (divideBy === 0) {\n divideBy = 1;\n } else {\n break;\n }\n } else if (ch === 0x2d) {\n (0, _util.warn)(\"Badly formatted number: minus sign in the middle\");\n } else if (ch === 0x45 || ch === 0x65) {\n ch = this.peekChar();\n\n if (ch === 0x2b || ch === 0x2d) {\n powerValueSign = ch === 0x2d ? -1 : 1;\n this.nextChar();\n } else if (ch < 0x30 || ch > 0x39) {\n break;\n }\n\n eNotation = true;\n } else {\n break;\n }\n }\n\n if (divideBy !== 0) {\n baseValue /= divideBy;\n }\n\n if (eNotation) {\n baseValue *= 10 ** (powerValueSign * powerValue);\n }\n\n return sign * baseValue;\n }\n\n getString() {\n let numParen = 1;\n let done = false;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n let ch = this.nextChar();\n\n while (true) {\n let charBuffered = false;\n\n switch (ch | 0) {\n case -1:\n (0, _util.warn)(\"Unterminated string\");\n done = true;\n break;\n\n case 0x28:\n ++numParen;\n strBuf.push(\"(\");\n break;\n\n case 0x29:\n if (--numParen === 0) {\n this.nextChar();\n done = true;\n } else {\n strBuf.push(\")\");\n }\n\n break;\n\n case 0x5c:\n ch = this.nextChar();\n\n switch (ch) {\n case -1:\n (0, _util.warn)(\"Unterminated string\");\n done = true;\n break;\n\n case 0x6e:\n strBuf.push(\"\\n\");\n break;\n\n case 0x72:\n strBuf.push(\"\\r\");\n break;\n\n case 0x74:\n strBuf.push(\"\\t\");\n break;\n\n case 0x62:\n strBuf.push(\"\\b\");\n break;\n\n case 0x66:\n strBuf.push(\"\\f\");\n break;\n\n case 0x5c:\n case 0x28:\n case 0x29:\n strBuf.push(String.fromCharCode(ch));\n break;\n\n case 0x30:\n case 0x31:\n case 0x32:\n case 0x33:\n case 0x34:\n case 0x35:\n case 0x36:\n case 0x37:\n let x = ch & 0x0f;\n ch = this.nextChar();\n charBuffered = true;\n\n if (ch >= 0x30 && ch <= 0x37) {\n x = (x << 3) + (ch & 0x0f);\n ch = this.nextChar();\n\n if (ch >= 0x30 && ch <= 0x37) {\n charBuffered = false;\n x = (x << 3) + (ch & 0x0f);\n }\n }\n\n strBuf.push(String.fromCharCode(x));\n break;\n\n case 0x0d:\n if (this.peekChar() === 0x0a) {\n this.nextChar();\n }\n\n break;\n\n case 0x0a:\n break;\n\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n\n break;\n\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n\n if (done) {\n break;\n }\n\n if (!charBuffered) {\n ch = this.nextChar();\n }\n }\n\n return strBuf.join(\"\");\n }\n\n getName() {\n let ch, previousCh;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n if (ch === 0x23) {\n ch = this.nextChar();\n\n if (specialChars[ch]) {\n (0, _util.warn)(\"Lexer_getName: \" + \"NUMBER SIGN (#) should be followed by a hexadecimal number.\");\n strBuf.push(\"#\");\n break;\n }\n\n const x = toHexDigit(ch);\n\n if (x !== -1) {\n previousCh = ch;\n ch = this.nextChar();\n const x2 = toHexDigit(ch);\n\n if (x2 === -1) {\n (0, _util.warn)(`Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` + \"in hexadecimal number.\");\n strBuf.push(\"#\", String.fromCharCode(previousCh));\n\n if (specialChars[ch]) {\n break;\n }\n\n strBuf.push(String.fromCharCode(ch));\n continue;\n }\n\n strBuf.push(String.fromCharCode(x << 4 | x2));\n } else {\n strBuf.push(\"#\", String.fromCharCode(ch));\n }\n } else {\n strBuf.push(String.fromCharCode(ch));\n }\n }\n\n if (strBuf.length > 127) {\n (0, _util.warn)(`Name token is longer than allowed by the spec: ${strBuf.length}`);\n }\n\n return _primitives.Name.get(strBuf.join(\"\"));\n }\n\n _hexStringWarn(ch) {\n const MAX_HEX_STRING_NUM_WARN = 5;\n\n if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {\n (0, _util.warn)(\"getHexString - ignoring additional invalid characters.\");\n return;\n }\n\n if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {\n return;\n }\n\n (0, _util.warn)(`getHexString - ignoring invalid character: ${ch}`);\n }\n\n getHexString() {\n const strBuf = this.strBuf;\n strBuf.length = 0;\n let ch = this.currentChar;\n let isFirstHex = true;\n let firstDigit, secondDigit;\n this._hexStringNumWarn = 0;\n\n while (true) {\n if (ch < 0) {\n (0, _util.warn)(\"Unterminated hex string\");\n break;\n } else if (ch === 0x3e) {\n this.nextChar();\n break;\n } else if (specialChars[ch] === 1) {\n ch = this.nextChar();\n continue;\n } else {\n if (isFirstHex) {\n firstDigit = toHexDigit(ch);\n\n if (firstDigit === -1) {\n this._hexStringWarn(ch);\n\n ch = this.nextChar();\n continue;\n }\n } else {\n secondDigit = toHexDigit(ch);\n\n if (secondDigit === -1) {\n this._hexStringWarn(ch);\n\n ch = this.nextChar();\n continue;\n }\n\n strBuf.push(String.fromCharCode(firstDigit << 4 | secondDigit));\n }\n\n isFirstHex = !isFirstHex;\n ch = this.nextChar();\n }\n }\n\n return strBuf.join(\"\");\n }\n\n getObj() {\n let comment = false;\n let ch = this.currentChar;\n\n while (true) {\n if (ch < 0) {\n return _primitives.EOF;\n }\n\n if (comment) {\n if (ch === 0x0a || ch === 0x0d) {\n comment = false;\n }\n } else if (ch === 0x25) {\n comment = true;\n } else if (specialChars[ch] !== 1) {\n break;\n }\n\n ch = this.nextChar();\n }\n\n switch (ch | 0) {\n case 0x30:\n case 0x31:\n case 0x32:\n case 0x33:\n case 0x34:\n case 0x35:\n case 0x36:\n case 0x37:\n case 0x38:\n case 0x39:\n case 0x2b:\n case 0x2d:\n case 0x2e:\n return this.getNumber();\n\n case 0x28:\n return this.getString();\n\n case 0x2f:\n return this.getName();\n\n case 0x5b:\n this.nextChar();\n return _primitives.Cmd.get(\"[\");\n\n case 0x5d:\n this.nextChar();\n return _primitives.Cmd.get(\"]\");\n\n case 0x3c:\n ch = this.nextChar();\n\n if (ch === 0x3c) {\n this.nextChar();\n return _primitives.Cmd.get(\"<<\");\n }\n\n return this.getHexString();\n\n case 0x3e:\n ch = this.nextChar();\n\n if (ch === 0x3e) {\n this.nextChar();\n return _primitives.Cmd.get(\">>\");\n }\n\n return _primitives.Cmd.get(\">\");\n\n case 0x7b:\n this.nextChar();\n return _primitives.Cmd.get(\"{\");\n\n case 0x7d:\n this.nextChar();\n return _primitives.Cmd.get(\"}\");\n\n case 0x29:\n this.nextChar();\n throw new _util.FormatError(`Illegal character: ${ch}`);\n }\n\n let str = String.fromCharCode(ch);\n const knownCommands = this.knownCommands;\n let knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n const possibleCommand = str + String.fromCharCode(ch);\n\n if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n break;\n }\n\n if (str.length === 128) {\n throw new _util.FormatError(`Command token too long: ${str.length}`);\n }\n\n str = possibleCommand;\n knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n }\n\n if (str === \"true\") {\n return true;\n }\n\n if (str === \"false\") {\n return false;\n }\n\n if (str === \"null\") {\n return null;\n }\n\n if (str === \"BI\") {\n this.beginInlineImagePos = this.stream.pos;\n }\n\n return _primitives.Cmd.get(str);\n }\n\n peekObj() {\n const streamPos = this.stream.pos,\n currentChar = this.currentChar,\n beginInlineImagePos = this.beginInlineImagePos;\n let nextObj;\n\n try {\n nextObj = this.getObj();\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.warn)(`peekObj: ${ex}`);\n }\n\n this.stream.pos = streamPos;\n this.currentChar = currentChar;\n this.beginInlineImagePos = beginInlineImagePos;\n return nextObj;\n }\n\n skipToNextLine() {\n let ch = this.currentChar;\n\n while (ch >= 0) {\n if (ch === 0x0d) {\n ch = this.nextChar();\n\n if (ch === 0x0a) {\n this.nextChar();\n }\n\n break;\n } else if (ch === 0x0a) {\n this.nextChar();\n break;\n }\n\n ch = this.nextChar();\n }\n }\n\n}\n\nexports.Lexer = Lexer;\n\nclass Linearization {\n static create(stream) {\n function getInt(linDict, name, allowZeroValue = false) {\n const obj = linDict.get(name);\n\n if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n return obj;\n }\n\n throw new Error(`The \"${name}\" parameter in the linearization ` + \"dictionary is invalid.\");\n }\n\n function getHints(linDict) {\n const hints = linDict.get(\"H\");\n let hintsLength;\n\n if (Array.isArray(hints) && ((hintsLength = hints.length) === 2 || hintsLength === 4)) {\n for (let index = 0; index < hintsLength; index++) {\n const hint = hints[index];\n\n if (!(Number.isInteger(hint) && hint > 0)) {\n throw new Error(`Hint (${index}) in the linearization dictionary is invalid.`);\n }\n }\n\n return hints;\n }\n\n throw new Error(\"Hint array in the linearization dictionary is invalid.\");\n }\n\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: null\n });\n const obj1 = parser.getObj();\n const obj2 = parser.getObj();\n const obj3 = parser.getObj();\n const linDict = parser.getObj();\n let obj, length;\n\n if (!(Number.isInteger(obj1) && Number.isInteger(obj2) && (0, _primitives.isCmd)(obj3, \"obj\") && (0, _primitives.isDict)(linDict) && (0, _util.isNum)(obj = linDict.get(\"Linearized\")) && obj > 0)) {\n return null;\n } else if ((length = getInt(linDict, \"L\")) !== stream.length) {\n throw new Error('The \"L\" parameter in the linearization dictionary ' + \"does not equal the stream length.\");\n }\n\n return {\n length,\n hints: getHints(linDict),\n objectNumberFirst: getInt(linDict, \"O\"),\n endFirst: getInt(linDict, \"E\"),\n numPages: getInt(linDict, \"N\"),\n mainXRefEntriesOffset: getInt(linDict, \"T\"),\n pageFirst: linDict.has(\"P\") ? getInt(linDict, \"P\", true) : 0\n };\n }\n\n}\n\nexports.Linearization = Linearization;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LZWStream = exports.StringStream = exports.StreamsSequenceStream = exports.Stream = exports.RunLengthStream = exports.PredictorStream = exports.NullStream = exports.FlateStream = exports.DecodeStream = exports.DecryptStream = exports.AsciiHexStream = exports.Ascii85Stream = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar Stream = function StreamClosure() {\n function Stream(arrayBuffer, start, length, dict) {\n this.bytes = arrayBuffer instanceof Uint8Array ? arrayBuffer : new Uint8Array(arrayBuffer);\n this.start = start || 0;\n this.pos = this.start;\n this.end = start + length || this.bytes.length;\n this.dict = dict;\n }\n\n Stream.prototype = {\n get length() {\n return this.end - this.start;\n },\n\n get isEmpty() {\n return this.length === 0;\n },\n\n getByte: function Stream_getByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n\n return this.bytes[this.pos++];\n },\n getUint16: function Stream_getUint16() {\n var b0 = this.getByte();\n var b1 = this.getByte();\n\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n\n return (b0 << 8) + b1;\n },\n getInt32: function Stream_getInt32() {\n var b0 = this.getByte();\n var b1 = this.getByte();\n var b2 = this.getByte();\n var b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n },\n\n getBytes(length, forceClamped = false) {\n var bytes = this.bytes;\n var pos = this.pos;\n var strEnd = this.end;\n\n if (!length) {\n const subarray = bytes.subarray(pos, strEnd);\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n\n var end = pos + length;\n\n if (end > strEnd) {\n end = strEnd;\n }\n\n this.pos = end;\n const subarray = bytes.subarray(pos, end);\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n },\n\n peekByte: function Stream_peekByte() {\n var peekedByte = this.getByte();\n\n if (peekedByte !== -1) {\n this.pos--;\n }\n\n return peekedByte;\n },\n\n peekBytes(length, forceClamped = false) {\n var bytes = this.getBytes(length, forceClamped);\n this.pos -= bytes.length;\n return bytes;\n },\n\n getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n\n if (end > this.end) {\n end = this.end;\n }\n\n return this.bytes.subarray(begin, end);\n },\n\n skip: function Stream_skip(n) {\n if (!n) {\n n = 1;\n }\n\n this.pos += n;\n },\n reset: function Stream_reset() {\n this.pos = this.start;\n },\n moveStart: function Stream_moveStart() {\n this.start = this.pos;\n },\n makeSubStream: function Stream_makeSubStream(start, length, dict) {\n return new Stream(this.bytes.buffer, start, length, dict);\n }\n };\n return Stream;\n}();\n\nexports.Stream = Stream;\n\nvar StringStream = function StringStreamClosure() {\n function StringStream(str) {\n const bytes = (0, _util.stringToBytes)(str);\n Stream.call(this, bytes);\n }\n\n StringStream.prototype = Stream.prototype;\n return StringStream;\n}();\n\nexports.StringStream = StringStream;\n\nvar DecodeStream = function DecodeStreamClosure() {\n var emptyBuffer = new Uint8Array(0);\n\n function DecodeStream(maybeMinBufferLength) {\n this._rawMinBufferLength = maybeMinBufferLength || 0;\n this.pos = 0;\n this.bufferLength = 0;\n this.eof = false;\n this.buffer = emptyBuffer;\n this.minBufferLength = 512;\n\n if (maybeMinBufferLength) {\n while (this.minBufferLength < maybeMinBufferLength) {\n this.minBufferLength *= 2;\n }\n }\n }\n\n DecodeStream.prototype = {\n get isEmpty() {\n while (!this.eof && this.bufferLength === 0) {\n this.readBlock();\n }\n\n return this.bufferLength === 0;\n },\n\n ensureBuffer: function DecodeStream_ensureBuffer(requested) {\n var buffer = this.buffer;\n\n if (requested <= buffer.byteLength) {\n return buffer;\n }\n\n var size = this.minBufferLength;\n\n while (size < requested) {\n size *= 2;\n }\n\n var buffer2 = new Uint8Array(size);\n buffer2.set(buffer);\n return this.buffer = buffer2;\n },\n getByte: function DecodeStream_getByte() {\n var pos = this.pos;\n\n while (this.bufferLength <= pos) {\n if (this.eof) {\n return -1;\n }\n\n this.readBlock();\n }\n\n return this.buffer[this.pos++];\n },\n getUint16: function DecodeStream_getUint16() {\n var b0 = this.getByte();\n var b1 = this.getByte();\n\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n\n return (b0 << 8) + b1;\n },\n getInt32: function DecodeStream_getInt32() {\n var b0 = this.getByte();\n var b1 = this.getByte();\n var b2 = this.getByte();\n var b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n },\n\n getBytes(length, forceClamped = false) {\n var end,\n pos = this.pos;\n\n if (length) {\n this.ensureBuffer(pos + length);\n end = pos + length;\n\n while (!this.eof && this.bufferLength < end) {\n this.readBlock();\n }\n\n var bufEnd = this.bufferLength;\n\n if (end > bufEnd) {\n end = bufEnd;\n }\n } else {\n while (!this.eof) {\n this.readBlock();\n }\n\n end = this.bufferLength;\n }\n\n this.pos = end;\n const subarray = this.buffer.subarray(pos, end);\n return forceClamped && !(subarray instanceof Uint8ClampedArray) ? new Uint8ClampedArray(subarray) : subarray;\n },\n\n peekByte: function DecodeStream_peekByte() {\n var peekedByte = this.getByte();\n\n if (peekedByte !== -1) {\n this.pos--;\n }\n\n return peekedByte;\n },\n\n peekBytes(length, forceClamped = false) {\n var bytes = this.getBytes(length, forceClamped);\n this.pos -= bytes.length;\n return bytes;\n },\n\n makeSubStream: function DecodeStream_makeSubStream(start, length, dict) {\n var end = start + length;\n\n while (this.bufferLength <= end && !this.eof) {\n this.readBlock();\n }\n\n return new Stream(this.buffer, start, length, dict);\n },\n\n getByteRange(begin, end) {\n (0, _util.unreachable)(\"Should not call DecodeStream.getByteRange\");\n },\n\n skip: function DecodeStream_skip(n) {\n if (!n) {\n n = 1;\n }\n\n this.pos += n;\n },\n reset: function DecodeStream_reset() {\n this.pos = 0;\n },\n getBaseStreams: function DecodeStream_getBaseStreams() {\n if (this.str && this.str.getBaseStreams) {\n return this.str.getBaseStreams();\n }\n\n return [];\n }\n };\n return DecodeStream;\n}();\n\nexports.DecodeStream = DecodeStream;\n\nvar StreamsSequenceStream = function StreamsSequenceStreamClosure() {\n function StreamsSequenceStream(streams) {\n this.streams = streams;\n let maybeLength = 0;\n\n for (let i = 0, ii = streams.length; i < ii; i++) {\n const stream = streams[i];\n\n if (stream instanceof DecodeStream) {\n maybeLength += stream._rawMinBufferLength;\n } else {\n maybeLength += stream.length;\n }\n }\n\n DecodeStream.call(this, maybeLength);\n }\n\n StreamsSequenceStream.prototype = Object.create(DecodeStream.prototype);\n\n StreamsSequenceStream.prototype.readBlock = function streamSequenceStreamReadBlock() {\n var streams = this.streams;\n\n if (streams.length === 0) {\n this.eof = true;\n return;\n }\n\n var stream = streams.shift();\n var chunk = stream.getBytes();\n var bufferLength = this.bufferLength;\n var newLength = bufferLength + chunk.length;\n var buffer = this.ensureBuffer(newLength);\n buffer.set(chunk, bufferLength);\n this.bufferLength = newLength;\n };\n\n StreamsSequenceStream.prototype.getBaseStreams = function StreamsSequenceStream_getBaseStreams() {\n var baseStreams = [];\n\n for (var i = 0, ii = this.streams.length; i < ii; i++) {\n var stream = this.streams[i];\n\n if (stream.getBaseStreams) {\n baseStreams.push(...stream.getBaseStreams());\n }\n }\n\n return baseStreams;\n };\n\n return StreamsSequenceStream;\n}();\n\nexports.StreamsSequenceStream = StreamsSequenceStream;\n\nvar FlateStream = function FlateStreamClosure() {\n var codeLenCodeMap = new Int32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n var lengthDecode = new Int32Array([0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a, 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f, 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073, 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102]);\n var distDecode = new Int32Array([0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d, 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1, 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01, 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001]);\n var fixedLitCodeTab = [new Int32Array([0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0, 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0, 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0, 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8, 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8, 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8, 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4, 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4, 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4, 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc, 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec, 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc, 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2, 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2, 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2, 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca, 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea, 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da, 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6, 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6, 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6, 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce, 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee, 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de, 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe, 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1, 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1, 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1, 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9, 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9, 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9, 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5, 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5, 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5, 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd, 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed, 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd, 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3, 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3, 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3, 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb, 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb, 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db, 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7, 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7, 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7, 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf, 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef, 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df, 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff]), 9];\n var fixedDistCodeTab = [new Int32Array([0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c, 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000, 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d, 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000]), 5];\n\n function FlateStream(str, maybeLength) {\n this.str = str;\n this.dict = str.dict;\n var cmf = str.getByte();\n var flg = str.getByte();\n\n if (cmf === -1 || flg === -1) {\n throw new _util.FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);\n }\n\n if ((cmf & 0x0f) !== 0x08) {\n throw new _util.FormatError(`Unknown compression method in flate stream: ${cmf}, ${flg}`);\n }\n\n if (((cmf << 8) + flg) % 31 !== 0) {\n throw new _util.FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\n }\n\n if (flg & 0x20) {\n throw new _util.FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);\n }\n\n this.codeSize = 0;\n this.codeBuf = 0;\n DecodeStream.call(this, maybeLength);\n }\n\n FlateStream.prototype = Object.create(DecodeStream.prototype);\n\n FlateStream.prototype.getBits = function FlateStream_getBits(bits) {\n var str = this.str;\n var codeSize = this.codeSize;\n var codeBuf = this.codeBuf;\n var b;\n\n while (codeSize < bits) {\n if ((b = str.getByte()) === -1) {\n throw new _util.FormatError(\"Bad encoding in flate stream\");\n }\n\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n\n b = codeBuf & (1 << bits) - 1;\n this.codeBuf = codeBuf >> bits;\n this.codeSize = codeSize -= bits;\n return b;\n };\n\n FlateStream.prototype.getCode = function FlateStream_getCode(table) {\n var str = this.str;\n var codes = table[0];\n var maxLen = table[1];\n var codeSize = this.codeSize;\n var codeBuf = this.codeBuf;\n var b;\n\n while (codeSize < maxLen) {\n if ((b = str.getByte()) === -1) {\n break;\n }\n\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n\n var code = codes[codeBuf & (1 << maxLen) - 1];\n var codeLen = code >> 16;\n var codeVal = code & 0xffff;\n\n if (codeLen < 1 || codeSize < codeLen) {\n throw new _util.FormatError(\"Bad encoding in flate stream\");\n }\n\n this.codeBuf = codeBuf >> codeLen;\n this.codeSize = codeSize - codeLen;\n return codeVal;\n };\n\n FlateStream.prototype.generateHuffmanTable = function flateStreamGenerateHuffmanTable(lengths) {\n var n = lengths.length;\n var maxLen = 0;\n var i;\n\n for (i = 0; i < n; ++i) {\n if (lengths[i] > maxLen) {\n maxLen = lengths[i];\n }\n }\n\n var size = 1 << maxLen;\n var codes = new Int32Array(size);\n\n for (var len = 1, code = 0, skip = 2; len <= maxLen; ++len, code <<= 1, skip <<= 1) {\n for (var val = 0; val < n; ++val) {\n if (lengths[val] === len) {\n var code2 = 0;\n var t = code;\n\n for (i = 0; i < len; ++i) {\n code2 = code2 << 1 | t & 1;\n t >>= 1;\n }\n\n for (i = code2; i < size; i += skip) {\n codes[i] = len << 16 | val;\n }\n\n ++code;\n }\n }\n }\n\n return [codes, maxLen];\n };\n\n FlateStream.prototype.readBlock = function FlateStream_readBlock() {\n var buffer, len;\n var str = this.str;\n var hdr = this.getBits(3);\n\n if (hdr & 1) {\n this.eof = true;\n }\n\n hdr >>= 1;\n\n if (hdr === 0) {\n var b;\n\n if ((b = str.getByte()) === -1) {\n throw new _util.FormatError(\"Bad block header in flate stream\");\n }\n\n var blockLen = b;\n\n if ((b = str.getByte()) === -1) {\n throw new _util.FormatError(\"Bad block header in flate stream\");\n }\n\n blockLen |= b << 8;\n\n if ((b = str.getByte()) === -1) {\n throw new _util.FormatError(\"Bad block header in flate stream\");\n }\n\n var check = b;\n\n if ((b = str.getByte()) === -1) {\n throw new _util.FormatError(\"Bad block header in flate stream\");\n }\n\n check |= b << 8;\n\n if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n throw new _util.FormatError(\"Bad uncompressed block length in flate stream\");\n }\n\n this.codeBuf = 0;\n this.codeSize = 0;\n const bufferLength = this.bufferLength,\n end = bufferLength + blockLen;\n buffer = this.ensureBuffer(end);\n this.bufferLength = end;\n\n if (blockLen === 0) {\n if (str.peekByte() === -1) {\n this.eof = true;\n }\n } else {\n const block = str.getBytes(blockLen);\n buffer.set(block, bufferLength);\n\n if (block.length < blockLen) {\n this.eof = true;\n }\n }\n\n return;\n }\n\n var litCodeTable;\n var distCodeTable;\n\n if (hdr === 1) {\n litCodeTable = fixedLitCodeTab;\n distCodeTable = fixedDistCodeTab;\n } else if (hdr === 2) {\n var numLitCodes = this.getBits(5) + 257;\n var numDistCodes = this.getBits(5) + 1;\n var numCodeLenCodes = this.getBits(4) + 4;\n var codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n var i;\n\n for (i = 0; i < numCodeLenCodes; ++i) {\n codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n }\n\n var codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n len = 0;\n i = 0;\n var codes = numLitCodes + numDistCodes;\n var codeLengths = new Uint8Array(codes);\n var bitsLength, bitsOffset, what;\n\n while (i < codes) {\n var code = this.getCode(codeLenCodeTab);\n\n if (code === 16) {\n bitsLength = 2;\n bitsOffset = 3;\n what = len;\n } else if (code === 17) {\n bitsLength = 3;\n bitsOffset = 3;\n what = len = 0;\n } else if (code === 18) {\n bitsLength = 7;\n bitsOffset = 11;\n what = len = 0;\n } else {\n codeLengths[i++] = len = code;\n continue;\n }\n\n var repeatLength = this.getBits(bitsLength) + bitsOffset;\n\n while (repeatLength-- > 0) {\n codeLengths[i++] = what;\n }\n }\n\n litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes));\n distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes));\n } else {\n throw new _util.FormatError(\"Unknown block type in flate stream\");\n }\n\n buffer = this.buffer;\n var limit = buffer ? buffer.length : 0;\n var pos = this.bufferLength;\n\n while (true) {\n var code1 = this.getCode(litCodeTable);\n\n if (code1 < 256) {\n if (pos + 1 >= limit) {\n buffer = this.ensureBuffer(pos + 1);\n limit = buffer.length;\n }\n\n buffer[pos++] = code1;\n continue;\n }\n\n if (code1 === 256) {\n this.bufferLength = pos;\n return;\n }\n\n code1 -= 257;\n code1 = lengthDecode[code1];\n var code2 = code1 >> 16;\n\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n\n len = (code1 & 0xffff) + code2;\n code1 = this.getCode(distCodeTable);\n code1 = distDecode[code1];\n code2 = code1 >> 16;\n\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n\n var dist = (code1 & 0xffff) + code2;\n\n if (pos + len >= limit) {\n buffer = this.ensureBuffer(pos + len);\n limit = buffer.length;\n }\n\n for (var k = 0; k < len; ++k, ++pos) {\n buffer[pos] = buffer[pos - dist];\n }\n }\n };\n\n return FlateStream;\n}();\n\nexports.FlateStream = FlateStream;\n\nvar PredictorStream = function PredictorStreamClosure() {\n function PredictorStream(str, maybeLength, params) {\n if (!(0, _primitives.isDict)(params)) {\n return str;\n }\n\n var predictor = this.predictor = params.get(\"Predictor\") || 1;\n\n if (predictor <= 1) {\n return str;\n }\n\n if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n throw new _util.FormatError(`Unsupported predictor: ${predictor}`);\n }\n\n if (predictor === 2) {\n this.readBlock = this.readBlockTiff;\n } else {\n this.readBlock = this.readBlockPng;\n }\n\n this.str = str;\n this.dict = str.dict;\n var colors = this.colors = params.get(\"Colors\") || 1;\n var bits = this.bits = params.get(\"BitsPerComponent\") || 8;\n var columns = this.columns = params.get(\"Columns\") || 1;\n this.pixBytes = colors * bits + 7 >> 3;\n this.rowBytes = columns * colors * bits + 7 >> 3;\n DecodeStream.call(this, maybeLength);\n return this;\n }\n\n PredictorStream.prototype = Object.create(DecodeStream.prototype);\n\n PredictorStream.prototype.readBlockTiff = function predictorStreamReadBlockTiff() {\n var rowBytes = this.rowBytes;\n var bufferLength = this.bufferLength;\n var buffer = this.ensureBuffer(bufferLength + rowBytes);\n var bits = this.bits;\n var colors = this.colors;\n var rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n\n if (this.eof) {\n return;\n }\n\n var inbuf = 0,\n outbuf = 0;\n var inbits = 0,\n outbits = 0;\n var pos = bufferLength;\n var i;\n\n if (bits === 1 && colors === 1) {\n for (i = 0; i < rowBytes; ++i) {\n var c = rawBytes[i] ^ inbuf;\n c ^= c >> 1;\n c ^= c >> 2;\n c ^= c >> 4;\n inbuf = (c & 1) << 7;\n buffer[pos++] = c;\n }\n } else if (bits === 8) {\n for (i = 0; i < colors; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n\n for (; i < rowBytes; ++i) {\n buffer[pos] = buffer[pos - colors] + rawBytes[i];\n pos++;\n }\n } else if (bits === 16) {\n var bytesPerPixel = colors * 2;\n\n for (i = 0; i < bytesPerPixel; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n\n for (; i < rowBytes; i += 2) {\n var sum = ((rawBytes[i] & 0xff) << 8) + (rawBytes[i + 1] & 0xff) + ((buffer[pos - bytesPerPixel] & 0xff) << 8) + (buffer[pos - bytesPerPixel + 1] & 0xff);\n buffer[pos++] = sum >> 8 & 0xff;\n buffer[pos++] = sum & 0xff;\n }\n } else {\n var compArray = new Uint8Array(colors + 1);\n var bitMask = (1 << bits) - 1;\n var j = 0,\n k = bufferLength;\n var columns = this.columns;\n\n for (i = 0; i < columns; ++i) {\n for (var kk = 0; kk < colors; ++kk) {\n if (inbits < bits) {\n inbuf = inbuf << 8 | rawBytes[j++] & 0xff;\n inbits += 8;\n }\n\n compArray[kk] = compArray[kk] + (inbuf >> inbits - bits) & bitMask;\n inbits -= bits;\n outbuf = outbuf << bits | compArray[kk];\n outbits += bits;\n\n if (outbits >= 8) {\n buffer[k++] = outbuf >> outbits - 8 & 0xff;\n outbits -= 8;\n }\n }\n }\n\n if (outbits > 0) {\n buffer[k++] = (outbuf << 8 - outbits) + (inbuf & (1 << 8 - outbits) - 1);\n }\n }\n\n this.bufferLength += rowBytes;\n };\n\n PredictorStream.prototype.readBlockPng = function predictorStreamReadBlockPng() {\n var rowBytes = this.rowBytes;\n var pixBytes = this.pixBytes;\n var predictor = this.str.getByte();\n var rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n\n if (this.eof) {\n return;\n }\n\n var bufferLength = this.bufferLength;\n var buffer = this.ensureBuffer(bufferLength + rowBytes);\n var prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n\n if (prevRow.length === 0) {\n prevRow = new Uint8Array(rowBytes);\n }\n\n var i,\n j = bufferLength,\n up,\n c;\n\n switch (predictor) {\n case 0:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n\n break;\n\n case 1:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n\n for (; i < rowBytes; ++i) {\n buffer[j] = buffer[j - pixBytes] + rawBytes[i] & 0xff;\n j++;\n }\n\n break;\n\n case 2:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = prevRow[i] + rawBytes[i] & 0xff;\n }\n\n break;\n\n case 3:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n }\n\n for (; i < rowBytes; ++i) {\n buffer[j] = (prevRow[i] + buffer[j - pixBytes] >> 1) + rawBytes[i] & 0xff;\n j++;\n }\n\n break;\n\n case 4:\n for (i = 0; i < pixBytes; ++i) {\n up = prevRow[i];\n c = rawBytes[i];\n buffer[j++] = up + c;\n }\n\n for (; i < rowBytes; ++i) {\n up = prevRow[i];\n var upLeft = prevRow[i - pixBytes];\n var left = buffer[j - pixBytes];\n var p = left + up - upLeft;\n var pa = p - left;\n\n if (pa < 0) {\n pa = -pa;\n }\n\n var pb = p - up;\n\n if (pb < 0) {\n pb = -pb;\n }\n\n var pc = p - upLeft;\n\n if (pc < 0) {\n pc = -pc;\n }\n\n c = rawBytes[i];\n\n if (pa <= pb && pa <= pc) {\n buffer[j++] = left + c;\n } else if (pb <= pc) {\n buffer[j++] = up + c;\n } else {\n buffer[j++] = upLeft + c;\n }\n }\n\n break;\n\n default:\n throw new _util.FormatError(`Unsupported predictor: ${predictor}`);\n }\n\n this.bufferLength += rowBytes;\n };\n\n return PredictorStream;\n}();\n\nexports.PredictorStream = PredictorStream;\n\nvar DecryptStream = function DecryptStreamClosure() {\n function DecryptStream(str, maybeLength, decrypt) {\n this.str = str;\n this.dict = str.dict;\n this.decrypt = decrypt;\n this.nextChunk = null;\n this.initialized = false;\n DecodeStream.call(this, maybeLength);\n }\n\n var chunkSize = 512;\n DecryptStream.prototype = Object.create(DecodeStream.prototype);\n\n DecryptStream.prototype.readBlock = function DecryptStream_readBlock() {\n var chunk;\n\n if (this.initialized) {\n chunk = this.nextChunk;\n } else {\n chunk = this.str.getBytes(chunkSize);\n this.initialized = true;\n }\n\n if (!chunk || chunk.length === 0) {\n this.eof = true;\n return;\n }\n\n this.nextChunk = this.str.getBytes(chunkSize);\n var hasMoreData = this.nextChunk && this.nextChunk.length > 0;\n var decrypt = this.decrypt;\n chunk = decrypt(chunk, !hasMoreData);\n var bufferLength = this.bufferLength;\n var i,\n n = chunk.length;\n var buffer = this.ensureBuffer(bufferLength + n);\n\n for (i = 0; i < n; i++) {\n buffer[bufferLength++] = chunk[i];\n }\n\n this.bufferLength = bufferLength;\n };\n\n return DecryptStream;\n}();\n\nexports.DecryptStream = DecryptStream;\n\nvar Ascii85Stream = function Ascii85StreamClosure() {\n function Ascii85Stream(str, maybeLength) {\n this.str = str;\n this.dict = str.dict;\n this.input = new Uint8Array(5);\n\n if (maybeLength) {\n maybeLength = 0.8 * maybeLength;\n }\n\n DecodeStream.call(this, maybeLength);\n }\n\n Ascii85Stream.prototype = Object.create(DecodeStream.prototype);\n\n Ascii85Stream.prototype.readBlock = function Ascii85Stream_readBlock() {\n var TILDA_CHAR = 0x7e;\n var Z_LOWER_CHAR = 0x7a;\n var EOF = -1;\n var str = this.str;\n var c = str.getByte();\n\n while ((0, _core_utils.isWhiteSpace)(c)) {\n c = str.getByte();\n }\n\n if (c === EOF || c === TILDA_CHAR) {\n this.eof = true;\n return;\n }\n\n var bufferLength = this.bufferLength,\n buffer;\n var i;\n\n if (c === Z_LOWER_CHAR) {\n buffer = this.ensureBuffer(bufferLength + 4);\n\n for (i = 0; i < 4; ++i) {\n buffer[bufferLength + i] = 0;\n }\n\n this.bufferLength += 4;\n } else {\n var input = this.input;\n input[0] = c;\n\n for (i = 1; i < 5; ++i) {\n c = str.getByte();\n\n while ((0, _core_utils.isWhiteSpace)(c)) {\n c = str.getByte();\n }\n\n input[i] = c;\n\n if (c === EOF || c === TILDA_CHAR) {\n break;\n }\n }\n\n buffer = this.ensureBuffer(bufferLength + i - 1);\n this.bufferLength += i - 1;\n\n if (i < 5) {\n for (; i < 5; ++i) {\n input[i] = 0x21 + 84;\n }\n\n this.eof = true;\n }\n\n var t = 0;\n\n for (i = 0; i < 5; ++i) {\n t = t * 85 + (input[i] - 0x21);\n }\n\n for (i = 3; i >= 0; --i) {\n buffer[bufferLength + i] = t & 0xff;\n t >>= 8;\n }\n }\n };\n\n return Ascii85Stream;\n}();\n\nexports.Ascii85Stream = Ascii85Stream;\n\nvar AsciiHexStream = function AsciiHexStreamClosure() {\n function AsciiHexStream(str, maybeLength) {\n this.str = str;\n this.dict = str.dict;\n this.firstDigit = -1;\n\n if (maybeLength) {\n maybeLength = 0.5 * maybeLength;\n }\n\n DecodeStream.call(this, maybeLength);\n }\n\n AsciiHexStream.prototype = Object.create(DecodeStream.prototype);\n\n AsciiHexStream.prototype.readBlock = function AsciiHexStream_readBlock() {\n var UPSTREAM_BLOCK_SIZE = 8000;\n var bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\n\n if (!bytes.length) {\n this.eof = true;\n return;\n }\n\n var maxDecodeLength = bytes.length + 1 >> 1;\n var buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n var bufferLength = this.bufferLength;\n var firstDigit = this.firstDigit;\n\n for (var i = 0, ii = bytes.length; i < ii; i++) {\n var ch = bytes[i],\n digit;\n\n if (ch >= 0x30 && ch <= 0x39) {\n digit = ch & 0x0f;\n } else if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {\n digit = (ch & 0x0f) + 9;\n } else if (ch === 0x3e) {\n this.eof = true;\n break;\n } else {\n continue;\n }\n\n if (firstDigit < 0) {\n firstDigit = digit;\n } else {\n buffer[bufferLength++] = firstDigit << 4 | digit;\n firstDigit = -1;\n }\n }\n\n if (firstDigit >= 0 && this.eof) {\n buffer[bufferLength++] = firstDigit << 4;\n firstDigit = -1;\n }\n\n this.firstDigit = firstDigit;\n this.bufferLength = bufferLength;\n };\n\n return AsciiHexStream;\n}();\n\nexports.AsciiHexStream = AsciiHexStream;\n\nvar RunLengthStream = function RunLengthStreamClosure() {\n function RunLengthStream(str, maybeLength) {\n this.str = str;\n this.dict = str.dict;\n DecodeStream.call(this, maybeLength);\n }\n\n RunLengthStream.prototype = Object.create(DecodeStream.prototype);\n\n RunLengthStream.prototype.readBlock = function RunLengthStream_readBlock() {\n var repeatHeader = this.str.getBytes(2);\n\n if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n this.eof = true;\n return;\n }\n\n var buffer;\n var bufferLength = this.bufferLength;\n var n = repeatHeader[0];\n\n if (n < 128) {\n buffer = this.ensureBuffer(bufferLength + n + 1);\n buffer[bufferLength++] = repeatHeader[1];\n\n if (n > 0) {\n var source = this.str.getBytes(n);\n buffer.set(source, bufferLength);\n bufferLength += n;\n }\n } else {\n n = 257 - n;\n var b = repeatHeader[1];\n buffer = this.ensureBuffer(bufferLength + n + 1);\n\n for (var i = 0; i < n; i++) {\n buffer[bufferLength++] = b;\n }\n }\n\n this.bufferLength = bufferLength;\n };\n\n return RunLengthStream;\n}();\n\nexports.RunLengthStream = RunLengthStream;\n\nvar LZWStream = function LZWStreamClosure() {\n function LZWStream(str, maybeLength, earlyChange) {\n this.str = str;\n this.dict = str.dict;\n this.cachedData = 0;\n this.bitsCached = 0;\n var maxLzwDictionarySize = 4096;\n var lzwState = {\n earlyChange,\n codeLength: 9,\n nextCode: 258,\n dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n currentSequence: new Uint8Array(maxLzwDictionarySize),\n currentSequenceLength: 0\n };\n\n for (var i = 0; i < 256; ++i) {\n lzwState.dictionaryValues[i] = i;\n lzwState.dictionaryLengths[i] = 1;\n }\n\n this.lzwState = lzwState;\n DecodeStream.call(this, maybeLength);\n }\n\n LZWStream.prototype = Object.create(DecodeStream.prototype);\n\n LZWStream.prototype.readBits = function LZWStream_readBits(n) {\n var bitsCached = this.bitsCached;\n var cachedData = this.cachedData;\n\n while (bitsCached < n) {\n var c = this.str.getByte();\n\n if (c === -1) {\n this.eof = true;\n return null;\n }\n\n cachedData = cachedData << 8 | c;\n bitsCached += 8;\n }\n\n this.bitsCached = bitsCached -= n;\n this.cachedData = cachedData;\n this.lastCode = null;\n return cachedData >>> bitsCached & (1 << n) - 1;\n };\n\n LZWStream.prototype.readBlock = function LZWStream_readBlock() {\n var blockSize = 512;\n var estimatedDecodedSize = blockSize * 2,\n decodedSizeDelta = blockSize;\n var i, j, q;\n var lzwState = this.lzwState;\n\n if (!lzwState) {\n return;\n }\n\n var earlyChange = lzwState.earlyChange;\n var nextCode = lzwState.nextCode;\n var dictionaryValues = lzwState.dictionaryValues;\n var dictionaryLengths = lzwState.dictionaryLengths;\n var dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n var codeLength = lzwState.codeLength;\n var prevCode = lzwState.prevCode;\n var currentSequence = lzwState.currentSequence;\n var currentSequenceLength = lzwState.currentSequenceLength;\n var decodedLength = 0;\n var currentBufferLength = this.bufferLength;\n var buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n\n for (i = 0; i < blockSize; i++) {\n var code = this.readBits(codeLength);\n var hasPrev = currentSequenceLength > 0;\n\n if (code < 256) {\n currentSequence[0] = code;\n currentSequenceLength = 1;\n } else if (code >= 258) {\n if (code < nextCode) {\n currentSequenceLength = dictionaryLengths[code];\n\n for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n currentSequence[j] = dictionaryValues[q];\n q = dictionaryPrevCodes[q];\n }\n } else {\n currentSequence[currentSequenceLength++] = currentSequence[0];\n }\n } else if (code === 256) {\n codeLength = 9;\n nextCode = 258;\n currentSequenceLength = 0;\n continue;\n } else {\n this.eof = true;\n delete this.lzwState;\n break;\n }\n\n if (hasPrev) {\n dictionaryPrevCodes[nextCode] = prevCode;\n dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n dictionaryValues[nextCode] = currentSequence[0];\n nextCode++;\n codeLength = nextCode + earlyChange & nextCode + earlyChange - 1 ? codeLength : Math.min(Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1, 12) | 0;\n }\n\n prevCode = code;\n decodedLength += currentSequenceLength;\n\n if (estimatedDecodedSize < decodedLength) {\n do {\n estimatedDecodedSize += decodedSizeDelta;\n } while (estimatedDecodedSize < decodedLength);\n\n buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n }\n\n for (j = 0; j < currentSequenceLength; j++) {\n buffer[currentBufferLength++] = currentSequence[j];\n }\n }\n\n lzwState.nextCode = nextCode;\n lzwState.codeLength = codeLength;\n lzwState.prevCode = prevCode;\n lzwState.currentSequenceLength = currentSequenceLength;\n this.bufferLength = currentBufferLength;\n };\n\n return LZWStream;\n}();\n\nexports.LZWStream = LZWStream;\n\nvar NullStream = function NullStreamClosure() {\n function NullStream() {\n Stream.call(this, new Uint8Array(0));\n }\n\n NullStream.prototype = Stream.prototype;\n return NullStream;\n}();\n\nexports.NullStream = NullStream;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CCITTFaxStream = void 0;\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _ccitt = __w_pdfjs_require__(14);\n\nvar _stream = __w_pdfjs_require__(12);\n\nvar CCITTFaxStream = function CCITTFaxStreamClosure() {\n function CCITTFaxStream(str, maybeLength, params) {\n this.str = str;\n this.dict = str.dict;\n\n if (!(0, _primitives.isDict)(params)) {\n params = _primitives.Dict.empty;\n }\n\n const source = {\n next() {\n return str.getByte();\n }\n\n };\n this.ccittFaxDecoder = new _ccitt.CCITTFaxDecoder(source, {\n K: params.get(\"K\"),\n EndOfLine: params.get(\"EndOfLine\"),\n EncodedByteAlign: params.get(\"EncodedByteAlign\"),\n Columns: params.get(\"Columns\"),\n Rows: params.get(\"Rows\"),\n EndOfBlock: params.get(\"EndOfBlock\"),\n BlackIs1: params.get(\"BlackIs1\")\n });\n\n _stream.DecodeStream.call(this, maybeLength);\n }\n\n CCITTFaxStream.prototype = Object.create(_stream.DecodeStream.prototype);\n\n CCITTFaxStream.prototype.readBlock = function () {\n while (!this.eof) {\n const c = this.ccittFaxDecoder.readNextChar();\n\n if (c === -1) {\n this.eof = true;\n return;\n }\n\n this.ensureBuffer(this.bufferLength + 1);\n this.buffer[this.bufferLength++] = c;\n }\n };\n\n return CCITTFaxStream;\n}();\n\nexports.CCITTFaxStream = CCITTFaxStream;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CCITTFaxDecoder = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nconst CCITTFaxDecoder = function CCITTFaxDecoder() {\n const ccittEOL = -2;\n const ccittEOF = -1;\n const twoDimPass = 0;\n const twoDimHoriz = 1;\n const twoDimVert0 = 2;\n const twoDimVertR1 = 3;\n const twoDimVertL1 = 4;\n const twoDimVertR2 = 5;\n const twoDimVertL2 = 6;\n const twoDimVertR3 = 7;\n const twoDimVertL3 = 8;\n const twoDimTable = [[-1, -1], [-1, -1], [7, twoDimVertL3], [7, twoDimVertR3], [6, twoDimVertL2], [6, twoDimVertL2], [6, twoDimVertR2], [6, twoDimVertR2], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0]];\n const whiteTable1 = [[-1, -1], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [12, 1984], [12, 2048], [12, 2112], [12, 2176], [12, 2240], [12, 2304], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [12, 2368], [12, 2432], [12, 2496], [12, 2560]];\n const whiteTable2 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [8, 29], [8, 29], [8, 30], [8, 30], [8, 45], [8, 45], [8, 46], [8, 46], [7, 22], [7, 22], [7, 22], [7, 22], [7, 23], [7, 23], [7, 23], [7, 23], [8, 47], [8, 47], [8, 48], [8, 48], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [7, 20], [7, 20], [7, 20], [7, 20], [8, 33], [8, 33], [8, 34], [8, 34], [8, 35], [8, 35], [8, 36], [8, 36], [8, 37], [8, 37], [8, 38], [8, 38], [7, 19], [7, 19], [7, 19], [7, 19], [8, 31], [8, 31], [8, 32], [8, 32], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [8, 53], [8, 53], [8, 54], [8, 54], [7, 26], [7, 26], [7, 26], [7, 26], [8, 39], [8, 39], [8, 40], [8, 40], [8, 41], [8, 41], [8, 42], [8, 42], [8, 43], [8, 43], [8, 44], [8, 44], [7, 21], [7, 21], [7, 21], [7, 21], [7, 28], [7, 28], [7, 28], [7, 28], [8, 61], [8, 61], [8, 62], [8, 62], [8, 63], [8, 63], [8, 0], [8, 0], [8, 320], [8, 320], [8, 384], [8, 384], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [7, 27], [7, 27], [7, 27], [7, 27], [8, 59], [8, 59], [8, 60], [8, 60], [9, 1472], [9, 1536], [9, 1600], [9, 1728], [7, 18], [7, 18], [7, 18], [7, 18], [7, 24], [7, 24], [7, 24], [7, 24], [8, 49], [8, 49], [8, 50], [8, 50], [8, 51], [8, 51], [8, 52], [8, 52], [7, 25], [7, 25], [7, 25], [7, 25], [8, 55], [8, 55], [8, 56], [8, 56], [8, 57], [8, 57], [8, 58], [8, 58], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [8, 448], [8, 448], [8, 512], [8, 512], [9, 704], [9, 768], [8, 640], [8, 640], [8, 576], [8, 576], [9, 832], [9, 896], [9, 960], [9, 1024], [9, 1088], [9, 1152], [9, 1216], [9, 1280], [9, 1344], [9, 1408], [7, 256], [7, 256], [7, 256], [7, 256], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7]];\n const blackTable1 = [[-1, -1], [-1, -1], [12, ccittEOL], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [11, 1792], [11, 1792], [12, 1984], [12, 1984], [12, 2048], [12, 2048], [12, 2112], [12, 2112], [12, 2176], [12, 2176], [12, 2240], [12, 2240], [12, 2304], [12, 2304], [11, 1856], [11, 1856], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [11, 1920], [11, 1920], [12, 2368], [12, 2368], [12, 2432], [12, 2432], [12, 2496], [12, 2496], [12, 2560], [12, 2560], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [12, 52], [12, 52], [13, 640], [13, 704], [13, 768], [13, 832], [12, 55], [12, 55], [12, 56], [12, 56], [13, 1280], [13, 1344], [13, 1408], [13, 1472], [12, 59], [12, 59], [12, 60], [12, 60], [13, 1536], [13, 1600], [11, 24], [11, 24], [11, 24], [11, 24], [11, 25], [11, 25], [11, 25], [11, 25], [13, 1664], [13, 1728], [12, 320], [12, 320], [12, 384], [12, 384], [12, 448], [12, 448], [13, 512], [13, 576], [12, 53], [12, 53], [12, 54], [12, 54], [13, 896], [13, 960], [13, 1024], [13, 1088], [13, 1152], [13, 1216], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64]];\n const blackTable2 = [[8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [11, 23], [11, 23], [12, 50], [12, 51], [12, 44], [12, 45], [12, 46], [12, 47], [12, 57], [12, 58], [12, 61], [12, 256], [10, 16], [10, 16], [10, 16], [10, 16], [10, 17], [10, 17], [10, 17], [10, 17], [12, 48], [12, 49], [12, 62], [12, 63], [12, 30], [12, 31], [12, 32], [12, 33], [12, 40], [12, 41], [11, 22], [11, 22], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [12, 128], [12, 192], [12, 26], [12, 27], [12, 28], [12, 29], [11, 19], [11, 19], [11, 20], [11, 20], [12, 34], [12, 35], [12, 36], [12, 37], [12, 38], [12, 39], [11, 21], [11, 21], [12, 42], [12, 43], [10, 0], [10, 0], [10, 0], [10, 0], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12]];\n const blackTable3 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [6, 9], [6, 8], [5, 7], [5, 7], [4, 6], [4, 6], [4, 6], [4, 6], [4, 5], [4, 5], [4, 5], [4, 5], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2]];\n\n function CCITTFaxDecoder(source, options = {}) {\n if (!source || typeof source.next !== \"function\") {\n throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n }\n\n this.source = source;\n this.eof = false;\n this.encoding = options.K || 0;\n this.eoline = options.EndOfLine || false;\n this.byteAlign = options.EncodedByteAlign || false;\n this.columns = options.Columns || 1728;\n this.rows = options.Rows || 0;\n let eoblock = options.EndOfBlock;\n\n if (eoblock === null || eoblock === undefined) {\n eoblock = true;\n }\n\n this.eoblock = eoblock;\n this.black = options.BlackIs1 || false;\n this.codingLine = new Uint32Array(this.columns + 1);\n this.refLine = new Uint32Array(this.columns + 2);\n this.codingLine[0] = this.columns;\n this.codingPos = 0;\n this.row = 0;\n this.nextLine2D = this.encoding < 0;\n this.inputBits = 0;\n this.inputBuf = 0;\n this.outputBits = 0;\n this.rowsDone = false;\n let code1;\n\n while ((code1 = this._lookBits(12)) === 0) {\n this._eatBits(1);\n }\n\n if (code1 === 1) {\n this._eatBits(12);\n }\n\n if (this.encoding > 0) {\n this.nextLine2D = !this._lookBits(1);\n\n this._eatBits(1);\n }\n }\n\n CCITTFaxDecoder.prototype = {\n readNextChar() {\n if (this.eof) {\n return -1;\n }\n\n const refLine = this.refLine;\n const codingLine = this.codingLine;\n const columns = this.columns;\n let refPos, blackPixels, bits, i;\n\n if (this.outputBits === 0) {\n if (this.rowsDone) {\n this.eof = true;\n }\n\n if (this.eof) {\n return -1;\n }\n\n this.err = false;\n let code1, code2, code3;\n\n if (this.nextLine2D) {\n for (i = 0; codingLine[i] < columns; ++i) {\n refLine[i] = codingLine[i];\n }\n\n refLine[i++] = columns;\n refLine[i] = columns;\n codingLine[0] = 0;\n this.codingPos = 0;\n refPos = 0;\n blackPixels = 0;\n\n while (codingLine[this.codingPos] < columns) {\n code1 = this._getTwoDimCode();\n\n switch (code1) {\n case twoDimPass:\n this._addPixels(refLine[refPos + 1], blackPixels);\n\n if (refLine[refPos + 1] < columns) {\n refPos += 2;\n }\n\n break;\n\n case twoDimHoriz:\n code1 = code2 = 0;\n\n if (blackPixels) {\n do {\n code1 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n\n do {\n code2 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n } else {\n do {\n code1 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n\n do {\n code2 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n }\n\n this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n\n if (codingLine[this.codingPos] < columns) {\n this._addPixels(codingLine[this.codingPos] + code2, blackPixels ^ 1);\n }\n\n while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n refPos += 2;\n }\n\n break;\n\n case twoDimVertR3:\n this._addPixels(refLine[refPos] + 3, blackPixels);\n\n blackPixels ^= 1;\n\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n\n while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n\n break;\n\n case twoDimVertR2:\n this._addPixels(refLine[refPos] + 2, blackPixels);\n\n blackPixels ^= 1;\n\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n\n while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n\n break;\n\n case twoDimVertR1:\n this._addPixels(refLine[refPos] + 1, blackPixels);\n\n blackPixels ^= 1;\n\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n\n while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n\n break;\n\n case twoDimVert0:\n this._addPixels(refLine[refPos], blackPixels);\n\n blackPixels ^= 1;\n\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n\n while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n\n break;\n\n case twoDimVertL3:\n this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\n\n blackPixels ^= 1;\n\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n\n while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n\n break;\n\n case twoDimVertL2:\n this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\n\n blackPixels ^= 1;\n\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n\n while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n\n break;\n\n case twoDimVertL1:\n this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\n\n blackPixels ^= 1;\n\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n\n while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n\n break;\n\n case ccittEOF:\n this._addPixels(columns, 0);\n\n this.eof = true;\n break;\n\n default:\n (0, _util.info)(\"bad 2d code\");\n\n this._addPixels(columns, 0);\n\n this.err = true;\n }\n }\n } else {\n codingLine[0] = 0;\n this.codingPos = 0;\n blackPixels = 0;\n\n while (codingLine[this.codingPos] < columns) {\n code1 = 0;\n\n if (blackPixels) {\n do {\n code1 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n } else {\n do {\n code1 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n }\n\n this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n\n blackPixels ^= 1;\n }\n }\n\n let gotEOL = false;\n\n if (this.byteAlign) {\n this.inputBits &= ~7;\n }\n\n if (!this.eoblock && this.row === this.rows - 1) {\n this.rowsDone = true;\n } else {\n code1 = this._lookBits(12);\n\n if (this.eoline) {\n while (code1 !== ccittEOF && code1 !== 1) {\n this._eatBits(1);\n\n code1 = this._lookBits(12);\n }\n } else {\n while (code1 === 0) {\n this._eatBits(1);\n\n code1 = this._lookBits(12);\n }\n }\n\n if (code1 === 1) {\n this._eatBits(12);\n\n gotEOL = true;\n } else if (code1 === ccittEOF) {\n this.eof = true;\n }\n }\n\n if (!this.eof && this.encoding > 0 && !this.rowsDone) {\n this.nextLine2D = !this._lookBits(1);\n\n this._eatBits(1);\n }\n\n if (this.eoblock && gotEOL && this.byteAlign) {\n code1 = this._lookBits(12);\n\n if (code1 === 1) {\n this._eatBits(12);\n\n if (this.encoding > 0) {\n this._lookBits(1);\n\n this._eatBits(1);\n }\n\n if (this.encoding >= 0) {\n for (i = 0; i < 4; ++i) {\n code1 = this._lookBits(12);\n\n if (code1 !== 1) {\n (0, _util.info)(\"bad rtc code: \" + code1);\n }\n\n this._eatBits(12);\n\n if (this.encoding > 0) {\n this._lookBits(1);\n\n this._eatBits(1);\n }\n }\n }\n\n this.eof = true;\n }\n } else if (this.err && this.eoline) {\n while (true) {\n code1 = this._lookBits(13);\n\n if (code1 === ccittEOF) {\n this.eof = true;\n return -1;\n }\n\n if (code1 >> 1 === 1) {\n break;\n }\n\n this._eatBits(1);\n }\n\n this._eatBits(12);\n\n if (this.encoding > 0) {\n this._eatBits(1);\n\n this.nextLine2D = !(code1 & 1);\n }\n }\n\n if (codingLine[0] > 0) {\n this.outputBits = codingLine[this.codingPos = 0];\n } else {\n this.outputBits = codingLine[this.codingPos = 1];\n }\n\n this.row++;\n }\n\n let c;\n\n if (this.outputBits >= 8) {\n c = this.codingPos & 1 ? 0 : 0xff;\n this.outputBits -= 8;\n\n if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {\n this.codingPos++;\n this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n }\n } else {\n bits = 8;\n c = 0;\n\n do {\n if (this.outputBits > bits) {\n c <<= bits;\n\n if (!(this.codingPos & 1)) {\n c |= 0xff >> 8 - bits;\n }\n\n this.outputBits -= bits;\n bits = 0;\n } else {\n c <<= this.outputBits;\n\n if (!(this.codingPos & 1)) {\n c |= 0xff >> 8 - this.outputBits;\n }\n\n bits -= this.outputBits;\n this.outputBits = 0;\n\n if (codingLine[this.codingPos] < columns) {\n this.codingPos++;\n this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n } else if (bits > 0) {\n c <<= bits;\n bits = 0;\n }\n }\n } while (bits);\n }\n\n if (this.black) {\n c ^= 0xff;\n }\n\n return c;\n },\n\n _addPixels(a1, blackPixels) {\n const codingLine = this.codingLine;\n let codingPos = this.codingPos;\n\n if (a1 > codingLine[codingPos]) {\n if (a1 > this.columns) {\n (0, _util.info)(\"row is wrong length\");\n this.err = true;\n a1 = this.columns;\n }\n\n if (codingPos & 1 ^ blackPixels) {\n ++codingPos;\n }\n\n codingLine[codingPos] = a1;\n }\n\n this.codingPos = codingPos;\n },\n\n _addPixelsNeg(a1, blackPixels) {\n const codingLine = this.codingLine;\n let codingPos = this.codingPos;\n\n if (a1 > codingLine[codingPos]) {\n if (a1 > this.columns) {\n (0, _util.info)(\"row is wrong length\");\n this.err = true;\n a1 = this.columns;\n }\n\n if (codingPos & 1 ^ blackPixels) {\n ++codingPos;\n }\n\n codingLine[codingPos] = a1;\n } else if (a1 < codingLine[codingPos]) {\n if (a1 < 0) {\n (0, _util.info)(\"invalid code\");\n this.err = true;\n a1 = 0;\n }\n\n while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {\n --codingPos;\n }\n\n codingLine[codingPos] = a1;\n }\n\n this.codingPos = codingPos;\n },\n\n _findTableCode(start, end, table, limit) {\n const limitValue = limit || 0;\n\n for (let i = start; i <= end; ++i) {\n let code = this._lookBits(i);\n\n if (code === ccittEOF) {\n return [true, 1, false];\n }\n\n if (i < end) {\n code <<= end - i;\n }\n\n if (!limitValue || code >= limitValue) {\n const p = table[code - limitValue];\n\n if (p[0] === i) {\n this._eatBits(i);\n\n return [true, p[1], true];\n }\n }\n }\n\n return [false, 0, false];\n },\n\n _getTwoDimCode() {\n let code = 0;\n let p;\n\n if (this.eoblock) {\n code = this._lookBits(7);\n p = twoDimTable[code];\n\n if (p && p[0] > 0) {\n this._eatBits(p[0]);\n\n return p[1];\n }\n } else {\n const result = this._findTableCode(1, 7, twoDimTable);\n\n if (result[0] && result[2]) {\n return result[1];\n }\n }\n\n (0, _util.info)(\"Bad two dim code\");\n return ccittEOF;\n },\n\n _getWhiteCode() {\n let code = 0;\n let p;\n\n if (this.eoblock) {\n code = this._lookBits(12);\n\n if (code === ccittEOF) {\n return 1;\n }\n\n if (code >> 5 === 0) {\n p = whiteTable1[code];\n } else {\n p = whiteTable2[code >> 3];\n }\n\n if (p[0] > 0) {\n this._eatBits(p[0]);\n\n return p[1];\n }\n } else {\n let result = this._findTableCode(1, 9, whiteTable2);\n\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(11, 12, whiteTable1);\n\n if (result[0]) {\n return result[1];\n }\n }\n\n (0, _util.info)(\"bad white code\");\n\n this._eatBits(1);\n\n return 1;\n },\n\n _getBlackCode() {\n let code, p;\n\n if (this.eoblock) {\n code = this._lookBits(13);\n\n if (code === ccittEOF) {\n return 1;\n }\n\n if (code >> 7 === 0) {\n p = blackTable1[code];\n } else if (code >> 9 === 0 && code >> 7 !== 0) {\n p = blackTable2[(code >> 1) - 64];\n } else {\n p = blackTable3[code >> 7];\n }\n\n if (p[0] > 0) {\n this._eatBits(p[0]);\n\n return p[1];\n }\n } else {\n let result = this._findTableCode(2, 6, blackTable3);\n\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(7, 12, blackTable2, 64);\n\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(10, 13, blackTable1);\n\n if (result[0]) {\n return result[1];\n }\n }\n\n (0, _util.info)(\"bad black code\");\n\n this._eatBits(1);\n\n return 1;\n },\n\n _lookBits(n) {\n let c;\n\n while (this.inputBits < n) {\n if ((c = this.source.next()) === -1) {\n if (this.inputBits === 0) {\n return ccittEOF;\n }\n\n return this.inputBuf << n - this.inputBits & 0xffff >> 16 - n;\n }\n\n this.inputBuf = this.inputBuf << 8 | c;\n this.inputBits += 8;\n }\n\n return this.inputBuf >> this.inputBits - n & 0xffff >> 16 - n;\n },\n\n _eatBits(n) {\n if ((this.inputBits -= n) < 0) {\n this.inputBits = 0;\n }\n }\n\n };\n return CCITTFaxDecoder;\n}();\n\nexports.CCITTFaxDecoder = CCITTFaxDecoder;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Jbig2Stream = void 0;\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _stream = __w_pdfjs_require__(12);\n\nvar _jbig = __w_pdfjs_require__(16);\n\nvar _util = __w_pdfjs_require__(2);\n\nconst Jbig2Stream = function Jbig2StreamClosure() {\n function Jbig2Stream(stream, maybeLength, dict, params) {\n this.stream = stream;\n this.maybeLength = maybeLength;\n this.dict = dict;\n this.params = params;\n\n _stream.DecodeStream.call(this, maybeLength);\n }\n\n Jbig2Stream.prototype = Object.create(_stream.DecodeStream.prototype);\n Object.defineProperty(Jbig2Stream.prototype, \"bytes\", {\n get() {\n return (0, _util.shadow)(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n },\n\n configurable: true\n });\n\n Jbig2Stream.prototype.ensureBuffer = function (requested) {};\n\n Jbig2Stream.prototype.readBlock = function () {\n if (this.eof) {\n return;\n }\n\n const jbig2Image = new _jbig.Jbig2Image();\n const chunks = [];\n\n if ((0, _primitives.isDict)(this.params)) {\n const globalsStream = this.params.get(\"JBIG2Globals\");\n\n if ((0, _primitives.isStream)(globalsStream)) {\n const globals = globalsStream.getBytes();\n chunks.push({\n data: globals,\n start: 0,\n end: globals.length\n });\n }\n }\n\n chunks.push({\n data: this.bytes,\n start: 0,\n end: this.bytes.length\n });\n const data = jbig2Image.parseChunks(chunks);\n const dataLength = data.length;\n\n for (let i = 0; i < dataLength; i++) {\n data[i] ^= 0xff;\n }\n\n this.buffer = data;\n this.bufferLength = dataLength;\n this.eof = true;\n };\n\n return Jbig2Stream;\n}();\n\nexports.Jbig2Stream = Jbig2Stream;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Jbig2Image = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _arithmetic_decoder = __w_pdfjs_require__(17);\n\nvar _ccitt = __w_pdfjs_require__(14);\n\nclass Jbig2Error extends _util.BaseException {\n constructor(msg) {\n super(`JBIG2 error: ${msg}`);\n }\n\n}\n\nvar Jbig2Image = function Jbig2ImageClosure() {\n function ContextCache() {}\n\n ContextCache.prototype = {\n getContexts(id) {\n if (id in this) {\n return this[id];\n }\n\n return this[id] = new Int8Array(1 << 16);\n }\n\n };\n\n function DecodingContext(data, start, end) {\n this.data = data;\n this.start = start;\n this.end = end;\n }\n\n DecodingContext.prototype = {\n get decoder() {\n var decoder = new _arithmetic_decoder.ArithmeticDecoder(this.data, this.start, this.end);\n return (0, _util.shadow)(this, \"decoder\", decoder);\n },\n\n get contextCache() {\n var cache = new ContextCache();\n return (0, _util.shadow)(this, \"contextCache\", cache);\n }\n\n };\n\n function decodeInteger(contextCache, procedure, decoder) {\n var contexts = contextCache.getContexts(procedure);\n var prev = 1;\n\n function readBits(length) {\n var v = 0;\n\n for (var i = 0; i < length; i++) {\n var bit = decoder.readBit(contexts, prev);\n prev = prev < 256 ? prev << 1 | bit : (prev << 1 | bit) & 511 | 256;\n v = v << 1 | bit;\n }\n\n return v >>> 0;\n }\n\n var sign = readBits(1);\n var value = readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(32) + 4436 : readBits(12) + 340 : readBits(8) + 84 : readBits(6) + 20 : readBits(4) + 4 : readBits(2);\n\n if (sign === 0) {\n return value;\n } else if (value > 0) {\n return -value;\n }\n\n return null;\n }\n\n function decodeIAID(contextCache, decoder, codeLength) {\n var contexts = contextCache.getContexts(\"IAID\");\n var prev = 1;\n\n for (var i = 0; i < codeLength; i++) {\n var bit = decoder.readBit(contexts, prev);\n prev = prev << 1 | bit;\n }\n\n if (codeLength < 31) {\n return prev & (1 << codeLength) - 1;\n }\n\n return prev & 0x7fffffff;\n }\n\n var SegmentTypes = [\"SymbolDictionary\", null, null, null, \"IntermediateTextRegion\", null, \"ImmediateTextRegion\", \"ImmediateLosslessTextRegion\", null, null, null, null, null, null, null, null, \"PatternDictionary\", null, null, null, \"IntermediateHalftoneRegion\", null, \"ImmediateHalftoneRegion\", \"ImmediateLosslessHalftoneRegion\", null, null, null, null, null, null, null, null, null, null, null, null, \"IntermediateGenericRegion\", null, \"ImmediateGenericRegion\", \"ImmediateLosslessGenericRegion\", \"IntermediateGenericRefinementRegion\", null, \"ImmediateGenericRefinementRegion\", \"ImmediateLosslessGenericRefinementRegion\", null, null, null, null, \"PageInformation\", \"EndOfPage\", \"EndOfStripe\", \"EndOfFile\", \"Profiles\", \"Tables\", null, null, null, null, null, null, null, null, \"Extension\"];\n var CodingTemplates = [[{\n x: -1,\n y: -2\n }, {\n x: 0,\n y: -2\n }, {\n x: 1,\n y: -2\n }, {\n x: -2,\n y: -1\n }, {\n x: -1,\n y: -1\n }, {\n x: 0,\n y: -1\n }, {\n x: 1,\n y: -1\n }, {\n x: 2,\n y: -1\n }, {\n x: -4,\n y: 0\n }, {\n x: -3,\n y: 0\n }, {\n x: -2,\n y: 0\n }, {\n x: -1,\n y: 0\n }], [{\n x: -1,\n y: -2\n }, {\n x: 0,\n y: -2\n }, {\n x: 1,\n y: -2\n }, {\n x: 2,\n y: -2\n }, {\n x: -2,\n y: -1\n }, {\n x: -1,\n y: -1\n }, {\n x: 0,\n y: -1\n }, {\n x: 1,\n y: -1\n }, {\n x: 2,\n y: -1\n }, {\n x: -3,\n y: 0\n }, {\n x: -2,\n y: 0\n }, {\n x: -1,\n y: 0\n }], [{\n x: -1,\n y: -2\n }, {\n x: 0,\n y: -2\n }, {\n x: 1,\n y: -2\n }, {\n x: -2,\n y: -1\n }, {\n x: -1,\n y: -1\n }, {\n x: 0,\n y: -1\n }, {\n x: 1,\n y: -1\n }, {\n x: -2,\n y: 0\n }, {\n x: -1,\n y: 0\n }], [{\n x: -3,\n y: -1\n }, {\n x: -2,\n y: -1\n }, {\n x: -1,\n y: -1\n }, {\n x: 0,\n y: -1\n }, {\n x: 1,\n y: -1\n }, {\n x: -4,\n y: 0\n }, {\n x: -3,\n y: 0\n }, {\n x: -2,\n y: 0\n }, {\n x: -1,\n y: 0\n }]];\n var RefinementTemplates = [{\n coding: [{\n x: 0,\n y: -1\n }, {\n x: 1,\n y: -1\n }, {\n x: -1,\n y: 0\n }],\n reference: [{\n x: 0,\n y: -1\n }, {\n x: 1,\n y: -1\n }, {\n x: -1,\n y: 0\n }, {\n x: 0,\n y: 0\n }, {\n x: 1,\n y: 0\n }, {\n x: -1,\n y: 1\n }, {\n x: 0,\n y: 1\n }, {\n x: 1,\n y: 1\n }]\n }, {\n coding: [{\n x: -1,\n y: -1\n }, {\n x: 0,\n y: -1\n }, {\n x: 1,\n y: -1\n }, {\n x: -1,\n y: 0\n }],\n reference: [{\n x: 0,\n y: -1\n }, {\n x: -1,\n y: 0\n }, {\n x: 0,\n y: 0\n }, {\n x: 1,\n y: 0\n }, {\n x: 0,\n y: 1\n }, {\n x: 1,\n y: 1\n }]\n }];\n var ReusedContexts = [0x9b25, 0x0795, 0x00e5, 0x0195];\n var RefinementReusedContexts = [0x0020, 0x0008];\n\n function decodeBitmapTemplate0(width, height, decodingContext) {\n var decoder = decodingContext.decoder;\n var contexts = decodingContext.contextCache.getContexts(\"GB\");\n var contextLabel,\n i,\n j,\n pixel,\n row,\n row1,\n row2,\n bitmap = [];\n var OLD_PIXEL_MASK = 0x7bf7;\n\n for (i = 0; i < height; i++) {\n row = bitmap[i] = new Uint8Array(width);\n row1 = i < 1 ? row : bitmap[i - 1];\n row2 = i < 2 ? row : bitmap[i - 2];\n contextLabel = row2[0] << 13 | row2[1] << 12 | row2[2] << 11 | row1[0] << 7 | row1[1] << 6 | row1[2] << 5 | row1[3] << 4;\n\n for (j = 0; j < width; j++) {\n row[j] = pixel = decoder.readBit(contexts, contextLabel);\n contextLabel = (contextLabel & OLD_PIXEL_MASK) << 1 | (j + 3 < width ? row2[j + 3] << 11 : 0) | (j + 4 < width ? row1[j + 4] << 4 : 0) | pixel;\n }\n }\n\n return bitmap;\n }\n\n function decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at, decodingContext) {\n if (mmr) {\n const input = new Reader(decodingContext.data, decodingContext.start, decodingContext.end);\n return decodeMMRBitmap(input, width, height, false);\n }\n\n if (templateIndex === 0 && !skip && !prediction && at.length === 4 && at[0].x === 3 && at[0].y === -1 && at[1].x === -3 && at[1].y === -1 && at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) {\n return decodeBitmapTemplate0(width, height, decodingContext);\n }\n\n var useskip = !!skip;\n var template = CodingTemplates[templateIndex].concat(at);\n template.sort(function (a, b) {\n return a.y - b.y || a.x - b.x;\n });\n var templateLength = template.length;\n var templateX = new Int8Array(templateLength);\n var templateY = new Int8Array(templateLength);\n var changingTemplateEntries = [];\n var reuseMask = 0,\n minX = 0,\n maxX = 0,\n minY = 0;\n var c, k;\n\n for (k = 0; k < templateLength; k++) {\n templateX[k] = template[k].x;\n templateY[k] = template[k].y;\n minX = Math.min(minX, template[k].x);\n maxX = Math.max(maxX, template[k].x);\n minY = Math.min(minY, template[k].y);\n\n if (k < templateLength - 1 && template[k].y === template[k + 1].y && template[k].x === template[k + 1].x - 1) {\n reuseMask |= 1 << templateLength - 1 - k;\n } else {\n changingTemplateEntries.push(k);\n }\n }\n\n var changingEntriesLength = changingTemplateEntries.length;\n var changingTemplateX = new Int8Array(changingEntriesLength);\n var changingTemplateY = new Int8Array(changingEntriesLength);\n var changingTemplateBit = new Uint16Array(changingEntriesLength);\n\n for (c = 0; c < changingEntriesLength; c++) {\n k = changingTemplateEntries[c];\n changingTemplateX[c] = template[k].x;\n changingTemplateY[c] = template[k].y;\n changingTemplateBit[c] = 1 << templateLength - 1 - k;\n }\n\n var sbb_left = -minX;\n var sbb_top = -minY;\n var sbb_right = width - maxX;\n var pseudoPixelContext = ReusedContexts[templateIndex];\n var row = new Uint8Array(width);\n var bitmap = [];\n var decoder = decodingContext.decoder;\n var contexts = decodingContext.contextCache.getContexts(\"GB\");\n var ltp = 0,\n j,\n i0,\n j0,\n contextLabel = 0,\n bit,\n shift;\n\n for (var i = 0; i < height; i++) {\n if (prediction) {\n var sltp = decoder.readBit(contexts, pseudoPixelContext);\n ltp ^= sltp;\n\n if (ltp) {\n bitmap.push(row);\n continue;\n }\n }\n\n row = new Uint8Array(row);\n bitmap.push(row);\n\n for (j = 0; j < width; j++) {\n if (useskip && skip[i][j]) {\n row[j] = 0;\n continue;\n }\n\n if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\n contextLabel = contextLabel << 1 & reuseMask;\n\n for (k = 0; k < changingEntriesLength; k++) {\n i0 = i + changingTemplateY[k];\n j0 = j + changingTemplateX[k];\n bit = bitmap[i0][j0];\n\n if (bit) {\n bit = changingTemplateBit[k];\n contextLabel |= bit;\n }\n }\n } else {\n contextLabel = 0;\n shift = templateLength - 1;\n\n for (k = 0; k < templateLength; k++, shift--) {\n j0 = j + templateX[k];\n\n if (j0 >= 0 && j0 < width) {\n i0 = i + templateY[k];\n\n if (i0 >= 0) {\n bit = bitmap[i0][j0];\n\n if (bit) {\n contextLabel |= bit << shift;\n }\n }\n }\n }\n }\n\n var pixel = decoder.readBit(contexts, contextLabel);\n row[j] = pixel;\n }\n }\n\n return bitmap;\n }\n\n function decodeRefinement(width, height, templateIndex, referenceBitmap, offsetX, offsetY, prediction, at, decodingContext) {\n var codingTemplate = RefinementTemplates[templateIndex].coding;\n\n if (templateIndex === 0) {\n codingTemplate = codingTemplate.concat([at[0]]);\n }\n\n var codingTemplateLength = codingTemplate.length;\n var codingTemplateX = new Int32Array(codingTemplateLength);\n var codingTemplateY = new Int32Array(codingTemplateLength);\n var k;\n\n for (k = 0; k < codingTemplateLength; k++) {\n codingTemplateX[k] = codingTemplate[k].x;\n codingTemplateY[k] = codingTemplate[k].y;\n }\n\n var referenceTemplate = RefinementTemplates[templateIndex].reference;\n\n if (templateIndex === 0) {\n referenceTemplate = referenceTemplate.concat([at[1]]);\n }\n\n var referenceTemplateLength = referenceTemplate.length;\n var referenceTemplateX = new Int32Array(referenceTemplateLength);\n var referenceTemplateY = new Int32Array(referenceTemplateLength);\n\n for (k = 0; k < referenceTemplateLength; k++) {\n referenceTemplateX[k] = referenceTemplate[k].x;\n referenceTemplateY[k] = referenceTemplate[k].y;\n }\n\n var referenceWidth = referenceBitmap[0].length;\n var referenceHeight = referenceBitmap.length;\n var pseudoPixelContext = RefinementReusedContexts[templateIndex];\n var bitmap = [];\n var decoder = decodingContext.decoder;\n var contexts = decodingContext.contextCache.getContexts(\"GR\");\n var ltp = 0;\n\n for (var i = 0; i < height; i++) {\n if (prediction) {\n var sltp = decoder.readBit(contexts, pseudoPixelContext);\n ltp ^= sltp;\n\n if (ltp) {\n throw new Jbig2Error(\"prediction is not supported\");\n }\n }\n\n var row = new Uint8Array(width);\n bitmap.push(row);\n\n for (var j = 0; j < width; j++) {\n var i0, j0;\n var contextLabel = 0;\n\n for (k = 0; k < codingTemplateLength; k++) {\n i0 = i + codingTemplateY[k];\n j0 = j + codingTemplateX[k];\n\n if (i0 < 0 || j0 < 0 || j0 >= width) {\n contextLabel <<= 1;\n } else {\n contextLabel = contextLabel << 1 | bitmap[i0][j0];\n }\n }\n\n for (k = 0; k < referenceTemplateLength; k++) {\n i0 = i + referenceTemplateY[k] - offsetY;\n j0 = j + referenceTemplateX[k] - offsetX;\n\n if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) {\n contextLabel <<= 1;\n } else {\n contextLabel = contextLabel << 1 | referenceBitmap[i0][j0];\n }\n }\n\n var pixel = decoder.readBit(contexts, contextLabel);\n row[j] = pixel;\n }\n }\n\n return bitmap;\n }\n\n function decodeSymbolDictionary(huffman, refinement, symbols, numberOfNewSymbols, numberOfExportedSymbols, huffmanTables, templateIndex, at, refinementTemplateIndex, refinementAt, decodingContext, huffmanInput) {\n if (huffman && refinement) {\n throw new Jbig2Error(\"symbol refinement with Huffman is not supported\");\n }\n\n var newSymbols = [];\n var currentHeight = 0;\n var symbolCodeLength = (0, _core_utils.log2)(symbols.length + numberOfNewSymbols);\n var decoder = decodingContext.decoder;\n var contextCache = decodingContext.contextCache;\n let tableB1, symbolWidths;\n\n if (huffman) {\n tableB1 = getStandardTable(1);\n symbolWidths = [];\n symbolCodeLength = Math.max(symbolCodeLength, 1);\n }\n\n while (newSymbols.length < numberOfNewSymbols) {\n var deltaHeight = huffman ? huffmanTables.tableDeltaHeight.decode(huffmanInput) : decodeInteger(contextCache, \"IADH\", decoder);\n currentHeight += deltaHeight;\n let currentWidth = 0,\n totalWidth = 0;\n const firstSymbol = huffman ? symbolWidths.length : 0;\n\n while (true) {\n var deltaWidth = huffman ? huffmanTables.tableDeltaWidth.decode(huffmanInput) : decodeInteger(contextCache, \"IADW\", decoder);\n\n if (deltaWidth === null) {\n break;\n }\n\n currentWidth += deltaWidth;\n totalWidth += currentWidth;\n var bitmap;\n\n if (refinement) {\n var numberOfInstances = decodeInteger(contextCache, \"IAAI\", decoder);\n\n if (numberOfInstances > 1) {\n bitmap = decodeTextRegion(huffman, refinement, currentWidth, currentHeight, 0, numberOfInstances, 1, symbols.concat(newSymbols), symbolCodeLength, 0, 0, 1, 0, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, 0, huffmanInput);\n } else {\n var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n var rdx = decodeInteger(contextCache, \"IARDX\", decoder);\n var rdy = decodeInteger(contextCache, \"IARDY\", decoder);\n var symbol = symbolId < symbols.length ? symbols[symbolId] : newSymbols[symbolId - symbols.length];\n bitmap = decodeRefinement(currentWidth, currentHeight, refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt, decodingContext);\n }\n\n newSymbols.push(bitmap);\n } else if (huffman) {\n symbolWidths.push(currentWidth);\n } else {\n bitmap = decodeBitmap(false, currentWidth, currentHeight, templateIndex, false, null, at, decodingContext);\n newSymbols.push(bitmap);\n }\n }\n\n if (huffman && !refinement) {\n const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n huffmanInput.byteAlign();\n let collectiveBitmap;\n\n if (bitmapSize === 0) {\n collectiveBitmap = readUncompressedBitmap(huffmanInput, totalWidth, currentHeight);\n } else {\n const originalEnd = huffmanInput.end;\n const bitmapEnd = huffmanInput.position + bitmapSize;\n huffmanInput.end = bitmapEnd;\n collectiveBitmap = decodeMMRBitmap(huffmanInput, totalWidth, currentHeight, false);\n huffmanInput.end = originalEnd;\n huffmanInput.position = bitmapEnd;\n }\n\n const numberOfSymbolsDecoded = symbolWidths.length;\n\n if (firstSymbol === numberOfSymbolsDecoded - 1) {\n newSymbols.push(collectiveBitmap);\n } else {\n let i,\n y,\n xMin = 0,\n xMax,\n bitmapWidth,\n symbolBitmap;\n\n for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) {\n bitmapWidth = symbolWidths[i];\n xMax = xMin + bitmapWidth;\n symbolBitmap = [];\n\n for (y = 0; y < currentHeight; y++) {\n symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n }\n\n newSymbols.push(symbolBitmap);\n xMin = xMax;\n }\n }\n }\n }\n\n var exportedSymbols = [];\n var flags = [],\n currentFlag = false;\n var totalSymbolsLength = symbols.length + numberOfNewSymbols;\n\n while (flags.length < totalSymbolsLength) {\n var runLength = huffman ? tableB1.decode(huffmanInput) : decodeInteger(contextCache, \"IAEX\", decoder);\n\n while (runLength--) {\n flags.push(currentFlag);\n }\n\n currentFlag = !currentFlag;\n }\n\n for (var i = 0, ii = symbols.length; i < ii; i++) {\n if (flags[i]) {\n exportedSymbols.push(symbols[i]);\n }\n }\n\n for (var j = 0; j < numberOfNewSymbols; i++, j++) {\n if (flags[i]) {\n exportedSymbols.push(newSymbols[j]);\n }\n }\n\n return exportedSymbols;\n }\n\n function decodeTextRegion(huffman, refinement, width, height, defaultPixelValue, numberOfSymbolInstances, stripSize, inputSymbols, symbolCodeLength, transposed, dsOffset, referenceCorner, combinationOperator, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, logStripSize, huffmanInput) {\n if (huffman && refinement) {\n throw new Jbig2Error(\"refinement with Huffman is not supported\");\n }\n\n var bitmap = [];\n var i, row;\n\n for (i = 0; i < height; i++) {\n row = new Uint8Array(width);\n\n if (defaultPixelValue) {\n for (var j = 0; j < width; j++) {\n row[j] = defaultPixelValue;\n }\n }\n\n bitmap.push(row);\n }\n\n var decoder = decodingContext.decoder;\n var contextCache = decodingContext.contextCache;\n var stripT = huffman ? -huffmanTables.tableDeltaT.decode(huffmanInput) : -decodeInteger(contextCache, \"IADT\", decoder);\n var firstS = 0;\n i = 0;\n\n while (i < numberOfSymbolInstances) {\n var deltaT = huffman ? huffmanTables.tableDeltaT.decode(huffmanInput) : decodeInteger(contextCache, \"IADT\", decoder);\n stripT += deltaT;\n var deltaFirstS = huffman ? huffmanTables.tableFirstS.decode(huffmanInput) : decodeInteger(contextCache, \"IAFS\", decoder);\n firstS += deltaFirstS;\n var currentS = firstS;\n\n do {\n let currentT = 0;\n\n if (stripSize > 1) {\n currentT = huffman ? huffmanInput.readBits(logStripSize) : decodeInteger(contextCache, \"IAIT\", decoder);\n }\n\n var t = stripSize * stripT + currentT;\n var symbolId = huffman ? huffmanTables.symbolIDTable.decode(huffmanInput) : decodeIAID(contextCache, decoder, symbolCodeLength);\n var applyRefinement = refinement && (huffman ? huffmanInput.readBit() : decodeInteger(contextCache, \"IARI\", decoder));\n var symbolBitmap = inputSymbols[symbolId];\n var symbolWidth = symbolBitmap[0].length;\n var symbolHeight = symbolBitmap.length;\n\n if (applyRefinement) {\n var rdw = decodeInteger(contextCache, \"IARDW\", decoder);\n var rdh = decodeInteger(contextCache, \"IARDH\", decoder);\n var rdx = decodeInteger(contextCache, \"IARDX\", decoder);\n var rdy = decodeInteger(contextCache, \"IARDY\", decoder);\n symbolWidth += rdw;\n symbolHeight += rdh;\n symbolBitmap = decodeRefinement(symbolWidth, symbolHeight, refinementTemplateIndex, symbolBitmap, (rdw >> 1) + rdx, (rdh >> 1) + rdy, false, refinementAt, decodingContext);\n }\n\n var offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\n var offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\n var s2, t2, symbolRow;\n\n if (transposed) {\n for (s2 = 0; s2 < symbolHeight; s2++) {\n row = bitmap[offsetS + s2];\n\n if (!row) {\n continue;\n }\n\n symbolRow = symbolBitmap[s2];\n var maxWidth = Math.min(width - offsetT, symbolWidth);\n\n switch (combinationOperator) {\n case 0:\n for (t2 = 0; t2 < maxWidth; t2++) {\n row[offsetT + t2] |= symbolRow[t2];\n }\n\n break;\n\n case 2:\n for (t2 = 0; t2 < maxWidth; t2++) {\n row[offsetT + t2] ^= symbolRow[t2];\n }\n\n break;\n\n default:\n throw new Jbig2Error(`operator ${combinationOperator} is not supported`);\n }\n }\n\n currentS += symbolHeight - 1;\n } else {\n for (t2 = 0; t2 < symbolHeight; t2++) {\n row = bitmap[offsetT + t2];\n\n if (!row) {\n continue;\n }\n\n symbolRow = symbolBitmap[t2];\n\n switch (combinationOperator) {\n case 0:\n for (s2 = 0; s2 < symbolWidth; s2++) {\n row[offsetS + s2] |= symbolRow[s2];\n }\n\n break;\n\n case 2:\n for (s2 = 0; s2 < symbolWidth; s2++) {\n row[offsetS + s2] ^= symbolRow[s2];\n }\n\n break;\n\n default:\n throw new Jbig2Error(`operator ${combinationOperator} is not supported`);\n }\n }\n\n currentS += symbolWidth - 1;\n }\n\n i++;\n var deltaS = huffman ? huffmanTables.tableDeltaS.decode(huffmanInput) : decodeInteger(contextCache, \"IADS\", decoder);\n\n if (deltaS === null) {\n break;\n }\n\n currentS += deltaS + dsOffset;\n } while (true);\n }\n\n return bitmap;\n }\n\n function decodePatternDictionary(mmr, patternWidth, patternHeight, maxPatternIndex, template, decodingContext) {\n const at = [];\n\n if (!mmr) {\n at.push({\n x: -patternWidth,\n y: 0\n });\n\n if (template === 0) {\n at.push({\n x: -3,\n y: -1\n });\n at.push({\n x: 2,\n y: -2\n });\n at.push({\n x: -2,\n y: -2\n });\n }\n }\n\n const collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n const collectiveBitmap = decodeBitmap(mmr, collectiveWidth, patternHeight, template, false, null, at, decodingContext);\n const patterns = [];\n\n for (let i = 0; i <= maxPatternIndex; i++) {\n const patternBitmap = [];\n const xMin = patternWidth * i;\n const xMax = xMin + patternWidth;\n\n for (let y = 0; y < patternHeight; y++) {\n patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n }\n\n patterns.push(patternBitmap);\n }\n\n return patterns;\n }\n\n function decodeHalftoneRegion(mmr, patterns, template, regionWidth, regionHeight, defaultPixelValue, enableSkip, combinationOperator, gridWidth, gridHeight, gridOffsetX, gridOffsetY, gridVectorX, gridVectorY, decodingContext) {\n const skip = null;\n\n if (enableSkip) {\n throw new Jbig2Error(\"skip is not supported\");\n }\n\n if (combinationOperator !== 0) {\n throw new Jbig2Error(\"operator \" + combinationOperator + \" is not supported in halftone region\");\n }\n\n const regionBitmap = [];\n let i, j, row;\n\n for (i = 0; i < regionHeight; i++) {\n row = new Uint8Array(regionWidth);\n\n if (defaultPixelValue) {\n for (j = 0; j < regionWidth; j++) {\n row[j] = defaultPixelValue;\n }\n }\n\n regionBitmap.push(row);\n }\n\n const numberOfPatterns = patterns.length;\n const pattern0 = patterns[0];\n const patternWidth = pattern0[0].length,\n patternHeight = pattern0.length;\n const bitsPerValue = (0, _core_utils.log2)(numberOfPatterns);\n const at = [];\n\n if (!mmr) {\n at.push({\n x: template <= 1 ? 3 : 2,\n y: -1\n });\n\n if (template === 0) {\n at.push({\n x: -3,\n y: -1\n });\n at.push({\n x: 2,\n y: -2\n });\n at.push({\n x: -2,\n y: -2\n });\n }\n }\n\n const grayScaleBitPlanes = [];\n let mmrInput, bitmap;\n\n if (mmr) {\n mmrInput = new Reader(decodingContext.data, decodingContext.start, decodingContext.end);\n }\n\n for (i = bitsPerValue - 1; i >= 0; i--) {\n if (mmr) {\n bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\n } else {\n bitmap = decodeBitmap(false, gridWidth, gridHeight, template, false, skip, at, decodingContext);\n }\n\n grayScaleBitPlanes[i] = bitmap;\n }\n\n let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;\n\n for (mg = 0; mg < gridHeight; mg++) {\n for (ng = 0; ng < gridWidth; ng++) {\n bit = 0;\n patternIndex = 0;\n\n for (j = bitsPerValue - 1; j >= 0; j--) {\n bit = grayScaleBitPlanes[j][mg][ng] ^ bit;\n patternIndex |= bit << j;\n }\n\n patternBitmap = patterns[patternIndex];\n x = gridOffsetX + mg * gridVectorY + ng * gridVectorX >> 8;\n y = gridOffsetY + mg * gridVectorX - ng * gridVectorY >> 8;\n\n if (x >= 0 && x + patternWidth <= regionWidth && y >= 0 && y + patternHeight <= regionHeight) {\n for (i = 0; i < patternHeight; i++) {\n regionRow = regionBitmap[y + i];\n patternRow = patternBitmap[i];\n\n for (j = 0; j < patternWidth; j++) {\n regionRow[x + j] |= patternRow[j];\n }\n }\n } else {\n let regionX, regionY;\n\n for (i = 0; i < patternHeight; i++) {\n regionY = y + i;\n\n if (regionY < 0 || regionY >= regionHeight) {\n continue;\n }\n\n regionRow = regionBitmap[regionY];\n patternRow = patternBitmap[i];\n\n for (j = 0; j < patternWidth; j++) {\n regionX = x + j;\n\n if (regionX >= 0 && regionX < regionWidth) {\n regionRow[regionX] |= patternRow[j];\n }\n }\n }\n }\n }\n }\n\n return regionBitmap;\n }\n\n function readSegmentHeader(data, start) {\n var segmentHeader = {};\n segmentHeader.number = (0, _core_utils.readUint32)(data, start);\n var flags = data[start + 4];\n var segmentType = flags & 0x3f;\n\n if (!SegmentTypes[segmentType]) {\n throw new Jbig2Error(\"invalid segment type: \" + segmentType);\n }\n\n segmentHeader.type = segmentType;\n segmentHeader.typeName = SegmentTypes[segmentType];\n segmentHeader.deferredNonRetain = !!(flags & 0x80);\n var pageAssociationFieldSize = !!(flags & 0x40);\n var referredFlags = data[start + 5];\n var referredToCount = referredFlags >> 5 & 7;\n var retainBits = [referredFlags & 31];\n var position = start + 6;\n\n if (referredFlags === 7) {\n referredToCount = (0, _core_utils.readUint32)(data, position - 1) & 0x1fffffff;\n position += 3;\n var bytes = referredToCount + 7 >> 3;\n retainBits[0] = data[position++];\n\n while (--bytes > 0) {\n retainBits.push(data[position++]);\n }\n } else if (referredFlags === 5 || referredFlags === 6) {\n throw new Jbig2Error(\"invalid referred-to flags\");\n }\n\n segmentHeader.retainBits = retainBits;\n let referredToSegmentNumberSize = 4;\n\n if (segmentHeader.number <= 256) {\n referredToSegmentNumberSize = 1;\n } else if (segmentHeader.number <= 65536) {\n referredToSegmentNumberSize = 2;\n }\n\n var referredTo = [];\n var i, ii;\n\n for (i = 0; i < referredToCount; i++) {\n let number;\n\n if (referredToSegmentNumberSize === 1) {\n number = data[position];\n } else if (referredToSegmentNumberSize === 2) {\n number = (0, _core_utils.readUint16)(data, position);\n } else {\n number = (0, _core_utils.readUint32)(data, position);\n }\n\n referredTo.push(number);\n position += referredToSegmentNumberSize;\n }\n\n segmentHeader.referredTo = referredTo;\n\n if (!pageAssociationFieldSize) {\n segmentHeader.pageAssociation = data[position++];\n } else {\n segmentHeader.pageAssociation = (0, _core_utils.readUint32)(data, position);\n position += 4;\n }\n\n segmentHeader.length = (0, _core_utils.readUint32)(data, position);\n position += 4;\n\n if (segmentHeader.length === 0xffffffff) {\n if (segmentType === 38) {\n var genericRegionInfo = readRegionSegmentInformation(data, position);\n var genericRegionSegmentFlags = data[position + RegionSegmentInformationFieldLength];\n var genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n var searchPatternLength = 6;\n var searchPattern = new Uint8Array(searchPatternLength);\n\n if (!genericRegionMmr) {\n searchPattern[0] = 0xff;\n searchPattern[1] = 0xac;\n }\n\n searchPattern[2] = genericRegionInfo.height >>> 24 & 0xff;\n searchPattern[3] = genericRegionInfo.height >> 16 & 0xff;\n searchPattern[4] = genericRegionInfo.height >> 8 & 0xff;\n searchPattern[5] = genericRegionInfo.height & 0xff;\n\n for (i = position, ii = data.length; i < ii; i++) {\n var j = 0;\n\n while (j < searchPatternLength && searchPattern[j] === data[i + j]) {\n j++;\n }\n\n if (j === searchPatternLength) {\n segmentHeader.length = i + searchPatternLength;\n break;\n }\n }\n\n if (segmentHeader.length === 0xffffffff) {\n throw new Jbig2Error(\"segment end was not found\");\n }\n } else {\n throw new Jbig2Error(\"invalid unknown segment length\");\n }\n }\n\n segmentHeader.headerEnd = position;\n return segmentHeader;\n }\n\n function readSegments(header, data, start, end) {\n var segments = [];\n var position = start;\n\n while (position < end) {\n var segmentHeader = readSegmentHeader(data, position);\n position = segmentHeader.headerEnd;\n var segment = {\n header: segmentHeader,\n data\n };\n\n if (!header.randomAccess) {\n segment.start = position;\n position += segmentHeader.length;\n segment.end = position;\n }\n\n segments.push(segment);\n\n if (segmentHeader.type === 51) {\n break;\n }\n }\n\n if (header.randomAccess) {\n for (var i = 0, ii = segments.length; i < ii; i++) {\n segments[i].start = position;\n position += segments[i].header.length;\n segments[i].end = position;\n }\n }\n\n return segments;\n }\n\n function readRegionSegmentInformation(data, start) {\n return {\n width: (0, _core_utils.readUint32)(data, start),\n height: (0, _core_utils.readUint32)(data, start + 4),\n x: (0, _core_utils.readUint32)(data, start + 8),\n y: (0, _core_utils.readUint32)(data, start + 12),\n combinationOperator: data[start + 16] & 7\n };\n }\n\n var RegionSegmentInformationFieldLength = 17;\n\n function processSegment(segment, visitor) {\n var header = segment.header;\n var data = segment.data,\n position = segment.start,\n end = segment.end;\n var args, at, i, atLength;\n\n switch (header.type) {\n case 0:\n var dictionary = {};\n var dictionaryFlags = (0, _core_utils.readUint16)(data, position);\n dictionary.huffman = !!(dictionaryFlags & 1);\n dictionary.refinement = !!(dictionaryFlags & 2);\n dictionary.huffmanDHSelector = dictionaryFlags >> 2 & 3;\n dictionary.huffmanDWSelector = dictionaryFlags >> 4 & 3;\n dictionary.bitmapSizeSelector = dictionaryFlags >> 6 & 1;\n dictionary.aggregationInstancesSelector = dictionaryFlags >> 7 & 1;\n dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\n dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\n dictionary.template = dictionaryFlags >> 10 & 3;\n dictionary.refinementTemplate = dictionaryFlags >> 12 & 1;\n position += 2;\n\n if (!dictionary.huffman) {\n atLength = dictionary.template === 0 ? 4 : 1;\n at = [];\n\n for (i = 0; i < atLength; i++) {\n at.push({\n x: (0, _core_utils.readInt8)(data, position),\n y: (0, _core_utils.readInt8)(data, position + 1)\n });\n position += 2;\n }\n\n dictionary.at = at;\n }\n\n if (dictionary.refinement && !dictionary.refinementTemplate) {\n at = [];\n\n for (i = 0; i < 2; i++) {\n at.push({\n x: (0, _core_utils.readInt8)(data, position),\n y: (0, _core_utils.readInt8)(data, position + 1)\n });\n position += 2;\n }\n\n dictionary.refinementAt = at;\n }\n\n dictionary.numberOfExportedSymbols = (0, _core_utils.readUint32)(data, position);\n position += 4;\n dictionary.numberOfNewSymbols = (0, _core_utils.readUint32)(data, position);\n position += 4;\n args = [dictionary, header.number, header.referredTo, data, position, end];\n break;\n\n case 6:\n case 7:\n var textRegion = {};\n textRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n var textRegionSegmentFlags = (0, _core_utils.readUint16)(data, position);\n position += 2;\n textRegion.huffman = !!(textRegionSegmentFlags & 1);\n textRegion.refinement = !!(textRegionSegmentFlags & 2);\n textRegion.logStripSize = textRegionSegmentFlags >> 2 & 3;\n textRegion.stripSize = 1 << textRegion.logStripSize;\n textRegion.referenceCorner = textRegionSegmentFlags >> 4 & 3;\n textRegion.transposed = !!(textRegionSegmentFlags & 64);\n textRegion.combinationOperator = textRegionSegmentFlags >> 7 & 3;\n textRegion.defaultPixelValue = textRegionSegmentFlags >> 9 & 1;\n textRegion.dsOffset = textRegionSegmentFlags << 17 >> 27;\n textRegion.refinementTemplate = textRegionSegmentFlags >> 15 & 1;\n\n if (textRegion.huffman) {\n var textRegionHuffmanFlags = (0, _core_utils.readUint16)(data, position);\n position += 2;\n textRegion.huffmanFS = textRegionHuffmanFlags & 3;\n textRegion.huffmanDS = textRegionHuffmanFlags >> 2 & 3;\n textRegion.huffmanDT = textRegionHuffmanFlags >> 4 & 3;\n textRegion.huffmanRefinementDW = textRegionHuffmanFlags >> 6 & 3;\n textRegion.huffmanRefinementDH = textRegionHuffmanFlags >> 8 & 3;\n textRegion.huffmanRefinementDX = textRegionHuffmanFlags >> 10 & 3;\n textRegion.huffmanRefinementDY = textRegionHuffmanFlags >> 12 & 3;\n textRegion.huffmanRefinementSizeSelector = !!(textRegionHuffmanFlags & 0x4000);\n }\n\n if (textRegion.refinement && !textRegion.refinementTemplate) {\n at = [];\n\n for (i = 0; i < 2; i++) {\n at.push({\n x: (0, _core_utils.readInt8)(data, position),\n y: (0, _core_utils.readInt8)(data, position + 1)\n });\n position += 2;\n }\n\n textRegion.refinementAt = at;\n }\n\n textRegion.numberOfSymbolInstances = (0, _core_utils.readUint32)(data, position);\n position += 4;\n args = [textRegion, header.referredTo, data, position, end];\n break;\n\n case 16:\n const patternDictionary = {};\n const patternDictionaryFlags = data[position++];\n patternDictionary.mmr = !!(patternDictionaryFlags & 1);\n patternDictionary.template = patternDictionaryFlags >> 1 & 3;\n patternDictionary.patternWidth = data[position++];\n patternDictionary.patternHeight = data[position++];\n patternDictionary.maxPatternIndex = (0, _core_utils.readUint32)(data, position);\n position += 4;\n args = [patternDictionary, header.number, data, position, end];\n break;\n\n case 22:\n case 23:\n const halftoneRegion = {};\n halftoneRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const halftoneRegionFlags = data[position++];\n halftoneRegion.mmr = !!(halftoneRegionFlags & 1);\n halftoneRegion.template = halftoneRegionFlags >> 1 & 3;\n halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);\n halftoneRegion.combinationOperator = halftoneRegionFlags >> 4 & 7;\n halftoneRegion.defaultPixelValue = halftoneRegionFlags >> 7 & 1;\n halftoneRegion.gridWidth = (0, _core_utils.readUint32)(data, position);\n position += 4;\n halftoneRegion.gridHeight = (0, _core_utils.readUint32)(data, position);\n position += 4;\n halftoneRegion.gridOffsetX = (0, _core_utils.readUint32)(data, position) & 0xffffffff;\n position += 4;\n halftoneRegion.gridOffsetY = (0, _core_utils.readUint32)(data, position) & 0xffffffff;\n position += 4;\n halftoneRegion.gridVectorX = (0, _core_utils.readUint16)(data, position);\n position += 2;\n halftoneRegion.gridVectorY = (0, _core_utils.readUint16)(data, position);\n position += 2;\n args = [halftoneRegion, header.referredTo, data, position, end];\n break;\n\n case 38:\n case 39:\n var genericRegion = {};\n genericRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n var genericRegionSegmentFlags = data[position++];\n genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\n genericRegion.template = genericRegionSegmentFlags >> 1 & 3;\n genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\n\n if (!genericRegion.mmr) {\n atLength = genericRegion.template === 0 ? 4 : 1;\n at = [];\n\n for (i = 0; i < atLength; i++) {\n at.push({\n x: (0, _core_utils.readInt8)(data, position),\n y: (0, _core_utils.readInt8)(data, position + 1)\n });\n position += 2;\n }\n\n genericRegion.at = at;\n }\n\n args = [genericRegion, data, position, end];\n break;\n\n case 48:\n var pageInfo = {\n width: (0, _core_utils.readUint32)(data, position),\n height: (0, _core_utils.readUint32)(data, position + 4),\n resolutionX: (0, _core_utils.readUint32)(data, position + 8),\n resolutionY: (0, _core_utils.readUint32)(data, position + 12)\n };\n\n if (pageInfo.height === 0xffffffff) {\n delete pageInfo.height;\n }\n\n var pageSegmentFlags = data[position + 16];\n (0, _core_utils.readUint16)(data, position + 17);\n pageInfo.lossless = !!(pageSegmentFlags & 1);\n pageInfo.refinement = !!(pageSegmentFlags & 2);\n pageInfo.defaultPixelValue = pageSegmentFlags >> 2 & 1;\n pageInfo.combinationOperator = pageSegmentFlags >> 3 & 3;\n pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\n pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\n args = [pageInfo];\n break;\n\n case 49:\n break;\n\n case 50:\n break;\n\n case 51:\n break;\n\n case 53:\n args = [header.number, data, position, end];\n break;\n\n case 62:\n break;\n\n default:\n throw new Jbig2Error(`segment type ${header.typeName}(${header.type})` + \" is not implemented\");\n }\n\n var callbackName = \"on\" + header.typeName;\n\n if (callbackName in visitor) {\n visitor[callbackName].apply(visitor, args);\n }\n }\n\n function processSegments(segments, visitor) {\n for (var i = 0, ii = segments.length; i < ii; i++) {\n processSegment(segments[i], visitor);\n }\n }\n\n function parseJbig2Chunks(chunks) {\n var visitor = new SimpleSegmentVisitor();\n\n for (var i = 0, ii = chunks.length; i < ii; i++) {\n var chunk = chunks[i];\n var segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n processSegments(segments, visitor);\n }\n\n return visitor.buffer;\n }\n\n function parseJbig2(data) {\n const end = data.length;\n let position = 0;\n\n if (data[position] !== 0x97 || data[position + 1] !== 0x4a || data[position + 2] !== 0x42 || data[position + 3] !== 0x32 || data[position + 4] !== 0x0d || data[position + 5] !== 0x0a || data[position + 6] !== 0x1a || data[position + 7] !== 0x0a) {\n throw new Jbig2Error(\"parseJbig2 - invalid header.\");\n }\n\n const header = Object.create(null);\n position += 8;\n const flags = data[position++];\n header.randomAccess = !(flags & 1);\n\n if (!(flags & 2)) {\n header.numberOfPages = (0, _core_utils.readUint32)(data, position);\n position += 4;\n }\n\n const segments = readSegments(header, data, position, end);\n const visitor = new SimpleSegmentVisitor();\n processSegments(segments, visitor);\n const {\n width,\n height\n } = visitor.currentPageInfo;\n const bitPacked = visitor.buffer;\n const imgData = new Uint8ClampedArray(width * height);\n let q = 0,\n k = 0;\n\n for (let i = 0; i < height; i++) {\n let mask = 0,\n buffer;\n\n for (let j = 0; j < width; j++) {\n if (!mask) {\n mask = 128;\n buffer = bitPacked[k++];\n }\n\n imgData[q++] = buffer & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n return {\n imgData,\n width,\n height\n };\n }\n\n function SimpleSegmentVisitor() {}\n\n SimpleSegmentVisitor.prototype = {\n onPageInformation: function SimpleSegmentVisitor_onPageInformation(info) {\n this.currentPageInfo = info;\n var rowSize = info.width + 7 >> 3;\n var buffer = new Uint8ClampedArray(rowSize * info.height);\n\n if (info.defaultPixelValue) {\n for (var i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] = 0xff;\n }\n }\n\n this.buffer = buffer;\n },\n drawBitmap: function SimpleSegmentVisitor_drawBitmap(regionInfo, bitmap) {\n var pageInfo = this.currentPageInfo;\n var width = regionInfo.width,\n height = regionInfo.height;\n var rowSize = pageInfo.width + 7 >> 3;\n var combinationOperator = pageInfo.combinationOperatorOverride ? regionInfo.combinationOperator : pageInfo.combinationOperator;\n var buffer = this.buffer;\n var mask0 = 128 >> (regionInfo.x & 7);\n var offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n var i, j, mask, offset;\n\n switch (combinationOperator) {\n case 0:\n for (i = 0; i < height; i++) {\n mask = mask0;\n offset = offset0;\n\n for (j = 0; j < width; j++) {\n if (bitmap[i][j]) {\n buffer[offset] |= mask;\n }\n\n mask >>= 1;\n\n if (!mask) {\n mask = 128;\n offset++;\n }\n }\n\n offset0 += rowSize;\n }\n\n break;\n\n case 2:\n for (i = 0; i < height; i++) {\n mask = mask0;\n offset = offset0;\n\n for (j = 0; j < width; j++) {\n if (bitmap[i][j]) {\n buffer[offset] ^= mask;\n }\n\n mask >>= 1;\n\n if (!mask) {\n mask = 128;\n offset++;\n }\n }\n\n offset0 += rowSize;\n }\n\n break;\n\n default:\n throw new Jbig2Error(`operator ${combinationOperator} is not supported`);\n }\n },\n onImmediateGenericRegion: function SimpleSegmentVisitor_onImmediateGenericRegion(region, data, start, end) {\n var regionInfo = region.info;\n var decodingContext = new DecodingContext(data, start, end);\n var bitmap = decodeBitmap(region.mmr, regionInfo.width, regionInfo.height, region.template, region.prediction, null, region.at, decodingContext);\n this.drawBitmap(regionInfo, bitmap);\n },\n onImmediateLosslessGenericRegion: function SimpleSegmentVisitor_onImmediateLosslessGenericRegion() {\n this.onImmediateGenericRegion.apply(this, arguments);\n },\n onSymbolDictionary: function SimpleSegmentVisitor_onSymbolDictionary(dictionary, currentSegment, referredSegments, data, start, end) {\n let huffmanTables, huffmanInput;\n\n if (dictionary.huffman) {\n huffmanTables = getSymbolDictionaryHuffmanTables(dictionary, referredSegments, this.customTables);\n huffmanInput = new Reader(data, start, end);\n }\n\n var symbols = this.symbols;\n\n if (!symbols) {\n this.symbols = symbols = {};\n }\n\n var inputSymbols = [];\n\n for (var i = 0, ii = referredSegments.length; i < ii; i++) {\n const referredSymbols = symbols[referredSegments[i]];\n\n if (referredSymbols) {\n inputSymbols = inputSymbols.concat(referredSymbols);\n }\n }\n\n var decodingContext = new DecodingContext(data, start, end);\n symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman, dictionary.refinement, inputSymbols, dictionary.numberOfNewSymbols, dictionary.numberOfExportedSymbols, huffmanTables, dictionary.template, dictionary.at, dictionary.refinementTemplate, dictionary.refinementAt, decodingContext, huffmanInput);\n },\n onImmediateTextRegion: function SimpleSegmentVisitor_onImmediateTextRegion(region, referredSegments, data, start, end) {\n var regionInfo = region.info;\n let huffmanTables, huffmanInput;\n var symbols = this.symbols;\n var inputSymbols = [];\n\n for (var i = 0, ii = referredSegments.length; i < ii; i++) {\n const referredSymbols = symbols[referredSegments[i]];\n\n if (referredSymbols) {\n inputSymbols = inputSymbols.concat(referredSymbols);\n }\n }\n\n var symbolCodeLength = (0, _core_utils.log2)(inputSymbols.length);\n\n if (region.huffman) {\n huffmanInput = new Reader(data, start, end);\n huffmanTables = getTextRegionHuffmanTables(region, referredSegments, this.customTables, inputSymbols.length, huffmanInput);\n }\n\n var decodingContext = new DecodingContext(data, start, end);\n var bitmap = decodeTextRegion(region.huffman, region.refinement, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.numberOfSymbolInstances, region.stripSize, inputSymbols, symbolCodeLength, region.transposed, region.dsOffset, region.referenceCorner, region.combinationOperator, huffmanTables, region.refinementTemplate, region.refinementAt, decodingContext, region.logStripSize, huffmanInput);\n this.drawBitmap(regionInfo, bitmap);\n },\n onImmediateLosslessTextRegion: function SimpleSegmentVisitor_onImmediateLosslessTextRegion() {\n this.onImmediateTextRegion.apply(this, arguments);\n },\n\n onPatternDictionary(dictionary, currentSegment, data, start, end) {\n let patterns = this.patterns;\n\n if (!patterns) {\n this.patterns = patterns = {};\n }\n\n const decodingContext = new DecodingContext(data, start, end);\n patterns[currentSegment] = decodePatternDictionary(dictionary.mmr, dictionary.patternWidth, dictionary.patternHeight, dictionary.maxPatternIndex, dictionary.template, decodingContext);\n },\n\n onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n const patterns = this.patterns[referredSegments[0]];\n const regionInfo = region.info;\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeHalftoneRegion(region.mmr, patterns, region.template, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.enableSkip, region.combinationOperator, region.gridWidth, region.gridHeight, region.gridOffsetX, region.gridOffsetY, region.gridVectorX, region.gridVectorY, decodingContext);\n this.drawBitmap(regionInfo, bitmap);\n },\n\n onImmediateLosslessHalftoneRegion() {\n this.onImmediateHalftoneRegion.apply(this, arguments);\n },\n\n onTables(currentSegment, data, start, end) {\n let customTables = this.customTables;\n\n if (!customTables) {\n this.customTables = customTables = {};\n }\n\n customTables[currentSegment] = decodeTablesSegment(data, start, end);\n }\n\n };\n\n function HuffmanLine(lineData) {\n if (lineData.length === 2) {\n this.isOOB = true;\n this.rangeLow = 0;\n this.prefixLength = lineData[0];\n this.rangeLength = 0;\n this.prefixCode = lineData[1];\n this.isLowerRange = false;\n } else {\n this.isOOB = false;\n this.rangeLow = lineData[0];\n this.prefixLength = lineData[1];\n this.rangeLength = lineData[2];\n this.prefixCode = lineData[3];\n this.isLowerRange = lineData[4] === \"lower\";\n }\n }\n\n function HuffmanTreeNode(line) {\n this.children = [];\n\n if (line) {\n this.isLeaf = true;\n this.rangeLength = line.rangeLength;\n this.rangeLow = line.rangeLow;\n this.isLowerRange = line.isLowerRange;\n this.isOOB = line.isOOB;\n } else {\n this.isLeaf = false;\n }\n }\n\n HuffmanTreeNode.prototype = {\n buildTree(line, shift) {\n const bit = line.prefixCode >> shift & 1;\n\n if (shift <= 0) {\n this.children[bit] = new HuffmanTreeNode(line);\n } else {\n let node = this.children[bit];\n\n if (!node) {\n this.children[bit] = node = new HuffmanTreeNode(null);\n }\n\n node.buildTree(line, shift - 1);\n }\n },\n\n decodeNode(reader) {\n if (this.isLeaf) {\n if (this.isOOB) {\n return null;\n }\n\n const htOffset = reader.readBits(this.rangeLength);\n return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\n }\n\n const node = this.children[reader.readBit()];\n\n if (!node) {\n throw new Jbig2Error(\"invalid Huffman data\");\n }\n\n return node.decodeNode(reader);\n }\n\n };\n\n function HuffmanTable(lines, prefixCodesDone) {\n if (!prefixCodesDone) {\n this.assignPrefixCodes(lines);\n }\n\n this.rootNode = new HuffmanTreeNode(null);\n\n for (let i = 0, ii = lines.length; i < ii; i++) {\n const line = lines[i];\n\n if (line.prefixLength > 0) {\n this.rootNode.buildTree(line, line.prefixLength - 1);\n }\n }\n }\n\n HuffmanTable.prototype = {\n decode(reader) {\n return this.rootNode.decodeNode(reader);\n },\n\n assignPrefixCodes(lines) {\n const linesLength = lines.length;\n let prefixLengthMax = 0;\n\n for (let i = 0; i < linesLength; i++) {\n prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\n }\n\n const histogram = new Uint32Array(prefixLengthMax + 1);\n\n for (let i = 0; i < linesLength; i++) {\n histogram[lines[i].prefixLength]++;\n }\n\n let currentLength = 1,\n firstCode = 0,\n currentCode,\n currentTemp,\n line;\n histogram[0] = 0;\n\n while (currentLength <= prefixLengthMax) {\n firstCode = firstCode + histogram[currentLength - 1] << 1;\n currentCode = firstCode;\n currentTemp = 0;\n\n while (currentTemp < linesLength) {\n line = lines[currentTemp];\n\n if (line.prefixLength === currentLength) {\n line.prefixCode = currentCode;\n currentCode++;\n }\n\n currentTemp++;\n }\n\n currentLength++;\n }\n }\n\n };\n\n function decodeTablesSegment(data, start, end) {\n const flags = data[start];\n const lowestValue = (0, _core_utils.readUint32)(data, start + 1) & 0xffffffff;\n const highestValue = (0, _core_utils.readUint32)(data, start + 5) & 0xffffffff;\n const reader = new Reader(data, start + 9, end);\n const prefixSizeBits = (flags >> 1 & 7) + 1;\n const rangeSizeBits = (flags >> 4 & 7) + 1;\n const lines = [];\n let prefixLength,\n rangeLength,\n currentRangeLow = lowestValue;\n\n do {\n prefixLength = reader.readBits(prefixSizeBits);\n rangeLength = reader.readBits(rangeSizeBits);\n lines.push(new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0]));\n currentRangeLow += 1 << rangeLength;\n } while (currentRangeLow < highestValue);\n\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \"lower\"]));\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n\n if (flags & 1) {\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([prefixLength, 0]));\n }\n\n return new HuffmanTable(lines, false);\n }\n\n const standardTablesCache = {};\n\n function getStandardTable(number) {\n let table = standardTablesCache[number];\n\n if (table) {\n return table;\n }\n\n let lines;\n\n switch (number) {\n case 1:\n lines = [[0, 1, 4, 0x0], [16, 2, 8, 0x2], [272, 3, 16, 0x6], [65808, 3, 32, 0x7]];\n break;\n\n case 2:\n lines = [[0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 6, 0x1e], [75, 6, 32, 0x3e], [6, 0x3f]];\n break;\n\n case 3:\n lines = [[-256, 8, 8, 0xfe], [0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 6, 0x1e], [-257, 8, 32, 0xff, \"lower\"], [75, 7, 32, 0x7e], [6, 0x3e]];\n break;\n\n case 4:\n lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 6, 0x1e], [76, 5, 32, 0x1f]];\n break;\n\n case 5:\n lines = [[-255, 7, 8, 0x7e], [1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 6, 0x1e], [-256, 7, 32, 0x7f, \"lower\"], [76, 6, 32, 0x3e]];\n break;\n\n case 6:\n lines = [[-2048, 5, 10, 0x1c], [-1024, 4, 9, 0x8], [-512, 4, 8, 0x9], [-256, 4, 7, 0xa], [-128, 5, 6, 0x1d], [-64, 5, 5, 0x1e], [-32, 4, 5, 0xb], [0, 2, 7, 0x0], [128, 3, 7, 0x2], [256, 3, 8, 0x3], [512, 4, 9, 0xc], [1024, 4, 10, 0xd], [-2049, 6, 32, 0x3e, \"lower\"], [2048, 6, 32, 0x3f]];\n break;\n\n case 7:\n lines = [[-1024, 4, 9, 0x8], [-512, 3, 8, 0x0], [-256, 4, 7, 0x9], [-128, 5, 6, 0x1a], [-64, 5, 5, 0x1b], [-32, 4, 5, 0xa], [0, 4, 5, 0xb], [32, 5, 5, 0x1c], [64, 5, 6, 0x1d], [128, 4, 7, 0xc], [256, 3, 8, 0x1], [512, 3, 9, 0x2], [1024, 3, 10, 0x3], [-1025, 5, 32, 0x1e, \"lower\"], [2048, 5, 32, 0x1f]];\n break;\n\n case 8:\n lines = [[-15, 8, 3, 0xfc], [-7, 9, 1, 0x1fc], [-5, 8, 1, 0xfd], [-3, 9, 0, 0x1fd], [-2, 7, 0, 0x7c], [-1, 4, 0, 0xa], [0, 2, 1, 0x0], [2, 5, 0, 0x1a], [3, 6, 0, 0x3a], [4, 3, 4, 0x4], [20, 6, 1, 0x3b], [22, 4, 4, 0xb], [38, 4, 5, 0xc], [70, 5, 6, 0x1b], [134, 5, 7, 0x1c], [262, 6, 7, 0x3c], [390, 7, 8, 0x7d], [646, 6, 10, 0x3d], [-16, 9, 32, 0x1fe, \"lower\"], [1670, 9, 32, 0x1ff], [2, 0x1]];\n break;\n\n case 9:\n lines = [[-31, 8, 4, 0xfc], [-15, 9, 2, 0x1fc], [-11, 8, 2, 0xfd], [-7, 9, 1, 0x1fd], [-5, 7, 1, 0x7c], [-3, 4, 1, 0xa], [-1, 3, 1, 0x2], [1, 3, 1, 0x3], [3, 5, 1, 0x1a], [5, 6, 1, 0x3a], [7, 3, 5, 0x4], [39, 6, 2, 0x3b], [43, 4, 5, 0xb], [75, 4, 6, 0xc], [139, 5, 7, 0x1b], [267, 5, 8, 0x1c], [523, 6, 8, 0x3c], [779, 7, 9, 0x7d], [1291, 6, 11, 0x3d], [-32, 9, 32, 0x1fe, \"lower\"], [3339, 9, 32, 0x1ff], [2, 0x0]];\n break;\n\n case 10:\n lines = [[-21, 7, 4, 0x7a], [-5, 8, 0, 0xfc], [-4, 7, 0, 0x7b], [-3, 5, 0, 0x18], [-2, 2, 2, 0x0], [2, 5, 0, 0x19], [3, 6, 0, 0x36], [4, 7, 0, 0x7c], [5, 8, 0, 0xfd], [6, 2, 6, 0x1], [70, 5, 5, 0x1a], [102, 6, 5, 0x37], [134, 6, 6, 0x38], [198, 6, 7, 0x39], [326, 6, 8, 0x3a], [582, 6, 9, 0x3b], [1094, 6, 10, 0x3c], [2118, 7, 11, 0x7d], [-22, 8, 32, 0xfe, \"lower\"], [4166, 8, 32, 0xff], [2, 0x2]];\n break;\n\n case 11:\n lines = [[1, 1, 0, 0x0], [2, 2, 1, 0x2], [4, 4, 0, 0xc], [5, 4, 1, 0xd], [7, 5, 1, 0x1c], [9, 5, 2, 0x1d], [13, 6, 2, 0x3c], [17, 7, 2, 0x7a], [21, 7, 3, 0x7b], [29, 7, 4, 0x7c], [45, 7, 5, 0x7d], [77, 7, 6, 0x7e], [141, 7, 32, 0x7f]];\n break;\n\n case 12:\n lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 1, 0x6], [5, 5, 0, 0x1c], [6, 5, 1, 0x1d], [8, 6, 1, 0x3c], [10, 7, 0, 0x7a], [11, 7, 1, 0x7b], [13, 7, 2, 0x7c], [17, 7, 3, 0x7d], [25, 7, 4, 0x7e], [41, 8, 5, 0xfe], [73, 8, 32, 0xff]];\n break;\n\n case 13:\n lines = [[1, 1, 0, 0x0], [2, 3, 0, 0x4], [3, 4, 0, 0xc], [4, 5, 0, 0x1c], [5, 4, 1, 0xd], [7, 3, 3, 0x5], [15, 6, 1, 0x3a], [17, 6, 2, 0x3b], [21, 6, 3, 0x3c], [29, 6, 4, 0x3d], [45, 6, 5, 0x3e], [77, 7, 6, 0x7e], [141, 7, 32, 0x7f]];\n break;\n\n case 14:\n lines = [[-2, 3, 0, 0x4], [-1, 3, 0, 0x5], [0, 1, 0, 0x0], [1, 3, 0, 0x6], [2, 3, 0, 0x7]];\n break;\n\n case 15:\n lines = [[-24, 7, 4, 0x7c], [-8, 6, 2, 0x3c], [-4, 5, 1, 0x1c], [-2, 4, 0, 0xc], [-1, 3, 0, 0x4], [0, 1, 0, 0x0], [1, 3, 0, 0x5], [2, 4, 0, 0xd], [3, 5, 1, 0x1d], [5, 6, 2, 0x3d], [9, 7, 4, 0x7d], [-25, 7, 32, 0x7e, \"lower\"], [25, 7, 32, 0x7f]];\n break;\n\n default:\n throw new Jbig2Error(`standard table B.${number} does not exist`);\n }\n\n for (let i = 0, ii = lines.length; i < ii; i++) {\n lines[i] = new HuffmanLine(lines[i]);\n }\n\n table = new HuffmanTable(lines, true);\n standardTablesCache[number] = table;\n return table;\n }\n\n function Reader(data, start, end) {\n this.data = data;\n this.start = start;\n this.end = end;\n this.position = start;\n this.shift = -1;\n this.currentByte = 0;\n }\n\n Reader.prototype = {\n readBit() {\n if (this.shift < 0) {\n if (this.position >= this.end) {\n throw new Jbig2Error(\"end of data while reading bit\");\n }\n\n this.currentByte = this.data[this.position++];\n this.shift = 7;\n }\n\n const bit = this.currentByte >> this.shift & 1;\n this.shift--;\n return bit;\n },\n\n readBits(numBits) {\n let result = 0,\n i;\n\n for (i = numBits - 1; i >= 0; i--) {\n result |= this.readBit() << i;\n }\n\n return result;\n },\n\n byteAlign() {\n this.shift = -1;\n },\n\n next() {\n if (this.position >= this.end) {\n return -1;\n }\n\n return this.data[this.position++];\n }\n\n };\n\n function getCustomHuffmanTable(index, referredTo, customTables) {\n let currentIndex = 0;\n\n for (let i = 0, ii = referredTo.length; i < ii; i++) {\n const table = customTables[referredTo[i]];\n\n if (table) {\n if (index === currentIndex) {\n return table;\n }\n\n currentIndex++;\n }\n }\n\n throw new Jbig2Error(\"can't find custom Huffman table\");\n }\n\n function getTextRegionHuffmanTables(textRegion, referredTo, customTables, numberOfSymbols, reader) {\n const codes = [];\n\n for (let i = 0; i <= 34; i++) {\n const codeLength = reader.readBits(4);\n codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n }\n\n const runCodesTable = new HuffmanTable(codes, false);\n codes.length = 0;\n\n for (let i = 0; i < numberOfSymbols;) {\n const codeLength = runCodesTable.decode(reader);\n\n if (codeLength >= 32) {\n let repeatedLength, numberOfRepeats, j;\n\n switch (codeLength) {\n case 32:\n if (i === 0) {\n throw new Jbig2Error(\"no previous value in symbol ID table\");\n }\n\n numberOfRepeats = reader.readBits(2) + 3;\n repeatedLength = codes[i - 1].prefixLength;\n break;\n\n case 33:\n numberOfRepeats = reader.readBits(3) + 3;\n repeatedLength = 0;\n break;\n\n case 34:\n numberOfRepeats = reader.readBits(7) + 11;\n repeatedLength = 0;\n break;\n\n default:\n throw new Jbig2Error(\"invalid code length in symbol ID table\");\n }\n\n for (j = 0; j < numberOfRepeats; j++) {\n codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));\n i++;\n }\n } else {\n codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n i++;\n }\n }\n\n reader.byteAlign();\n const symbolIDTable = new HuffmanTable(codes, false);\n let customIndex = 0,\n tableFirstS,\n tableDeltaS,\n tableDeltaT;\n\n switch (textRegion.huffmanFS) {\n case 0:\n case 1:\n tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\n break;\n\n case 3:\n tableFirstS = getCustomHuffmanTable(customIndex, referredTo, customTables);\n customIndex++;\n break;\n\n default:\n throw new Jbig2Error(\"invalid Huffman FS selector\");\n }\n\n switch (textRegion.huffmanDS) {\n case 0:\n case 1:\n case 2:\n tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);\n break;\n\n case 3:\n tableDeltaS = getCustomHuffmanTable(customIndex, referredTo, customTables);\n customIndex++;\n break;\n\n default:\n throw new Jbig2Error(\"invalid Huffman DS selector\");\n }\n\n switch (textRegion.huffmanDT) {\n case 0:\n case 1:\n case 2:\n tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);\n break;\n\n case 3:\n tableDeltaT = getCustomHuffmanTable(customIndex, referredTo, customTables);\n customIndex++;\n break;\n\n default:\n throw new Jbig2Error(\"invalid Huffman DT selector\");\n }\n\n if (textRegion.refinement) {\n throw new Jbig2Error(\"refinement with Huffman is not supported\");\n }\n\n return {\n symbolIDTable,\n tableFirstS,\n tableDeltaS,\n tableDeltaT\n };\n }\n\n function getSymbolDictionaryHuffmanTables(dictionary, referredTo, customTables) {\n let customIndex = 0,\n tableDeltaHeight,\n tableDeltaWidth;\n\n switch (dictionary.huffmanDHSelector) {\n case 0:\n case 1:\n tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\n break;\n\n case 3:\n tableDeltaHeight = getCustomHuffmanTable(customIndex, referredTo, customTables);\n customIndex++;\n break;\n\n default:\n throw new Jbig2Error(\"invalid Huffman DH selector\");\n }\n\n switch (dictionary.huffmanDWSelector) {\n case 0:\n case 1:\n tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);\n break;\n\n case 3:\n tableDeltaWidth = getCustomHuffmanTable(customIndex, referredTo, customTables);\n customIndex++;\n break;\n\n default:\n throw new Jbig2Error(\"invalid Huffman DW selector\");\n }\n\n let tableBitmapSize, tableAggregateInstances;\n\n if (dictionary.bitmapSizeSelector) {\n tableBitmapSize = getCustomHuffmanTable(customIndex, referredTo, customTables);\n customIndex++;\n } else {\n tableBitmapSize = getStandardTable(1);\n }\n\n if (dictionary.aggregationInstancesSelector) {\n tableAggregateInstances = getCustomHuffmanTable(customIndex, referredTo, customTables);\n } else {\n tableAggregateInstances = getStandardTable(1);\n }\n\n return {\n tableDeltaHeight,\n tableDeltaWidth,\n tableBitmapSize,\n tableAggregateInstances\n };\n }\n\n function readUncompressedBitmap(reader, width, height) {\n const bitmap = [];\n\n for (let y = 0; y < height; y++) {\n const row = new Uint8Array(width);\n bitmap.push(row);\n\n for (let x = 0; x < width; x++) {\n row[x] = reader.readBit();\n }\n\n reader.byteAlign();\n }\n\n return bitmap;\n }\n\n function decodeMMRBitmap(input, width, height, endOfBlock) {\n const params = {\n K: -1,\n Columns: width,\n Rows: height,\n BlackIs1: true,\n EndOfBlock: endOfBlock\n };\n const decoder = new _ccitt.CCITTFaxDecoder(input, params);\n const bitmap = [];\n let currentByte,\n eof = false;\n\n for (let y = 0; y < height; y++) {\n const row = new Uint8Array(width);\n bitmap.push(row);\n let shift = -1;\n\n for (let x = 0; x < width; x++) {\n if (shift < 0) {\n currentByte = decoder.readNextChar();\n\n if (currentByte === -1) {\n currentByte = 0;\n eof = true;\n }\n\n shift = 7;\n }\n\n row[x] = currentByte >> shift & 1;\n shift--;\n }\n }\n\n if (endOfBlock && !eof) {\n const lookForEOFLimit = 5;\n\n for (let i = 0; i < lookForEOFLimit; i++) {\n if (decoder.readNextChar() === -1) {\n break;\n }\n }\n }\n\n return bitmap;\n }\n\n function Jbig2Image() {}\n\n Jbig2Image.prototype = {\n parseChunks(chunks) {\n return parseJbig2Chunks(chunks);\n },\n\n parse(data) {\n const {\n imgData,\n width,\n height\n } = parseJbig2(data);\n this.width = width;\n this.height = height;\n return imgData;\n }\n\n };\n return Jbig2Image;\n}();\n\nexports.Jbig2Image = Jbig2Image;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ArithmeticDecoder = void 0;\nconst QeTable = [{\n qe: 0x5601,\n nmps: 1,\n nlps: 1,\n switchFlag: 1\n}, {\n qe: 0x3401,\n nmps: 2,\n nlps: 6,\n switchFlag: 0\n}, {\n qe: 0x1801,\n nmps: 3,\n nlps: 9,\n switchFlag: 0\n}, {\n qe: 0x0ac1,\n nmps: 4,\n nlps: 12,\n switchFlag: 0\n}, {\n qe: 0x0521,\n nmps: 5,\n nlps: 29,\n switchFlag: 0\n}, {\n qe: 0x0221,\n nmps: 38,\n nlps: 33,\n switchFlag: 0\n}, {\n qe: 0x5601,\n nmps: 7,\n nlps: 6,\n switchFlag: 1\n}, {\n qe: 0x5401,\n nmps: 8,\n nlps: 14,\n switchFlag: 0\n}, {\n qe: 0x4801,\n nmps: 9,\n nlps: 14,\n switchFlag: 0\n}, {\n qe: 0x3801,\n nmps: 10,\n nlps: 14,\n switchFlag: 0\n}, {\n qe: 0x3001,\n nmps: 11,\n nlps: 17,\n switchFlag: 0\n}, {\n qe: 0x2401,\n nmps: 12,\n nlps: 18,\n switchFlag: 0\n}, {\n qe: 0x1c01,\n nmps: 13,\n nlps: 20,\n switchFlag: 0\n}, {\n qe: 0x1601,\n nmps: 29,\n nlps: 21,\n switchFlag: 0\n}, {\n qe: 0x5601,\n nmps: 15,\n nlps: 14,\n switchFlag: 1\n}, {\n qe: 0x5401,\n nmps: 16,\n nlps: 14,\n switchFlag: 0\n}, {\n qe: 0x5101,\n nmps: 17,\n nlps: 15,\n switchFlag: 0\n}, {\n qe: 0x4801,\n nmps: 18,\n nlps: 16,\n switchFlag: 0\n}, {\n qe: 0x3801,\n nmps: 19,\n nlps: 17,\n switchFlag: 0\n}, {\n qe: 0x3401,\n nmps: 20,\n nlps: 18,\n switchFlag: 0\n}, {\n qe: 0x3001,\n nmps: 21,\n nlps: 19,\n switchFlag: 0\n}, {\n qe: 0x2801,\n nmps: 22,\n nlps: 19,\n switchFlag: 0\n}, {\n qe: 0x2401,\n nmps: 23,\n nlps: 20,\n switchFlag: 0\n}, {\n qe: 0x2201,\n nmps: 24,\n nlps: 21,\n switchFlag: 0\n}, {\n qe: 0x1c01,\n nmps: 25,\n nlps: 22,\n switchFlag: 0\n}, {\n qe: 0x1801,\n nmps: 26,\n nlps: 23,\n switchFlag: 0\n}, {\n qe: 0x1601,\n nmps: 27,\n nlps: 24,\n switchFlag: 0\n}, {\n qe: 0x1401,\n nmps: 28,\n nlps: 25,\n switchFlag: 0\n}, {\n qe: 0x1201,\n nmps: 29,\n nlps: 26,\n switchFlag: 0\n}, {\n qe: 0x1101,\n nmps: 30,\n nlps: 27,\n switchFlag: 0\n}, {\n qe: 0x0ac1,\n nmps: 31,\n nlps: 28,\n switchFlag: 0\n}, {\n qe: 0x09c1,\n nmps: 32,\n nlps: 29,\n switchFlag: 0\n}, {\n qe: 0x08a1,\n nmps: 33,\n nlps: 30,\n switchFlag: 0\n}, {\n qe: 0x0521,\n nmps: 34,\n nlps: 31,\n switchFlag: 0\n}, {\n qe: 0x0441,\n nmps: 35,\n nlps: 32,\n switchFlag: 0\n}, {\n qe: 0x02a1,\n nmps: 36,\n nlps: 33,\n switchFlag: 0\n}, {\n qe: 0x0221,\n nmps: 37,\n nlps: 34,\n switchFlag: 0\n}, {\n qe: 0x0141,\n nmps: 38,\n nlps: 35,\n switchFlag: 0\n}, {\n qe: 0x0111,\n nmps: 39,\n nlps: 36,\n switchFlag: 0\n}, {\n qe: 0x0085,\n nmps: 40,\n nlps: 37,\n switchFlag: 0\n}, {\n qe: 0x0049,\n nmps: 41,\n nlps: 38,\n switchFlag: 0\n}, {\n qe: 0x0025,\n nmps: 42,\n nlps: 39,\n switchFlag: 0\n}, {\n qe: 0x0015,\n nmps: 43,\n nlps: 40,\n switchFlag: 0\n}, {\n qe: 0x0009,\n nmps: 44,\n nlps: 41,\n switchFlag: 0\n}, {\n qe: 0x0005,\n nmps: 45,\n nlps: 42,\n switchFlag: 0\n}, {\n qe: 0x0001,\n nmps: 45,\n nlps: 43,\n switchFlag: 0\n}, {\n qe: 0x5601,\n nmps: 46,\n nlps: 46,\n switchFlag: 0\n}];\n\nclass ArithmeticDecoder {\n constructor(data, start, end) {\n this.data = data;\n this.bp = start;\n this.dataEnd = end;\n this.chigh = data[start];\n this.clow = 0;\n this.byteIn();\n this.chigh = this.chigh << 7 & 0xffff | this.clow >> 9 & 0x7f;\n this.clow = this.clow << 7 & 0xffff;\n this.ct -= 7;\n this.a = 0x8000;\n }\n\n byteIn() {\n const data = this.data;\n let bp = this.bp;\n\n if (data[bp] === 0xff) {\n if (data[bp + 1] > 0x8f) {\n this.clow += 0xff00;\n this.ct = 8;\n } else {\n bp++;\n this.clow += data[bp] << 9;\n this.ct = 7;\n this.bp = bp;\n }\n } else {\n bp++;\n this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00;\n this.ct = 8;\n this.bp = bp;\n }\n\n if (this.clow > 0xffff) {\n this.chigh += this.clow >> 16;\n this.clow &= 0xffff;\n }\n }\n\n readBit(contexts, pos) {\n let cx_index = contexts[pos] >> 1,\n cx_mps = contexts[pos] & 1;\n const qeTableIcx = QeTable[cx_index];\n const qeIcx = qeTableIcx.qe;\n let d;\n let a = this.a - qeIcx;\n\n if (this.chigh < qeIcx) {\n if (a < qeIcx) {\n a = qeIcx;\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n } else {\n a = qeIcx;\n d = 1 ^ cx_mps;\n\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n\n cx_index = qeTableIcx.nlps;\n }\n } else {\n this.chigh -= qeIcx;\n\n if ((a & 0x8000) !== 0) {\n this.a = a;\n return cx_mps;\n }\n\n if (a < qeIcx) {\n d = 1 ^ cx_mps;\n\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n\n cx_index = qeTableIcx.nlps;\n } else {\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n }\n }\n\n do {\n if (this.ct === 0) {\n this.byteIn();\n }\n\n a <<= 1;\n this.chigh = this.chigh << 1 & 0xffff | this.clow >> 15 & 1;\n this.clow = this.clow << 1 & 0xffff;\n this.ct--;\n } while ((a & 0x8000) === 0);\n\n this.a = a;\n contexts[pos] = cx_index << 1 | cx_mps;\n return d;\n }\n\n}\n\nexports.ArithmeticDecoder = ArithmeticDecoder;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.JpegStream = void 0;\n\nvar _stream = __w_pdfjs_require__(12);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _jpg = __w_pdfjs_require__(19);\n\nvar _util = __w_pdfjs_require__(2);\n\nconst JpegStream = function JpegStreamClosure() {\n function JpegStream(stream, maybeLength, dict, params) {\n let ch;\n\n while ((ch = stream.getByte()) !== -1) {\n if (ch === 0xff) {\n stream.skip(-1);\n break;\n }\n }\n\n this.stream = stream;\n this.maybeLength = maybeLength;\n this.dict = dict;\n this.params = params;\n\n _stream.DecodeStream.call(this, maybeLength);\n }\n\n JpegStream.prototype = Object.create(_stream.DecodeStream.prototype);\n Object.defineProperty(JpegStream.prototype, \"bytes\", {\n get: function JpegStream_bytes() {\n return (0, _util.shadow)(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n },\n configurable: true\n });\n\n JpegStream.prototype.ensureBuffer = function (requested) {};\n\n JpegStream.prototype.readBlock = function () {\n if (this.eof) {\n return;\n }\n\n const jpegOptions = {\n decodeTransform: undefined,\n colorTransform: undefined\n };\n const decodeArr = this.dict.getArray(\"Decode\", \"D\");\n\n if (this.forceRGB && Array.isArray(decodeArr)) {\n const bitsPerComponent = this.dict.get(\"BitsPerComponent\") || 8;\n const decodeArrLength = decodeArr.length;\n const transform = new Int32Array(decodeArrLength);\n let transformNeeded = false;\n const maxValue = (1 << bitsPerComponent) - 1;\n\n for (let i = 0; i < decodeArrLength; i += 2) {\n transform[i] = (decodeArr[i + 1] - decodeArr[i]) * 256 | 0;\n transform[i + 1] = decodeArr[i] * maxValue | 0;\n\n if (transform[i] !== 256 || transform[i + 1] !== 0) {\n transformNeeded = true;\n }\n }\n\n if (transformNeeded) {\n jpegOptions.decodeTransform = transform;\n }\n }\n\n if ((0, _primitives.isDict)(this.params)) {\n const colorTransform = this.params.get(\"ColorTransform\");\n\n if (Number.isInteger(colorTransform)) {\n jpegOptions.colorTransform = colorTransform;\n }\n }\n\n const jpegImage = new _jpg.JpegImage(jpegOptions);\n jpegImage.parse(this.bytes);\n const data = jpegImage.getData({\n width: this.drawWidth,\n height: this.drawHeight,\n forceRGB: this.forceRGB,\n isSourcePDF: true\n });\n this.buffer = data;\n this.bufferLength = data.length;\n this.eof = true;\n };\n\n return JpegStream;\n}();\n\nexports.JpegStream = JpegStream;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.JpegImage = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nclass JpegError extends _util.BaseException {\n constructor(msg) {\n super(`JPEG error: ${msg}`);\n }\n\n}\n\nclass DNLMarkerError extends _util.BaseException {\n constructor(message, scanLines) {\n super(message);\n this.scanLines = scanLines;\n }\n\n}\n\nclass EOIMarkerError extends _util.BaseException {}\n\nvar JpegImage = function JpegImageClosure() {\n var dctZigZag = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]);\n var dctCos1 = 4017;\n var dctSin1 = 799;\n var dctCos3 = 3406;\n var dctSin3 = 2276;\n var dctCos6 = 1567;\n var dctSin6 = 3784;\n var dctSqrt2 = 5793;\n var dctSqrt1d2 = 2896;\n\n function JpegImage({\n decodeTransform = null,\n colorTransform = -1\n } = {}) {\n this._decodeTransform = decodeTransform;\n this._colorTransform = colorTransform;\n }\n\n function buildHuffmanTable(codeLengths, values) {\n var k = 0,\n code = [],\n i,\n j,\n length = 16;\n\n while (length > 0 && !codeLengths[length - 1]) {\n length--;\n }\n\n code.push({\n children: [],\n index: 0\n });\n var p = code[0],\n q;\n\n for (i = 0; i < length; i++) {\n for (j = 0; j < codeLengths[i]; j++) {\n p = code.pop();\n p.children[p.index] = values[k];\n\n while (p.index > 0) {\n p = code.pop();\n }\n\n p.index++;\n code.push(p);\n\n while (code.length <= i) {\n code.push(q = {\n children: [],\n index: 0\n });\n p.children[p.index] = q.children;\n p = q;\n }\n\n k++;\n }\n\n if (i + 1 < length) {\n code.push(q = {\n children: [],\n index: 0\n });\n p.children[p.index] = q.children;\n p = q;\n }\n }\n\n return code[0].children;\n }\n\n function getBlockBufferOffset(component, row, col) {\n return 64 * ((component.blocksPerLine + 1) * row + col);\n }\n\n function decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive, parseDNLMarker = false) {\n var mcusPerLine = frame.mcusPerLine;\n var progressive = frame.progressive;\n const startOffset = offset;\n let bitsData = 0,\n bitsCount = 0;\n\n function readBit() {\n if (bitsCount > 0) {\n bitsCount--;\n return bitsData >> bitsCount & 1;\n }\n\n bitsData = data[offset++];\n\n if (bitsData === 0xff) {\n var nextByte = data[offset++];\n\n if (nextByte) {\n if (nextByte === 0xdc && parseDNLMarker) {\n offset += 2;\n const scanLines = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n\n if (scanLines > 0 && scanLines !== frame.scanLines) {\n throw new DNLMarkerError(\"Found DNL marker (0xFFDC) while parsing scan data\", scanLines);\n }\n } else if (nextByte === 0xd9) {\n if (parseDNLMarker) {\n const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n\n if (maybeScanLines > 0 && Math.round(frame.scanLines / maybeScanLines) >= 10) {\n throw new DNLMarkerError(\"Found EOI marker (0xFFD9) while parsing scan data, \" + \"possibly caused by incorrect `scanLines` parameter\", maybeScanLines);\n }\n }\n\n throw new EOIMarkerError(\"Found EOI marker (0xFFD9) while parsing scan data\");\n }\n\n throw new JpegError(`unexpected marker ${(bitsData << 8 | nextByte).toString(16)}`);\n }\n }\n\n bitsCount = 7;\n return bitsData >>> 7;\n }\n\n function decodeHuffman(tree) {\n var node = tree;\n\n while (true) {\n node = node[readBit()];\n\n switch (typeof node) {\n case \"number\":\n return node;\n\n case \"object\":\n continue;\n }\n\n throw new JpegError(\"invalid huffman sequence\");\n }\n }\n\n function receive(length) {\n var n = 0;\n\n while (length > 0) {\n n = n << 1 | readBit();\n length--;\n }\n\n return n;\n }\n\n function receiveAndExtend(length) {\n if (length === 1) {\n return readBit() === 1 ? 1 : -1;\n }\n\n var n = receive(length);\n\n if (n >= 1 << length - 1) {\n return n;\n }\n\n return n + (-1 << length) + 1;\n }\n\n function decodeBaseline(component, blockOffset) {\n var t = decodeHuffman(component.huffmanTableDC);\n var diff = t === 0 ? 0 : receiveAndExtend(t);\n component.blockData[blockOffset] = component.pred += diff;\n var k = 1;\n\n while (k < 64) {\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15,\n r = rs >> 4;\n\n if (s === 0) {\n if (r < 15) {\n break;\n }\n\n k += 16;\n continue;\n }\n\n k += r;\n var z = dctZigZag[k];\n component.blockData[blockOffset + z] = receiveAndExtend(s);\n k++;\n }\n }\n\n function decodeDCFirst(component, blockOffset) {\n var t = decodeHuffman(component.huffmanTableDC);\n var diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n component.blockData[blockOffset] = component.pred += diff;\n }\n\n function decodeDCSuccessive(component, blockOffset) {\n component.blockData[blockOffset] |= readBit() << successive;\n }\n\n var eobrun = 0;\n\n function decodeACFirst(component, blockOffset) {\n if (eobrun > 0) {\n eobrun--;\n return;\n }\n\n var k = spectralStart,\n e = spectralEnd;\n\n while (k <= e) {\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15,\n r = rs >> 4;\n\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r) - 1;\n break;\n }\n\n k += 16;\n continue;\n }\n\n k += r;\n var z = dctZigZag[k];\n component.blockData[blockOffset + z] = receiveAndExtend(s) * (1 << successive);\n k++;\n }\n }\n\n var successiveACState = 0,\n successiveACNextValue;\n\n function decodeACSuccessive(component, blockOffset) {\n var k = spectralStart;\n var e = spectralEnd;\n var r = 0;\n var s;\n var rs;\n\n while (k <= e) {\n const offsetZ = blockOffset + dctZigZag[k];\n const sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n\n switch (successiveACState) {\n case 0:\n rs = decodeHuffman(component.huffmanTableAC);\n s = rs & 15;\n r = rs >> 4;\n\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r);\n successiveACState = 4;\n } else {\n r = 16;\n successiveACState = 1;\n }\n } else {\n if (s !== 1) {\n throw new JpegError(\"invalid ACn encoding\");\n }\n\n successiveACNextValue = receiveAndExtend(s);\n successiveACState = r ? 2 : 3;\n }\n\n continue;\n\n case 1:\n case 2:\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n r--;\n\n if (r === 0) {\n successiveACState = successiveACState === 2 ? 3 : 0;\n }\n }\n\n break;\n\n case 3:\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n component.blockData[offsetZ] = successiveACNextValue << successive;\n successiveACState = 0;\n }\n\n break;\n\n case 4:\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n }\n\n break;\n }\n\n k++;\n }\n\n if (successiveACState === 4) {\n eobrun--;\n\n if (eobrun === 0) {\n successiveACState = 0;\n }\n }\n }\n\n let blockRow = 0;\n\n function decodeMcu(component, decode, mcu, row, col) {\n var mcuRow = mcu / mcusPerLine | 0;\n var mcuCol = mcu % mcusPerLine;\n blockRow = mcuRow * component.v + row;\n var blockCol = mcuCol * component.h + col;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n\n function decodeBlock(component, decode, mcu) {\n blockRow = mcu / component.blocksPerLine | 0;\n var blockCol = mcu % component.blocksPerLine;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n\n var componentsLength = components.length;\n var component, i, j, k, n;\n var decodeFn;\n\n if (progressive) {\n if (spectralStart === 0) {\n decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n } else {\n decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n }\n } else {\n decodeFn = decodeBaseline;\n }\n\n var mcu = 0,\n fileMarker;\n var mcuExpected;\n\n if (componentsLength === 1) {\n mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n } else {\n mcuExpected = mcusPerLine * frame.mcusPerColumn;\n }\n\n var h, v;\n\n while (mcu <= mcuExpected) {\n var mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected;\n\n if (mcuToRead > 0) {\n for (i = 0; i < componentsLength; i++) {\n components[i].pred = 0;\n }\n\n eobrun = 0;\n\n if (componentsLength === 1) {\n component = components[0];\n\n for (n = 0; n < mcuToRead; n++) {\n decodeBlock(component, decodeFn, mcu);\n mcu++;\n }\n } else {\n for (n = 0; n < mcuToRead; n++) {\n for (i = 0; i < componentsLength; i++) {\n component = components[i];\n h = component.h;\n v = component.v;\n\n for (j = 0; j < v; j++) {\n for (k = 0; k < h; k++) {\n decodeMcu(component, decodeFn, mcu, j, k);\n }\n }\n }\n\n mcu++;\n }\n }\n }\n\n bitsCount = 0;\n fileMarker = findNextFileMarker(data, offset);\n\n if (!fileMarker) {\n break;\n }\n\n if (fileMarker.invalid) {\n const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n (0, _util.warn)(`decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`);\n offset = fileMarker.offset;\n }\n\n if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n offset += 2;\n } else {\n break;\n }\n }\n\n return offset - startOffset;\n }\n\n function quantizeAndInverse(component, blockBufferOffset, p) {\n var qt = component.quantizationTable,\n blockData = component.blockData;\n var v0, v1, v2, v3, v4, v5, v6, v7;\n var p0, p1, p2, p3, p4, p5, p6, p7;\n var t;\n\n if (!qt) {\n throw new JpegError(\"missing required Quantization Table.\");\n }\n\n for (var row = 0; row < 64; row += 8) {\n p0 = blockData[blockBufferOffset + row];\n p1 = blockData[blockBufferOffset + row + 1];\n p2 = blockData[blockBufferOffset + row + 2];\n p3 = blockData[blockBufferOffset + row + 3];\n p4 = blockData[blockBufferOffset + row + 4];\n p5 = blockData[blockBufferOffset + row + 5];\n p6 = blockData[blockBufferOffset + row + 6];\n p7 = blockData[blockBufferOffset + row + 7];\n p0 *= qt[row];\n\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = dctSqrt2 * p0 + 512 >> 10;\n p[row] = t;\n p[row + 1] = t;\n p[row + 2] = t;\n p[row + 3] = t;\n p[row + 4] = t;\n p[row + 5] = t;\n p[row + 6] = t;\n p[row + 7] = t;\n continue;\n }\n\n p1 *= qt[row + 1];\n p2 *= qt[row + 2];\n p3 *= qt[row + 3];\n p4 *= qt[row + 4];\n p5 *= qt[row + 5];\n p6 *= qt[row + 6];\n p7 *= qt[row + 7];\n v0 = dctSqrt2 * p0 + 128 >> 8;\n v1 = dctSqrt2 * p4 + 128 >> 8;\n v2 = p2;\n v3 = p6;\n v4 = dctSqrt1d2 * (p1 - p7) + 128 >> 8;\n v7 = dctSqrt1d2 * (p1 + p7) + 128 >> 8;\n v5 = p3 << 4;\n v6 = p5 << 4;\n v0 = v0 + v1 + 1 >> 1;\n v1 = v0 - v1;\n t = v2 * dctSin6 + v3 * dctCos6 + 128 >> 8;\n v2 = v2 * dctCos6 - v3 * dctSin6 + 128 >> 8;\n v3 = t;\n v4 = v4 + v6 + 1 >> 1;\n v6 = v4 - v6;\n v7 = v7 + v5 + 1 >> 1;\n v5 = v7 - v5;\n v0 = v0 + v3 + 1 >> 1;\n v3 = v0 - v3;\n v1 = v1 + v2 + 1 >> 1;\n v2 = v1 - v2;\n t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;\n v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;\n v7 = t;\n t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;\n v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;\n v6 = t;\n p[row] = v0 + v7;\n p[row + 7] = v0 - v7;\n p[row + 1] = v1 + v6;\n p[row + 6] = v1 - v6;\n p[row + 2] = v2 + v5;\n p[row + 5] = v2 - v5;\n p[row + 3] = v3 + v4;\n p[row + 4] = v3 - v4;\n }\n\n for (var col = 0; col < 8; ++col) {\n p0 = p[col];\n p1 = p[col + 8];\n p2 = p[col + 16];\n p3 = p[col + 24];\n p4 = p[col + 32];\n p5 = p[col + 40];\n p6 = p[col + 48];\n p7 = p[col + 56];\n\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = dctSqrt2 * p0 + 8192 >> 14;\n\n if (t < -2040) {\n t = 0;\n } else if (t >= 2024) {\n t = 255;\n } else {\n t = t + 2056 >> 4;\n }\n\n blockData[blockBufferOffset + col] = t;\n blockData[blockBufferOffset + col + 8] = t;\n blockData[blockBufferOffset + col + 16] = t;\n blockData[blockBufferOffset + col + 24] = t;\n blockData[blockBufferOffset + col + 32] = t;\n blockData[blockBufferOffset + col + 40] = t;\n blockData[blockBufferOffset + col + 48] = t;\n blockData[blockBufferOffset + col + 56] = t;\n continue;\n }\n\n v0 = dctSqrt2 * p0 + 2048 >> 12;\n v1 = dctSqrt2 * p4 + 2048 >> 12;\n v2 = p2;\n v3 = p6;\n v4 = dctSqrt1d2 * (p1 - p7) + 2048 >> 12;\n v7 = dctSqrt1d2 * (p1 + p7) + 2048 >> 12;\n v5 = p3;\n v6 = p5;\n v0 = (v0 + v1 + 1 >> 1) + 4112;\n v1 = v0 - v1;\n t = v2 * dctSin6 + v3 * dctCos6 + 2048 >> 12;\n v2 = v2 * dctCos6 - v3 * dctSin6 + 2048 >> 12;\n v3 = t;\n v4 = v4 + v6 + 1 >> 1;\n v6 = v4 - v6;\n v7 = v7 + v5 + 1 >> 1;\n v5 = v7 - v5;\n v0 = v0 + v3 + 1 >> 1;\n v3 = v0 - v3;\n v1 = v1 + v2 + 1 >> 1;\n v2 = v1 - v2;\n t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;\n v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;\n v7 = t;\n t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;\n v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;\n v6 = t;\n p0 = v0 + v7;\n p7 = v0 - v7;\n p1 = v1 + v6;\n p6 = v1 - v6;\n p2 = v2 + v5;\n p5 = v2 - v5;\n p3 = v3 + v4;\n p4 = v3 - v4;\n\n if (p0 < 16) {\n p0 = 0;\n } else if (p0 >= 4080) {\n p0 = 255;\n } else {\n p0 >>= 4;\n }\n\n if (p1 < 16) {\n p1 = 0;\n } else if (p1 >= 4080) {\n p1 = 255;\n } else {\n p1 >>= 4;\n }\n\n if (p2 < 16) {\n p2 = 0;\n } else if (p2 >= 4080) {\n p2 = 255;\n } else {\n p2 >>= 4;\n }\n\n if (p3 < 16) {\n p3 = 0;\n } else if (p3 >= 4080) {\n p3 = 255;\n } else {\n p3 >>= 4;\n }\n\n if (p4 < 16) {\n p4 = 0;\n } else if (p4 >= 4080) {\n p4 = 255;\n } else {\n p4 >>= 4;\n }\n\n if (p5 < 16) {\n p5 = 0;\n } else if (p5 >= 4080) {\n p5 = 255;\n } else {\n p5 >>= 4;\n }\n\n if (p6 < 16) {\n p6 = 0;\n } else if (p6 >= 4080) {\n p6 = 255;\n } else {\n p6 >>= 4;\n }\n\n if (p7 < 16) {\n p7 = 0;\n } else if (p7 >= 4080) {\n p7 = 255;\n } else {\n p7 >>= 4;\n }\n\n blockData[blockBufferOffset + col] = p0;\n blockData[blockBufferOffset + col + 8] = p1;\n blockData[blockBufferOffset + col + 16] = p2;\n blockData[blockBufferOffset + col + 24] = p3;\n blockData[blockBufferOffset + col + 32] = p4;\n blockData[blockBufferOffset + col + 40] = p5;\n blockData[blockBufferOffset + col + 48] = p6;\n blockData[blockBufferOffset + col + 56] = p7;\n }\n }\n\n function buildComponentData(frame, component) {\n var blocksPerLine = component.blocksPerLine;\n var blocksPerColumn = component.blocksPerColumn;\n var computationBuffer = new Int16Array(64);\n\n for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n var offset = getBlockBufferOffset(component, blockRow, blockCol);\n quantizeAndInverse(component, offset, computationBuffer);\n }\n }\n\n return component.blockData;\n }\n\n function findNextFileMarker(data, currentPos, startPos = currentPos) {\n const maxPos = data.length - 1;\n var newPos = startPos < currentPos ? startPos : currentPos;\n\n if (currentPos >= maxPos) {\n return null;\n }\n\n var currentMarker = (0, _core_utils.readUint16)(data, currentPos);\n\n if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n return {\n invalid: null,\n marker: currentMarker,\n offset: currentPos\n };\n }\n\n var newMarker = (0, _core_utils.readUint16)(data, newPos);\n\n while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {\n if (++newPos >= maxPos) {\n return null;\n }\n\n newMarker = (0, _core_utils.readUint16)(data, newPos);\n }\n\n return {\n invalid: currentMarker.toString(16),\n marker: newMarker,\n offset: newPos\n };\n }\n\n JpegImage.prototype = {\n parse(data, {\n dnlScanLines = null\n } = {}) {\n function readDataBlock() {\n const length = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n let endOffset = offset + length - 2;\n var fileMarker = findNextFileMarker(data, endOffset, offset);\n\n if (fileMarker && fileMarker.invalid) {\n (0, _util.warn)(\"readDataBlock - incorrect length, current marker is: \" + fileMarker.invalid);\n endOffset = fileMarker.offset;\n }\n\n var array = data.subarray(offset, endOffset);\n offset += array.length;\n return array;\n }\n\n function prepareComponents(frame) {\n var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n\n for (var i = 0; i < frame.components.length; i++) {\n component = frame.components[i];\n var blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH);\n var blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV);\n var blocksPerLineForMcu = mcusPerLine * component.h;\n var blocksPerColumnForMcu = mcusPerColumn * component.v;\n var blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n component.blockData = new Int16Array(blocksBufferSize);\n component.blocksPerLine = blocksPerLine;\n component.blocksPerColumn = blocksPerColumn;\n }\n\n frame.mcusPerLine = mcusPerLine;\n frame.mcusPerColumn = mcusPerColumn;\n }\n\n var offset = 0;\n var jfif = null;\n var adobe = null;\n var frame, resetInterval;\n let numSOSMarkers = 0;\n var quantizationTables = [];\n var huffmanTablesAC = [],\n huffmanTablesDC = [];\n let fileMarker = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n\n if (fileMarker !== 0xffd8) {\n throw new JpegError(\"SOI not found\");\n }\n\n fileMarker = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n\n markerLoop: while (fileMarker !== 0xffd9) {\n var i, j, l;\n\n switch (fileMarker) {\n case 0xffe0:\n case 0xffe1:\n case 0xffe2:\n case 0xffe3:\n case 0xffe4:\n case 0xffe5:\n case 0xffe6:\n case 0xffe7:\n case 0xffe8:\n case 0xffe9:\n case 0xffea:\n case 0xffeb:\n case 0xffec:\n case 0xffed:\n case 0xffee:\n case 0xffef:\n case 0xfffe:\n var appData = readDataBlock();\n\n if (fileMarker === 0xffe0) {\n if (appData[0] === 0x4a && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) {\n jfif = {\n version: {\n major: appData[5],\n minor: appData[6]\n },\n densityUnits: appData[7],\n xDensity: appData[8] << 8 | appData[9],\n yDensity: appData[10] << 8 | appData[11],\n thumbWidth: appData[12],\n thumbHeight: appData[13],\n thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13])\n };\n }\n }\n\n if (fileMarker === 0xffee) {\n if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6f && appData[3] === 0x62 && appData[4] === 0x65) {\n adobe = {\n version: appData[5] << 8 | appData[6],\n flags0: appData[7] << 8 | appData[8],\n flags1: appData[9] << 8 | appData[10],\n transformCode: appData[11]\n };\n }\n }\n\n break;\n\n case 0xffdb:\n const quantizationTablesLength = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n var quantizationTablesEnd = quantizationTablesLength + offset - 2;\n var z;\n\n while (offset < quantizationTablesEnd) {\n var quantizationTableSpec = data[offset++];\n var tableData = new Uint16Array(64);\n\n if (quantizationTableSpec >> 4 === 0) {\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = data[offset++];\n }\n } else if (quantizationTableSpec >> 4 === 1) {\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n }\n } else {\n throw new JpegError(\"DQT - invalid table spec\");\n }\n\n quantizationTables[quantizationTableSpec & 15] = tableData;\n }\n\n break;\n\n case 0xffc0:\n case 0xffc1:\n case 0xffc2:\n if (frame) {\n throw new JpegError(\"Only single frame JPEGs supported\");\n }\n\n offset += 2;\n frame = {};\n frame.extended = fileMarker === 0xffc1;\n frame.progressive = fileMarker === 0xffc2;\n frame.precision = data[offset++];\n const sofScanLines = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n frame.scanLines = dnlScanLines || sofScanLines;\n frame.samplesPerLine = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n frame.components = [];\n frame.componentIds = {};\n var componentsCount = data[offset++],\n componentId;\n var maxH = 0,\n maxV = 0;\n\n for (i = 0; i < componentsCount; i++) {\n componentId = data[offset];\n var h = data[offset + 1] >> 4;\n var v = data[offset + 1] & 15;\n\n if (maxH < h) {\n maxH = h;\n }\n\n if (maxV < v) {\n maxV = v;\n }\n\n var qId = data[offset + 2];\n l = frame.components.push({\n h,\n v,\n quantizationId: qId,\n quantizationTable: null\n });\n frame.componentIds[componentId] = l - 1;\n offset += 3;\n }\n\n frame.maxH = maxH;\n frame.maxV = maxV;\n prepareComponents(frame);\n break;\n\n case 0xffc4:\n const huffmanLength = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n\n for (i = 2; i < huffmanLength;) {\n var huffmanTableSpec = data[offset++];\n var codeLengths = new Uint8Array(16);\n var codeLengthSum = 0;\n\n for (j = 0; j < 16; j++, offset++) {\n codeLengthSum += codeLengths[j] = data[offset];\n }\n\n var huffmanValues = new Uint8Array(codeLengthSum);\n\n for (j = 0; j < codeLengthSum; j++, offset++) {\n huffmanValues[j] = data[offset];\n }\n\n i += 17 + codeLengthSum;\n (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues);\n }\n\n break;\n\n case 0xffdd:\n offset += 2;\n resetInterval = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n break;\n\n case 0xffda:\n const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n offset += 2;\n var selectorsCount = data[offset++];\n var components = [],\n component;\n\n for (i = 0; i < selectorsCount; i++) {\n const index = data[offset++];\n var componentIndex = frame.componentIds[index];\n component = frame.components[componentIndex];\n component.index = index;\n var tableSpec = data[offset++];\n component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n components.push(component);\n }\n\n var spectralStart = data[offset++];\n var spectralEnd = data[offset++];\n var successiveApproximation = data[offset++];\n\n try {\n var processed = decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker);\n offset += processed;\n } catch (ex) {\n if (ex instanceof DNLMarkerError) {\n (0, _util.warn)(`${ex.message} -- attempting to re-parse the JPEG image.`);\n return this.parse(data, {\n dnlScanLines: ex.scanLines\n });\n } else if (ex instanceof EOIMarkerError) {\n (0, _util.warn)(`${ex.message} -- ignoring the rest of the image data.`);\n break markerLoop;\n }\n\n throw ex;\n }\n\n break;\n\n case 0xffdc:\n offset += 4;\n break;\n\n case 0xffff:\n if (data[offset] !== 0xff) {\n offset--;\n }\n\n break;\n\n default:\n const nextFileMarker = findNextFileMarker(data, offset - 2, offset - 3);\n\n if (nextFileMarker && nextFileMarker.invalid) {\n (0, _util.warn)(\"JpegImage.parse - unexpected data, current marker is: \" + nextFileMarker.invalid);\n offset = nextFileMarker.offset;\n break;\n }\n\n if (offset >= data.length - 1) {\n (0, _util.warn)(\"JpegImage.parse - reached the end of the image data \" + \"without finding an EOI marker (0xFFD9).\");\n break markerLoop;\n }\n\n throw new JpegError(\"JpegImage.parse - unknown marker: \" + fileMarker.toString(16));\n }\n\n fileMarker = (0, _core_utils.readUint16)(data, offset);\n offset += 2;\n }\n\n this.width = frame.samplesPerLine;\n this.height = frame.scanLines;\n this.jfif = jfif;\n this.adobe = adobe;\n this.components = [];\n\n for (i = 0; i < frame.components.length; i++) {\n component = frame.components[i];\n var quantizationTable = quantizationTables[component.quantizationId];\n\n if (quantizationTable) {\n component.quantizationTable = quantizationTable;\n }\n\n this.components.push({\n index: component.index,\n output: buildComponentData(frame, component),\n scaleX: component.h / frame.maxH,\n scaleY: component.v / frame.maxV,\n blocksPerLine: component.blocksPerLine,\n blocksPerColumn: component.blocksPerColumn\n });\n }\n\n this.numComponents = this.components.length;\n return undefined;\n },\n\n _getLinearizedBlockData(width, height, isSourcePDF = false) {\n var scaleX = this.width / width,\n scaleY = this.height / height;\n var component, componentScaleX, componentScaleY, blocksPerScanline;\n var x, y, i, j, k;\n var index;\n var offset = 0;\n var output;\n var numComponents = this.components.length;\n var dataLength = width * height * numComponents;\n var data = new Uint8ClampedArray(dataLength);\n var xScaleBlockOffset = new Uint32Array(width);\n var mask3LSB = 0xfffffff8;\n let lastComponentScaleX;\n\n for (i = 0; i < numComponents; i++) {\n component = this.components[i];\n componentScaleX = component.scaleX * scaleX;\n componentScaleY = component.scaleY * scaleY;\n offset = i;\n output = component.output;\n blocksPerScanline = component.blocksPerLine + 1 << 3;\n\n if (componentScaleX !== lastComponentScaleX) {\n for (x = 0; x < width; x++) {\n j = 0 | x * componentScaleX;\n xScaleBlockOffset[x] = (j & mask3LSB) << 3 | j & 7;\n }\n\n lastComponentScaleX = componentScaleX;\n }\n\n for (y = 0; y < height; y++) {\n j = 0 | y * componentScaleY;\n index = blocksPerScanline * (j & mask3LSB) | (j & 7) << 3;\n\n for (x = 0; x < width; x++) {\n data[offset] = output[index + xScaleBlockOffset[x]];\n offset += numComponents;\n }\n }\n }\n\n let transform = this._decodeTransform;\n\n if (!isSourcePDF && numComponents === 4 && !transform) {\n transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);\n }\n\n if (transform) {\n for (i = 0; i < dataLength;) {\n for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {\n data[i] = (data[i] * transform[k] >> 8) + transform[k + 1];\n }\n }\n }\n\n return data;\n },\n\n get _isColorConversionNeeded() {\n if (this.adobe) {\n return !!this.adobe.transformCode;\n }\n\n if (this.numComponents === 3) {\n if (this._colorTransform === 0) {\n return false;\n } else if (this.components[0].index === 0x52 && this.components[1].index === 0x47 && this.components[2].index === 0x42) {\n return false;\n }\n\n return true;\n }\n\n if (this._colorTransform === 1) {\n return true;\n }\n\n return false;\n },\n\n _convertYccToRgb: function convertYccToRgb(data) {\n var Y, Cb, Cr;\n\n for (var i = 0, length = data.length; i < length; i += 3) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = Y - 179.456 + 1.402 * Cr;\n data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n data[i + 2] = Y - 226.816 + 1.772 * Cb;\n }\n\n return data;\n },\n _convertYcckToRgb: function convertYcckToRgb(data) {\n var Y, Cb, Cr, k;\n var offset = 0;\n\n for (var i = 0, length = data.length; i < length; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n k = data[i + 3];\n data[offset++] = -122.67195406894 + Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - 5.4080610064599e-5 * Y + 0.00048449797120281 * k - 0.154362151871126) + Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y - 0.00477271405408747 * k + 1.53380253221734) + Y * (0.000961250184130688 * Y - 0.00266257332283933 * k + 0.48357088451265) + k * (-0.000336197177618394 * k + 0.484791561490776);\n data[offset++] = 107.268039397724 + Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + 0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665);\n data[offset++] = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407);\n }\n\n return data.subarray(0, offset);\n },\n _convertYcckToCmyk: function convertYcckToCmyk(data) {\n var Y, Cb, Cr;\n\n for (var i = 0, length = data.length; i < length; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = 434.456 - Y - 1.402 * Cr;\n data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n data[i + 2] = 481.816 - Y - 1.772 * Cb;\n }\n\n return data;\n },\n _convertCmykToRgb: function convertCmykToRgb(data) {\n var c, m, y, k;\n var offset = 0;\n\n for (var i = 0, length = data.length; i < length; i += 4) {\n c = data[i];\n m = data[i + 1];\n y = data[i + 2];\n k = data[i + 3];\n data[offset++] = 255 + c * (-0.00006747147073602441 * c + 0.0008379262121013727 * m + 0.0002894718188643294 * y + 0.003264231057537806 * k - 1.1185611867203937) + m * (0.000026374107616089405 * m - 0.00008626949158638572 * y - 0.0002748769067499491 * k - 0.02155688794978967) + y * (-0.00003878099212869363 * y - 0.0003267808279485286 * k + 0.0686742238595345) - k * (0.0003361971776183937 * k + 0.7430659151342254);\n data[offset++] = 255 + c * (0.00013596372813588848 * c + 0.000924537132573585 * m + 0.00010567359618683593 * y + 0.0004791864687436512 * k - 0.3109689587515875) + m * (-0.00023545346108370344 * m + 0.0002702845253534714 * y + 0.0020200308977307156 * k - 0.7488052167015494) + y * (0.00006834815998235662 * y + 0.00015168452363460973 * k - 0.09751927774728933) - k * (0.00031891311758832814 * k + 0.7364883807733168);\n data[offset++] = 255 + c * (0.000013598650411385307 * c + 0.00012423956175490851 * m + 0.0004751985097583589 * y - 0.0000036729317476630422 * k - 0.05562186980264034) + m * (0.00016141380598724676 * m + 0.0009692239130725186 * y + 0.0007782692450036253 * k - 0.44015232367526463) + y * (5.068882914068769e-7 * y + 0.0017778369011375071 * k - 0.7591454649749609) - k * (0.0003435319965105553 * k + 0.7063770186160144);\n }\n\n return data.subarray(0, offset);\n },\n\n getData({\n width,\n height,\n forceRGB = false,\n isSourcePDF = false\n }) {\n if (this.numComponents > 4) {\n throw new JpegError(\"Unsupported color mode\");\n }\n\n var data = this._getLinearizedBlockData(width, height, isSourcePDF);\n\n if (this.numComponents === 1 && forceRGB) {\n var dataLength = data.length;\n var rgbData = new Uint8ClampedArray(dataLength * 3);\n var offset = 0;\n\n for (var i = 0; i < dataLength; i++) {\n var grayColor = data[i];\n rgbData[offset++] = grayColor;\n rgbData[offset++] = grayColor;\n rgbData[offset++] = grayColor;\n }\n\n return rgbData;\n } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n return this._convertYccToRgb(data);\n } else if (this.numComponents === 4) {\n if (this._isColorConversionNeeded) {\n if (forceRGB) {\n return this._convertYcckToRgb(data);\n }\n\n return this._convertYcckToCmyk(data);\n } else if (forceRGB) {\n return this._convertCmykToRgb(data);\n }\n }\n\n return data;\n }\n\n };\n return JpegImage;\n}();\n\nexports.JpegImage = JpegImage;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.JpxStream = void 0;\n\nvar _stream = __w_pdfjs_require__(12);\n\nvar _jpx = __w_pdfjs_require__(21);\n\nvar _util = __w_pdfjs_require__(2);\n\nconst JpxStream = function JpxStreamClosure() {\n function JpxStream(stream, maybeLength, dict, params) {\n this.stream = stream;\n this.maybeLength = maybeLength;\n this.dict = dict;\n this.params = params;\n\n _stream.DecodeStream.call(this, maybeLength);\n }\n\n JpxStream.prototype = Object.create(_stream.DecodeStream.prototype);\n Object.defineProperty(JpxStream.prototype, \"bytes\", {\n get: function JpxStream_bytes() {\n return (0, _util.shadow)(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n },\n configurable: true\n });\n\n JpxStream.prototype.ensureBuffer = function (requested) {};\n\n JpxStream.prototype.readBlock = function () {\n if (this.eof) {\n return;\n }\n\n const jpxImage = new _jpx.JpxImage();\n jpxImage.parse(this.bytes);\n const width = jpxImage.width;\n const height = jpxImage.height;\n const componentsCount = jpxImage.componentsCount;\n const tileCount = jpxImage.tiles.length;\n\n if (tileCount === 1) {\n this.buffer = jpxImage.tiles[0].items;\n } else {\n const data = new Uint8ClampedArray(width * height * componentsCount);\n\n for (let k = 0; k < tileCount; k++) {\n const tileComponents = jpxImage.tiles[k];\n const tileWidth = tileComponents.width;\n const tileHeight = tileComponents.height;\n const tileLeft = tileComponents.left;\n const tileTop = tileComponents.top;\n const src = tileComponents.items;\n let srcPosition = 0;\n let dataPosition = (width * tileTop + tileLeft) * componentsCount;\n const imgRowSize = width * componentsCount;\n const tileRowSize = tileWidth * componentsCount;\n\n for (let j = 0; j < tileHeight; j++) {\n const rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);\n data.set(rowBytes, dataPosition);\n srcPosition += tileRowSize;\n dataPosition += imgRowSize;\n }\n }\n\n this.buffer = data;\n }\n\n this.bufferLength = this.buffer.length;\n this.eof = true;\n };\n\n return JpxStream;\n}();\n\nexports.JpxStream = JpxStream;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.JpxImage = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _arithmetic_decoder = __w_pdfjs_require__(17);\n\nclass JpxError extends _util.BaseException {\n constructor(msg) {\n super(`JPX error: ${msg}`);\n }\n\n}\n\nvar JpxImage = function JpxImageClosure() {\n var SubbandsGainLog2 = {\n LL: 0,\n LH: 1,\n HL: 1,\n HH: 2\n };\n\n function JpxImage() {\n this.failOnCorruptedImage = false;\n }\n\n JpxImage.prototype = {\n parse: function JpxImage_parse(data) {\n var head = (0, _core_utils.readUint16)(data, 0);\n\n if (head === 0xff4f) {\n this.parseCodestream(data, 0, data.length);\n return;\n }\n\n var position = 0,\n length = data.length;\n\n while (position < length) {\n var headerSize = 8;\n var lbox = (0, _core_utils.readUint32)(data, position);\n var tbox = (0, _core_utils.readUint32)(data, position + 4);\n position += headerSize;\n\n if (lbox === 1) {\n lbox = (0, _core_utils.readUint32)(data, position) * 4294967296 + (0, _core_utils.readUint32)(data, position + 4);\n position += 8;\n headerSize += 8;\n }\n\n if (lbox === 0) {\n lbox = length - position + headerSize;\n }\n\n if (lbox < headerSize) {\n throw new JpxError(\"Invalid box field size\");\n }\n\n var dataLength = lbox - headerSize;\n var jumpDataLength = true;\n\n switch (tbox) {\n case 0x6a703268:\n jumpDataLength = false;\n break;\n\n case 0x636f6c72:\n var method = data[position];\n\n if (method === 1) {\n var colorspace = (0, _core_utils.readUint32)(data, position + 3);\n\n switch (colorspace) {\n case 16:\n case 17:\n case 18:\n break;\n\n default:\n (0, _util.warn)(\"Unknown colorspace \" + colorspace);\n break;\n }\n } else if (method === 2) {\n (0, _util.info)(\"ICC profile not supported\");\n }\n\n break;\n\n case 0x6a703263:\n this.parseCodestream(data, position, position + dataLength);\n break;\n\n case 0x6a502020:\n if ((0, _core_utils.readUint32)(data, position) !== 0x0d0a870a) {\n (0, _util.warn)(\"Invalid JP2 signature\");\n }\n\n break;\n\n case 0x6a501a1a:\n case 0x66747970:\n case 0x72726571:\n case 0x72657320:\n case 0x69686472:\n break;\n\n default:\n var headerType = String.fromCharCode(tbox >> 24 & 0xff, tbox >> 16 & 0xff, tbox >> 8 & 0xff, tbox & 0xff);\n (0, _util.warn)(\"Unsupported header type \" + tbox + \" (\" + headerType + \")\");\n break;\n }\n\n if (jumpDataLength) {\n position += dataLength;\n }\n }\n },\n parseImageProperties: function JpxImage_parseImageProperties(stream) {\n var newByte = stream.getByte();\n\n while (newByte >= 0) {\n var oldByte = newByte;\n newByte = stream.getByte();\n var code = oldByte << 8 | newByte;\n\n if (code === 0xff51) {\n stream.skip(4);\n var Xsiz = stream.getInt32() >>> 0;\n var Ysiz = stream.getInt32() >>> 0;\n var XOsiz = stream.getInt32() >>> 0;\n var YOsiz = stream.getInt32() >>> 0;\n stream.skip(16);\n var Csiz = stream.getUint16();\n this.width = Xsiz - XOsiz;\n this.height = Ysiz - YOsiz;\n this.componentsCount = Csiz;\n this.bitsPerComponent = 8;\n return;\n }\n }\n\n throw new JpxError(\"No size marker found in JPX stream\");\n },\n parseCodestream: function JpxImage_parseCodestream(data, start, end) {\n var context = {};\n var doNotRecover = false;\n\n try {\n var position = start;\n\n while (position + 1 < end) {\n var code = (0, _core_utils.readUint16)(data, position);\n position += 2;\n var length = 0,\n j,\n sqcd,\n spqcds,\n spqcdSize,\n scalarExpounded,\n tile;\n\n switch (code) {\n case 0xff4f:\n context.mainHeader = true;\n break;\n\n case 0xffd9:\n break;\n\n case 0xff51:\n length = (0, _core_utils.readUint16)(data, position);\n var siz = {};\n siz.Xsiz = (0, _core_utils.readUint32)(data, position + 4);\n siz.Ysiz = (0, _core_utils.readUint32)(data, position + 8);\n siz.XOsiz = (0, _core_utils.readUint32)(data, position + 12);\n siz.YOsiz = (0, _core_utils.readUint32)(data, position + 16);\n siz.XTsiz = (0, _core_utils.readUint32)(data, position + 20);\n siz.YTsiz = (0, _core_utils.readUint32)(data, position + 24);\n siz.XTOsiz = (0, _core_utils.readUint32)(data, position + 28);\n siz.YTOsiz = (0, _core_utils.readUint32)(data, position + 32);\n var componentsCount = (0, _core_utils.readUint16)(data, position + 36);\n siz.Csiz = componentsCount;\n var components = [];\n j = position + 38;\n\n for (var i = 0; i < componentsCount; i++) {\n var component = {\n precision: (data[j] & 0x7f) + 1,\n isSigned: !!(data[j] & 0x80),\n XRsiz: data[j + 1],\n YRsiz: data[j + 2]\n };\n j += 3;\n calculateComponentDimensions(component, siz);\n components.push(component);\n }\n\n context.SIZ = siz;\n context.components = components;\n calculateTileGrids(context, components);\n context.QCC = [];\n context.COC = [];\n break;\n\n case 0xff5c:\n length = (0, _core_utils.readUint16)(data, position);\n var qcd = {};\n j = position + 2;\n sqcd = data[j++];\n\n switch (sqcd & 0x1f) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n\n default:\n throw new Error(\"Invalid SQcd value \" + sqcd);\n }\n\n qcd.noQuantization = spqcdSize === 8;\n qcd.scalarExpounded = scalarExpounded;\n qcd.guardBits = sqcd >> 5;\n spqcds = [];\n\n while (j < length + position) {\n var spqcd = {};\n\n if (spqcdSize === 8) {\n spqcd.epsilon = data[j++] >> 3;\n spqcd.mu = 0;\n } else {\n spqcd.epsilon = data[j] >> 3;\n spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1];\n j += 2;\n }\n\n spqcds.push(spqcd);\n }\n\n qcd.SPqcds = spqcds;\n\n if (context.mainHeader) {\n context.QCD = qcd;\n } else {\n context.currentTile.QCD = qcd;\n context.currentTile.QCC = [];\n }\n\n break;\n\n case 0xff5d:\n length = (0, _core_utils.readUint16)(data, position);\n var qcc = {};\n j = position + 2;\n var cqcc;\n\n if (context.SIZ.Csiz < 257) {\n cqcc = data[j++];\n } else {\n cqcc = (0, _core_utils.readUint16)(data, j);\n j += 2;\n }\n\n sqcd = data[j++];\n\n switch (sqcd & 0x1f) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n\n default:\n throw new Error(\"Invalid SQcd value \" + sqcd);\n }\n\n qcc.noQuantization = spqcdSize === 8;\n qcc.scalarExpounded = scalarExpounded;\n qcc.guardBits = sqcd >> 5;\n spqcds = [];\n\n while (j < length + position) {\n spqcd = {};\n\n if (spqcdSize === 8) {\n spqcd.epsilon = data[j++] >> 3;\n spqcd.mu = 0;\n } else {\n spqcd.epsilon = data[j] >> 3;\n spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1];\n j += 2;\n }\n\n spqcds.push(spqcd);\n }\n\n qcc.SPqcds = spqcds;\n\n if (context.mainHeader) {\n context.QCC[cqcc] = qcc;\n } else {\n context.currentTile.QCC[cqcc] = qcc;\n }\n\n break;\n\n case 0xff52:\n length = (0, _core_utils.readUint16)(data, position);\n var cod = {};\n j = position + 2;\n var scod = data[j++];\n cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n cod.sopMarkerUsed = !!(scod & 2);\n cod.ephMarkerUsed = !!(scod & 4);\n cod.progressionOrder = data[j++];\n cod.layersCount = (0, _core_utils.readUint16)(data, j);\n j += 2;\n cod.multipleComponentTransform = data[j++];\n cod.decompositionLevelsCount = data[j++];\n cod.xcb = (data[j++] & 0xf) + 2;\n cod.ycb = (data[j++] & 0xf) + 2;\n var blockStyle = data[j++];\n cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n cod.resetContextProbabilities = !!(blockStyle & 2);\n cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n cod.verticallyStripe = !!(blockStyle & 8);\n cod.predictableTermination = !!(blockStyle & 16);\n cod.segmentationSymbolUsed = !!(blockStyle & 32);\n cod.reversibleTransformation = data[j++];\n\n if (cod.entropyCoderWithCustomPrecincts) {\n var precinctsSizes = [];\n\n while (j < length + position) {\n var precinctsSize = data[j++];\n precinctsSizes.push({\n PPx: precinctsSize & 0xf,\n PPy: precinctsSize >> 4\n });\n }\n\n cod.precinctsSizes = precinctsSizes;\n }\n\n var unsupported = [];\n\n if (cod.selectiveArithmeticCodingBypass) {\n unsupported.push(\"selectiveArithmeticCodingBypass\");\n }\n\n if (cod.resetContextProbabilities) {\n unsupported.push(\"resetContextProbabilities\");\n }\n\n if (cod.terminationOnEachCodingPass) {\n unsupported.push(\"terminationOnEachCodingPass\");\n }\n\n if (cod.verticallyStripe) {\n unsupported.push(\"verticallyStripe\");\n }\n\n if (cod.predictableTermination) {\n unsupported.push(\"predictableTermination\");\n }\n\n if (unsupported.length > 0) {\n doNotRecover = true;\n throw new Error(\"Unsupported COD options (\" + unsupported.join(\", \") + \")\");\n }\n\n if (context.mainHeader) {\n context.COD = cod;\n } else {\n context.currentTile.COD = cod;\n context.currentTile.COC = [];\n }\n\n break;\n\n case 0xff90:\n length = (0, _core_utils.readUint16)(data, position);\n tile = {};\n tile.index = (0, _core_utils.readUint16)(data, position + 2);\n tile.length = (0, _core_utils.readUint32)(data, position + 4);\n tile.dataEnd = tile.length + position - 2;\n tile.partIndex = data[position + 8];\n tile.partsCount = data[position + 9];\n context.mainHeader = false;\n\n if (tile.partIndex === 0) {\n tile.COD = context.COD;\n tile.COC = context.COC.slice(0);\n tile.QCD = context.QCD;\n tile.QCC = context.QCC.slice(0);\n }\n\n context.currentTile = tile;\n break;\n\n case 0xff93:\n tile = context.currentTile;\n\n if (tile.partIndex === 0) {\n initializeTile(context, tile.index);\n buildPackets(context);\n }\n\n length = tile.dataEnd - position;\n parseTilePackets(context, data, position, length);\n break;\n\n case 0xff55:\n case 0xff57:\n case 0xff58:\n case 0xff64:\n length = (0, _core_utils.readUint16)(data, position);\n break;\n\n case 0xff53:\n throw new Error(\"Codestream code 0xFF53 (COC) is not implemented\");\n\n default:\n throw new Error(\"Unknown codestream code: \" + code.toString(16));\n }\n\n position += length;\n }\n } catch (e) {\n if (doNotRecover || this.failOnCorruptedImage) {\n throw new JpxError(e.message);\n } else {\n (0, _util.warn)(\"JPX: Trying to recover from: \" + e.message);\n }\n }\n\n this.tiles = transformComponents(context);\n this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;\n this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;\n this.componentsCount = context.SIZ.Csiz;\n }\n };\n\n function calculateComponentDimensions(component, siz) {\n component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n component.width = component.x1 - component.x0;\n component.height = component.y1 - component.y0;\n }\n\n function calculateTileGrids(context, components) {\n var siz = context.SIZ;\n var tile,\n tiles = [];\n var numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n var numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n\n for (var q = 0; q < numYtiles; q++) {\n for (var p = 0; p < numXtiles; p++) {\n tile = {};\n tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n tile.width = tile.tx1 - tile.tx0;\n tile.height = tile.ty1 - tile.ty0;\n tile.components = [];\n tiles.push(tile);\n }\n }\n\n context.tiles = tiles;\n var componentsCount = siz.Csiz;\n\n for (var i = 0, ii = componentsCount; i < ii; i++) {\n var component = components[i];\n\n for (var j = 0, jj = tiles.length; j < jj; j++) {\n var tileComponent = {};\n tile = tiles[j];\n tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n tile.components[i] = tileComponent;\n }\n }\n }\n\n function getBlocksDimensions(context, component, r) {\n var codOrCoc = component.codingStyleParameters;\n var result = {};\n\n if (!codOrCoc.entropyCoderWithCustomPrecincts) {\n result.PPx = 15;\n result.PPy = 15;\n } else {\n result.PPx = codOrCoc.precinctsSizes[r].PPx;\n result.PPy = codOrCoc.precinctsSizes[r].PPy;\n }\n\n result.xcb_ = r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) : Math.min(codOrCoc.xcb, result.PPx);\n result.ycb_ = r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) : Math.min(codOrCoc.ycb, result.PPy);\n return result;\n }\n\n function buildPrecincts(context, resolution, dimensions) {\n var precinctWidth = 1 << dimensions.PPx;\n var precinctHeight = 1 << dimensions.PPy;\n var isZeroRes = resolution.resLevel === 0;\n var precinctWidthInSubband = 1 << dimensions.PPx + (isZeroRes ? 0 : -1);\n var precinctHeightInSubband = 1 << dimensions.PPy + (isZeroRes ? 0 : -1);\n var numprecinctswide = resolution.trx1 > resolution.trx0 ? Math.ceil(resolution.trx1 / precinctWidth) - Math.floor(resolution.trx0 / precinctWidth) : 0;\n var numprecinctshigh = resolution.try1 > resolution.try0 ? Math.ceil(resolution.try1 / precinctHeight) - Math.floor(resolution.try0 / precinctHeight) : 0;\n var numprecincts = numprecinctswide * numprecinctshigh;\n resolution.precinctParameters = {\n precinctWidth,\n precinctHeight,\n numprecinctswide,\n numprecinctshigh,\n numprecincts,\n precinctWidthInSubband,\n precinctHeightInSubband\n };\n }\n\n function buildCodeblocks(context, subband, dimensions) {\n var xcb_ = dimensions.xcb_;\n var ycb_ = dimensions.ycb_;\n var codeblockWidth = 1 << xcb_;\n var codeblockHeight = 1 << ycb_;\n var cbx0 = subband.tbx0 >> xcb_;\n var cby0 = subband.tby0 >> ycb_;\n var cbx1 = subband.tbx1 + codeblockWidth - 1 >> xcb_;\n var cby1 = subband.tby1 + codeblockHeight - 1 >> ycb_;\n var precinctParameters = subband.resolution.precinctParameters;\n var codeblocks = [];\n var precincts = [];\n var i, j, codeblock, precinctNumber;\n\n for (j = cby0; j < cby1; j++) {\n for (i = cbx0; i < cbx1; i++) {\n codeblock = {\n cbx: i,\n cby: j,\n tbx0: codeblockWidth * i,\n tby0: codeblockHeight * j,\n tbx1: codeblockWidth * (i + 1),\n tby1: codeblockHeight * (j + 1)\n };\n codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);\n codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);\n codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);\n codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);\n var pi = Math.floor((codeblock.tbx0_ - subband.tbx0) / precinctParameters.precinctWidthInSubband);\n var pj = Math.floor((codeblock.tby0_ - subband.tby0) / precinctParameters.precinctHeightInSubband);\n precinctNumber = pi + pj * precinctParameters.numprecinctswide;\n codeblock.precinctNumber = precinctNumber;\n codeblock.subbandType = subband.type;\n codeblock.Lblock = 3;\n\n if (codeblock.tbx1_ <= codeblock.tbx0_ || codeblock.tby1_ <= codeblock.tby0_) {\n continue;\n }\n\n codeblocks.push(codeblock);\n var precinct = precincts[precinctNumber];\n\n if (precinct !== undefined) {\n if (i < precinct.cbxMin) {\n precinct.cbxMin = i;\n } else if (i > precinct.cbxMax) {\n precinct.cbxMax = i;\n }\n\n if (j < precinct.cbyMin) {\n precinct.cbxMin = j;\n } else if (j > precinct.cbyMax) {\n precinct.cbyMax = j;\n }\n } else {\n precincts[precinctNumber] = precinct = {\n cbxMin: i,\n cbyMin: j,\n cbxMax: i,\n cbyMax: j\n };\n }\n\n codeblock.precinct = precinct;\n }\n }\n\n subband.codeblockParameters = {\n codeblockWidth: xcb_,\n codeblockHeight: ycb_,\n numcodeblockwide: cbx1 - cbx0 + 1,\n numcodeblockhigh: cby1 - cby0 + 1\n };\n subband.codeblocks = codeblocks;\n subband.precincts = precincts;\n }\n\n function createPacket(resolution, precinctNumber, layerNumber) {\n var precinctCodeblocks = [];\n var subbands = resolution.subbands;\n\n for (var i = 0, ii = subbands.length; i < ii; i++) {\n var subband = subbands[i];\n var codeblocks = subband.codeblocks;\n\n for (var j = 0, jj = codeblocks.length; j < jj; j++) {\n var codeblock = codeblocks[j];\n\n if (codeblock.precinctNumber !== precinctNumber) {\n continue;\n }\n\n precinctCodeblocks.push(codeblock);\n }\n }\n\n return {\n layerNumber,\n codeblocks: precinctCodeblocks\n };\n }\n\n function LayerResolutionComponentPositionIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var maxDecompositionLevelsCount = 0;\n\n for (var q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount);\n }\n\n var l = 0,\n r = 0,\n i = 0,\n k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n for (; l < layersCount; l++) {\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; i < componentsCount; i++) {\n var component = tile.components[i];\n\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n var resolution = component.resolutions[r];\n var numprecincts = resolution.precinctParameters.numprecincts;\n\n for (; k < numprecincts;) {\n var packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n\n k = 0;\n }\n\n i = 0;\n }\n\n r = 0;\n }\n\n throw new JpxError(\"Out of packets\");\n };\n }\n\n function ResolutionLayerComponentPositionIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var maxDecompositionLevelsCount = 0;\n\n for (var q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount);\n }\n\n var r = 0,\n l = 0,\n i = 0,\n k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; l < layersCount; l++) {\n for (; i < componentsCount; i++) {\n var component = tile.components[i];\n\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n var resolution = component.resolutions[r];\n var numprecincts = resolution.precinctParameters.numprecincts;\n\n for (; k < numprecincts;) {\n var packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n\n k = 0;\n }\n\n i = 0;\n }\n\n l = 0;\n }\n\n throw new JpxError(\"Out of packets\");\n };\n }\n\n function ResolutionPositionComponentLayerIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var l, r, c, p;\n var maxDecompositionLevelsCount = 0;\n\n for (c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, component.codingStyleParameters.decompositionLevelsCount);\n }\n\n var maxNumPrecinctsInLevel = new Int32Array(maxDecompositionLevelsCount + 1);\n\n for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n var maxNumPrecincts = 0;\n\n for (c = 0; c < componentsCount; ++c) {\n var resolutions = tile.components[c].resolutions;\n\n if (r < resolutions.length) {\n maxNumPrecincts = Math.max(maxNumPrecincts, resolutions[r].precinctParameters.numprecincts);\n }\n }\n\n maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n }\n\n l = 0;\n r = 0;\n c = 0;\n p = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; p < maxNumPrecinctsInLevel[r]; p++) {\n for (; c < componentsCount; c++) {\n const component = tile.components[c];\n\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n var resolution = component.resolutions[r];\n var numprecincts = resolution.precinctParameters.numprecincts;\n\n if (p >= numprecincts) {\n continue;\n }\n\n for (; l < layersCount;) {\n var packet = createPacket(resolution, p, l);\n l++;\n return packet;\n }\n\n l = 0;\n }\n\n c = 0;\n }\n\n p = 0;\n }\n\n throw new JpxError(\"Out of packets\");\n };\n }\n\n function PositionComponentResolutionLayerIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var precinctsSizes = getPrecinctSizesInImageScale(tile);\n var precinctsIterationSizes = precinctsSizes;\n var l = 0,\n r = 0,\n c = 0,\n px = 0,\n py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; c < componentsCount; c++) {\n var component = tile.components[c];\n var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;\n\n for (; r <= decompositionLevelsCount; r++) {\n var resolution = component.resolutions[r];\n var sizeInImageScale = precinctsSizes.components[c].resolutions[r];\n var k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution);\n\n if (k === null) {\n continue;\n }\n\n for (; l < layersCount;) {\n var packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n\n l = 0;\n }\n\n r = 0;\n }\n\n c = 0;\n }\n\n px = 0;\n }\n\n throw new JpxError(\"Out of packets\");\n };\n }\n\n function ComponentPositionResolutionLayerIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var precinctsSizes = getPrecinctSizesInImageScale(tile);\n var l = 0,\n r = 0,\n c = 0,\n px = 0,\n py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n for (; c < componentsCount; ++c) {\n var component = tile.components[c];\n var precinctsIterationSizes = precinctsSizes.components[c];\n var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;\n\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; r <= decompositionLevelsCount; r++) {\n var resolution = component.resolutions[r];\n var sizeInImageScale = precinctsIterationSizes.resolutions[r];\n var k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution);\n\n if (k === null) {\n continue;\n }\n\n for (; l < layersCount;) {\n var packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n\n l = 0;\n }\n\n r = 0;\n }\n\n px = 0;\n }\n\n py = 0;\n }\n\n throw new JpxError(\"Out of packets\");\n };\n }\n\n function getPrecinctIndexIfExist(pxIndex, pyIndex, sizeInImageScale, precinctIterationSizes, resolution) {\n var posX = pxIndex * precinctIterationSizes.minWidth;\n var posY = pyIndex * precinctIterationSizes.minHeight;\n\n if (posX % sizeInImageScale.width !== 0 || posY % sizeInImageScale.height !== 0) {\n return null;\n }\n\n var startPrecinctRowIndex = posY / sizeInImageScale.width * resolution.precinctParameters.numprecinctswide;\n return posX / sizeInImageScale.height + startPrecinctRowIndex;\n }\n\n function getPrecinctSizesInImageScale(tile) {\n var componentsCount = tile.components.length;\n var minWidth = Number.MAX_VALUE;\n var minHeight = Number.MAX_VALUE;\n var maxNumWide = 0;\n var maxNumHigh = 0;\n var sizePerComponent = new Array(componentsCount);\n\n for (var c = 0; c < componentsCount; c++) {\n var component = tile.components[c];\n var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;\n var sizePerResolution = new Array(decompositionLevelsCount + 1);\n var minWidthCurrentComponent = Number.MAX_VALUE;\n var minHeightCurrentComponent = Number.MAX_VALUE;\n var maxNumWideCurrentComponent = 0;\n var maxNumHighCurrentComponent = 0;\n var scale = 1;\n\n for (var r = decompositionLevelsCount; r >= 0; --r) {\n var resolution = component.resolutions[r];\n var widthCurrentResolution = scale * resolution.precinctParameters.precinctWidth;\n var heightCurrentResolution = scale * resolution.precinctParameters.precinctHeight;\n minWidthCurrentComponent = Math.min(minWidthCurrentComponent, widthCurrentResolution);\n minHeightCurrentComponent = Math.min(minHeightCurrentComponent, heightCurrentResolution);\n maxNumWideCurrentComponent = Math.max(maxNumWideCurrentComponent, resolution.precinctParameters.numprecinctswide);\n maxNumHighCurrentComponent = Math.max(maxNumHighCurrentComponent, resolution.precinctParameters.numprecinctshigh);\n sizePerResolution[r] = {\n width: widthCurrentResolution,\n height: heightCurrentResolution\n };\n scale <<= 1;\n }\n\n minWidth = Math.min(minWidth, minWidthCurrentComponent);\n minHeight = Math.min(minHeight, minHeightCurrentComponent);\n maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);\n maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);\n sizePerComponent[c] = {\n resolutions: sizePerResolution,\n minWidth: minWidthCurrentComponent,\n minHeight: minHeightCurrentComponent,\n maxNumWide: maxNumWideCurrentComponent,\n maxNumHigh: maxNumHighCurrentComponent\n };\n }\n\n return {\n components: sizePerComponent,\n minWidth,\n minHeight,\n maxNumWide,\n maxNumHigh\n };\n }\n\n function buildPackets(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var componentsCount = siz.Csiz;\n\n for (var c = 0; c < componentsCount; c++) {\n var component = tile.components[c];\n var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;\n var resolutions = [];\n var subbands = [];\n\n for (var r = 0; r <= decompositionLevelsCount; r++) {\n var blocksDimensions = getBlocksDimensions(context, component, r);\n var resolution = {};\n var scale = 1 << decompositionLevelsCount - r;\n resolution.trx0 = Math.ceil(component.tcx0 / scale);\n resolution.try0 = Math.ceil(component.tcy0 / scale);\n resolution.trx1 = Math.ceil(component.tcx1 / scale);\n resolution.try1 = Math.ceil(component.tcy1 / scale);\n resolution.resLevel = r;\n buildPrecincts(context, resolution, blocksDimensions);\n resolutions.push(resolution);\n var subband;\n\n if (r === 0) {\n subband = {};\n subband.type = \"LL\";\n subband.tbx0 = Math.ceil(component.tcx0 / scale);\n subband.tby0 = Math.ceil(component.tcy0 / scale);\n subband.tbx1 = Math.ceil(component.tcx1 / scale);\n subband.tby1 = Math.ceil(component.tcy1 / scale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolution.subbands = [subband];\n } else {\n var bscale = 1 << decompositionLevelsCount - r + 1;\n var resolutionSubbands = [];\n subband = {};\n subband.type = \"HL\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n subband.tby0 = Math.ceil(component.tcy0 / bscale);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n subband.tby1 = Math.ceil(component.tcy1 / bscale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n subband = {};\n subband.type = \"LH\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale);\n subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale);\n subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n subband = {};\n subband.type = \"HH\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n resolution.subbands = resolutionSubbands;\n }\n }\n\n component.resolutions = resolutions;\n component.subbands = subbands;\n }\n\n var progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n\n switch (progressionOrder) {\n case 0:\n tile.packetsIterator = new LayerResolutionComponentPositionIterator(context);\n break;\n\n case 1:\n tile.packetsIterator = new ResolutionLayerComponentPositionIterator(context);\n break;\n\n case 2:\n tile.packetsIterator = new ResolutionPositionComponentLayerIterator(context);\n break;\n\n case 3:\n tile.packetsIterator = new PositionComponentResolutionLayerIterator(context);\n break;\n\n case 4:\n tile.packetsIterator = new ComponentPositionResolutionLayerIterator(context);\n break;\n\n default:\n throw new JpxError(`Unsupported progression order ${progressionOrder}`);\n }\n }\n\n function parseTilePackets(context, data, offset, dataLength) {\n var position = 0;\n var buffer,\n bufferSize = 0,\n skipNextBit = false;\n\n function readBits(count) {\n while (bufferSize < count) {\n var b = data[offset + position];\n position++;\n\n if (skipNextBit) {\n buffer = buffer << 7 | b;\n bufferSize += 7;\n skipNextBit = false;\n } else {\n buffer = buffer << 8 | b;\n bufferSize += 8;\n }\n\n if (b === 0xff) {\n skipNextBit = true;\n }\n }\n\n bufferSize -= count;\n return buffer >>> bufferSize & (1 << count) - 1;\n }\n\n function skipMarkerIfEqual(value) {\n if (data[offset + position - 1] === 0xff && data[offset + position] === value) {\n skipBytes(1);\n return true;\n } else if (data[offset + position] === 0xff && data[offset + position + 1] === value) {\n skipBytes(2);\n return true;\n }\n\n return false;\n }\n\n function skipBytes(count) {\n position += count;\n }\n\n function alignToByte() {\n bufferSize = 0;\n\n if (skipNextBit) {\n position++;\n skipNextBit = false;\n }\n }\n\n function readCodingpasses() {\n if (readBits(1) === 0) {\n return 1;\n }\n\n if (readBits(1) === 0) {\n return 2;\n }\n\n var value = readBits(2);\n\n if (value < 3) {\n return value + 3;\n }\n\n value = readBits(5);\n\n if (value < 31) {\n return value + 6;\n }\n\n value = readBits(7);\n return value + 37;\n }\n\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var sopMarkerUsed = context.COD.sopMarkerUsed;\n var ephMarkerUsed = context.COD.ephMarkerUsed;\n var packetsIterator = tile.packetsIterator;\n\n while (position < dataLength) {\n alignToByte();\n\n if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n skipBytes(4);\n }\n\n var packet = packetsIterator.nextPacket();\n\n if (!readBits(1)) {\n continue;\n }\n\n var layerNumber = packet.layerNumber;\n var queue = [],\n codeblock;\n\n for (var i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n codeblock = packet.codeblocks[i];\n var precinct = codeblock.precinct;\n var codeblockColumn = codeblock.cbx - precinct.cbxMin;\n var codeblockRow = codeblock.cby - precinct.cbyMin;\n var codeblockIncluded = false;\n var firstTimeInclusion = false;\n var valueReady;\n\n if (codeblock.included !== undefined) {\n codeblockIncluded = !!readBits(1);\n } else {\n precinct = codeblock.precinct;\n var inclusionTree, zeroBitPlanesTree;\n\n if (precinct.inclusionTree !== undefined) {\n inclusionTree = precinct.inclusionTree;\n } else {\n var width = precinct.cbxMax - precinct.cbxMin + 1;\n var height = precinct.cbyMax - precinct.cbyMin + 1;\n inclusionTree = new InclusionTree(width, height, layerNumber);\n zeroBitPlanesTree = new TagTree(width, height);\n precinct.inclusionTree = inclusionTree;\n precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n }\n\n if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {\n while (true) {\n if (readBits(1)) {\n valueReady = !inclusionTree.nextLevel();\n\n if (valueReady) {\n codeblock.included = true;\n codeblockIncluded = firstTimeInclusion = true;\n break;\n }\n } else {\n inclusionTree.incrementValue(layerNumber);\n break;\n }\n }\n }\n }\n\n if (!codeblockIncluded) {\n continue;\n }\n\n if (firstTimeInclusion) {\n zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n\n while (true) {\n if (readBits(1)) {\n valueReady = !zeroBitPlanesTree.nextLevel();\n\n if (valueReady) {\n break;\n }\n } else {\n zeroBitPlanesTree.incrementValue();\n }\n }\n\n codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n }\n\n var codingpasses = readCodingpasses();\n\n while (readBits(1)) {\n codeblock.Lblock++;\n }\n\n var codingpassesLog2 = (0, _core_utils.log2)(codingpasses);\n var bits = (codingpasses < 1 << codingpassesLog2 ? codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock;\n var codedDataLength = readBits(bits);\n queue.push({\n codeblock,\n codingpasses,\n dataLength: codedDataLength\n });\n }\n\n alignToByte();\n\n if (ephMarkerUsed) {\n skipMarkerIfEqual(0x92);\n }\n\n while (queue.length > 0) {\n var packetItem = queue.shift();\n codeblock = packetItem.codeblock;\n\n if (codeblock.data === undefined) {\n codeblock.data = [];\n }\n\n codeblock.data.push({\n data,\n start: offset + position,\n end: offset + position + packetItem.dataLength,\n codingpasses: packetItem.codingpasses\n });\n position += packetItem.dataLength;\n }\n }\n\n return position;\n }\n\n function copyCoefficients(coefficients, levelWidth, levelHeight, subband, delta, mb, reversible, segmentationSymbolUsed) {\n var x0 = subband.tbx0;\n var y0 = subband.tby0;\n var width = subband.tbx1 - subband.tbx0;\n var codeblocks = subband.codeblocks;\n var right = subband.type.charAt(0) === \"H\" ? 1 : 0;\n var bottom = subband.type.charAt(1) === \"H\" ? levelWidth : 0;\n\n for (var i = 0, ii = codeblocks.length; i < ii; ++i) {\n var codeblock = codeblocks[i];\n var blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n var blockHeight = codeblock.tby1_ - codeblock.tby0_;\n\n if (blockWidth === 0 || blockHeight === 0) {\n continue;\n }\n\n if (codeblock.data === undefined) {\n continue;\n }\n\n var bitModel, currentCodingpassType;\n bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType, codeblock.zeroBitPlanes, mb);\n currentCodingpassType = 2;\n var data = codeblock.data,\n totalLength = 0,\n codingpasses = 0;\n var j, jj, dataItem;\n\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n totalLength += dataItem.end - dataItem.start;\n codingpasses += dataItem.codingpasses;\n }\n\n var encodedData = new Uint8Array(totalLength);\n var position = 0;\n\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n var chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n encodedData.set(chunk, position);\n position += chunk.length;\n }\n\n var decoder = new _arithmetic_decoder.ArithmeticDecoder(encodedData, 0, totalLength);\n bitModel.setDecoder(decoder);\n\n for (j = 0; j < codingpasses; j++) {\n switch (currentCodingpassType) {\n case 0:\n bitModel.runSignificancePropagationPass();\n break;\n\n case 1:\n bitModel.runMagnitudeRefinementPass();\n break;\n\n case 2:\n bitModel.runCleanupPass();\n\n if (segmentationSymbolUsed) {\n bitModel.checkSegmentationSymbol();\n }\n\n break;\n }\n\n currentCodingpassType = (currentCodingpassType + 1) % 3;\n }\n\n var offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;\n var sign = bitModel.coefficentsSign;\n var magnitude = bitModel.coefficentsMagnitude;\n var bitsDecoded = bitModel.bitsDecoded;\n var magnitudeCorrection = reversible ? 0 : 0.5;\n var k, n, nb;\n position = 0;\n var interleave = subband.type !== \"LL\";\n\n for (j = 0; j < blockHeight; j++) {\n var row = offset / width | 0;\n var levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n\n for (k = 0; k < blockWidth; k++) {\n n = magnitude[position];\n\n if (n !== 0) {\n n = (n + magnitudeCorrection) * delta;\n\n if (sign[position] !== 0) {\n n = -n;\n }\n\n nb = bitsDecoded[position];\n var pos = interleave ? levelOffset + (offset << 1) : offset;\n\n if (reversible && nb >= mb) {\n coefficients[pos] = n;\n } else {\n coefficients[pos] = n * (1 << mb - nb);\n }\n }\n\n offset++;\n position++;\n }\n\n offset += width - blockWidth;\n }\n }\n }\n\n function transformTile(context, tile, c) {\n var component = tile.components[c];\n var codingStyleParameters = component.codingStyleParameters;\n var quantizationParameters = component.quantizationParameters;\n var decompositionLevelsCount = codingStyleParameters.decompositionLevelsCount;\n var spqcds = quantizationParameters.SPqcds;\n var scalarExpounded = quantizationParameters.scalarExpounded;\n var guardBits = quantizationParameters.guardBits;\n var segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n var precision = context.components[c].precision;\n var reversible = codingStyleParameters.reversibleTransformation;\n var transform = reversible ? new ReversibleTransform() : new IrreversibleTransform();\n var subbandCoefficients = [];\n var b = 0;\n\n for (var i = 0; i <= decompositionLevelsCount; i++) {\n var resolution = component.resolutions[i];\n var width = resolution.trx1 - resolution.trx0;\n var height = resolution.try1 - resolution.try0;\n var coefficients = new Float32Array(width * height);\n\n for (var j = 0, jj = resolution.subbands.length; j < jj; j++) {\n var mu, epsilon;\n\n if (!scalarExpounded) {\n mu = spqcds[0].mu;\n epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n } else {\n mu = spqcds[b].mu;\n epsilon = spqcds[b].epsilon;\n b++;\n }\n\n var subband = resolution.subbands[j];\n var gainLog2 = SubbandsGainLog2[subband.type];\n var delta = reversible ? 1 : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);\n var mb = guardBits + epsilon - 1;\n copyCoefficients(coefficients, width, height, subband, delta, mb, reversible, segmentationSymbolUsed);\n }\n\n subbandCoefficients.push({\n width,\n height,\n items: coefficients\n });\n }\n\n var result = transform.calculate(subbandCoefficients, component.tcx0, component.tcy0);\n return {\n left: component.tcx0,\n top: component.tcy0,\n width: result.width,\n height: result.height,\n items: result.items\n };\n }\n\n function transformComponents(context) {\n var siz = context.SIZ;\n var components = context.components;\n var componentsCount = siz.Csiz;\n var resultImages = [];\n\n for (var i = 0, ii = context.tiles.length; i < ii; i++) {\n var tile = context.tiles[i];\n var transformedTiles = [];\n var c;\n\n for (c = 0; c < componentsCount; c++) {\n transformedTiles[c] = transformTile(context, tile, c);\n }\n\n var tile0 = transformedTiles[0];\n var out = new Uint8ClampedArray(tile0.items.length * componentsCount);\n var result = {\n left: tile0.left,\n top: tile0.top,\n width: tile0.width,\n height: tile0.height,\n items: out\n };\n var shift, offset;\n var pos = 0,\n j,\n jj,\n y0,\n y1,\n y2;\n\n if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n var fourComponents = componentsCount === 4;\n var y0items = transformedTiles[0].items;\n var y1items = transformedTiles[1].items;\n var y2items = transformedTiles[2].items;\n var y3items = fourComponents ? transformedTiles[3].items : null;\n shift = components[0].precision - 8;\n offset = (128 << shift) + 0.5;\n var component0 = tile.components[0];\n var alpha01 = componentsCount - 3;\n jj = y0items.length;\n\n if (!component0.codingStyleParameters.reversibleTransformation) {\n for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n out[pos++] = y0 + 1.402 * y2 >> shift;\n out[pos++] = y0 - 0.34413 * y1 - 0.71414 * y2 >> shift;\n out[pos++] = y0 + 1.772 * y1 >> shift;\n }\n } else {\n for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n const g = y0 - (y2 + y1 >> 2);\n out[pos++] = g + y2 >> shift;\n out[pos++] = g >> shift;\n out[pos++] = g + y1 >> shift;\n }\n }\n\n if (fourComponents) {\n for (j = 0, pos = 3; j < jj; j++, pos += 4) {\n out[pos] = y3items[j] + offset >> shift;\n }\n }\n } else {\n for (c = 0; c < componentsCount; c++) {\n var items = transformedTiles[c].items;\n shift = components[c].precision - 8;\n offset = (128 << shift) + 0.5;\n\n for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n out[pos] = items[j] + offset >> shift;\n pos += componentsCount;\n }\n }\n }\n\n resultImages.push(result);\n }\n\n return resultImages;\n }\n\n function initializeTile(context, tileIndex) {\n var siz = context.SIZ;\n var componentsCount = siz.Csiz;\n var tile = context.tiles[tileIndex];\n\n for (var c = 0; c < componentsCount; c++) {\n var component = tile.components[c];\n var qcdOrQcc = context.currentTile.QCC[c] !== undefined ? context.currentTile.QCC[c] : context.currentTile.QCD;\n component.quantizationParameters = qcdOrQcc;\n var codOrCoc = context.currentTile.COC[c] !== undefined ? context.currentTile.COC[c] : context.currentTile.COD;\n component.codingStyleParameters = codOrCoc;\n }\n\n tile.codingStyleDefaultParameters = context.currentTile.COD;\n }\n\n var TagTree = function TagTreeClosure() {\n function TagTree(width, height) {\n var levelsLength = (0, _core_utils.log2)(Math.max(width, height)) + 1;\n this.levels = [];\n\n for (var i = 0; i < levelsLength; i++) {\n var level = {\n width,\n height,\n items: []\n };\n this.levels.push(level);\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n\n TagTree.prototype = {\n reset: function TagTree_reset(i, j) {\n var currentLevel = 0,\n value = 0,\n level;\n\n while (currentLevel < this.levels.length) {\n level = this.levels[currentLevel];\n var index = i + j * level.width;\n\n if (level.items[index] !== undefined) {\n value = level.items[index];\n break;\n }\n\n level.index = index;\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n\n currentLevel--;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n this.currentLevel = currentLevel;\n delete this.value;\n },\n incrementValue: function TagTree_incrementValue() {\n var level = this.levels[this.currentLevel];\n level.items[level.index]++;\n },\n nextLevel: function TagTree_nextLevel() {\n var currentLevel = this.currentLevel;\n var level = this.levels[currentLevel];\n var value = level.items[level.index];\n currentLevel--;\n\n if (currentLevel < 0) {\n this.value = value;\n return false;\n }\n\n this.currentLevel = currentLevel;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n return true;\n }\n };\n return TagTree;\n }();\n\n var InclusionTree = function InclusionTreeClosure() {\n function InclusionTree(width, height, defaultValue) {\n var levelsLength = (0, _core_utils.log2)(Math.max(width, height)) + 1;\n this.levels = [];\n\n for (var i = 0; i < levelsLength; i++) {\n var items = new Uint8Array(width * height);\n\n for (var j = 0, jj = items.length; j < jj; j++) {\n items[j] = defaultValue;\n }\n\n var level = {\n width,\n height,\n items\n };\n this.levels.push(level);\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n\n InclusionTree.prototype = {\n reset: function InclusionTree_reset(i, j, stopValue) {\n var currentLevel = 0;\n\n while (currentLevel < this.levels.length) {\n var level = this.levels[currentLevel];\n var index = i + j * level.width;\n level.index = index;\n var value = level.items[index];\n\n if (value === 0xff) {\n break;\n }\n\n if (value > stopValue) {\n this.currentLevel = currentLevel;\n this.propagateValues();\n return false;\n }\n\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n\n this.currentLevel = currentLevel - 1;\n return true;\n },\n incrementValue: function InclusionTree_incrementValue(stopValue) {\n var level = this.levels[this.currentLevel];\n level.items[level.index] = stopValue + 1;\n this.propagateValues();\n },\n propagateValues: function InclusionTree_propagateValues() {\n var levelIndex = this.currentLevel;\n var level = this.levels[levelIndex];\n var currentValue = level.items[level.index];\n\n while (--levelIndex >= 0) {\n level = this.levels[levelIndex];\n level.items[level.index] = currentValue;\n }\n },\n nextLevel: function InclusionTree_nextLevel() {\n var currentLevel = this.currentLevel;\n var level = this.levels[currentLevel];\n var value = level.items[level.index];\n level.items[level.index] = 0xff;\n currentLevel--;\n\n if (currentLevel < 0) {\n return false;\n }\n\n this.currentLevel = currentLevel;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n return true;\n }\n };\n return InclusionTree;\n }();\n\n var BitModel = function BitModelClosure() {\n var UNIFORM_CONTEXT = 17;\n var RUNLENGTH_CONTEXT = 18;\n var LLAndLHContextsLabel = new Uint8Array([0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8]);\n var HLContextLabel = new Uint8Array([0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8]);\n var HHContextLabel = new Uint8Array([0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5, 5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8]);\n\n function BitModel(width, height, subband, zeroBitPlanes, mb) {\n this.width = width;\n this.height = height;\n let contextLabelTable;\n\n if (subband === \"HH\") {\n contextLabelTable = HHContextLabel;\n } else if (subband === \"HL\") {\n contextLabelTable = HLContextLabel;\n } else {\n contextLabelTable = LLAndLHContextsLabel;\n }\n\n this.contextLabelTable = contextLabelTable;\n var coefficientCount = width * height;\n this.neighborsSignificance = new Uint8Array(coefficientCount);\n this.coefficentsSign = new Uint8Array(coefficientCount);\n let coefficentsMagnitude;\n\n if (mb > 14) {\n coefficentsMagnitude = new Uint32Array(coefficientCount);\n } else if (mb > 6) {\n coefficentsMagnitude = new Uint16Array(coefficientCount);\n } else {\n coefficentsMagnitude = new Uint8Array(coefficientCount);\n }\n\n this.coefficentsMagnitude = coefficentsMagnitude;\n this.processingFlags = new Uint8Array(coefficientCount);\n var bitsDecoded = new Uint8Array(coefficientCount);\n\n if (zeroBitPlanes !== 0) {\n for (var i = 0; i < coefficientCount; i++) {\n bitsDecoded[i] = zeroBitPlanes;\n }\n }\n\n this.bitsDecoded = bitsDecoded;\n this.reset();\n }\n\n BitModel.prototype = {\n setDecoder: function BitModel_setDecoder(decoder) {\n this.decoder = decoder;\n },\n reset: function BitModel_reset() {\n this.contexts = new Int8Array(19);\n this.contexts[0] = 4 << 1 | 0;\n this.contexts[UNIFORM_CONTEXT] = 46 << 1 | 0;\n this.contexts[RUNLENGTH_CONTEXT] = 3 << 1 | 0;\n },\n setNeighborsSignificance: function BitModel_setNeighborsSignificance(row, column, index) {\n var neighborsSignificance = this.neighborsSignificance;\n var width = this.width,\n height = this.height;\n var left = column > 0;\n var right = column + 1 < width;\n var i;\n\n if (row > 0) {\n i = index - width;\n\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n\n neighborsSignificance[i] += 0x04;\n }\n\n if (row + 1 < height) {\n i = index + width;\n\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n\n neighborsSignificance[i] += 0x04;\n }\n\n if (left) {\n neighborsSignificance[index - 1] += 0x01;\n }\n\n if (right) {\n neighborsSignificance[index + 1] += 0x01;\n }\n\n neighborsSignificance[index] |= 0x80;\n },\n runSignificancePropagationPass: function BitModel_runSignificancePropagationPass() {\n var decoder = this.decoder;\n var width = this.width,\n height = this.height;\n var coefficentsMagnitude = this.coefficentsMagnitude;\n var coefficentsSign = this.coefficentsSign;\n var neighborsSignificance = this.neighborsSignificance;\n var processingFlags = this.processingFlags;\n var contexts = this.contexts;\n var labels = this.contextLabelTable;\n var bitsDecoded = this.bitsDecoded;\n var processedInverseMask = ~1;\n var processedMask = 1;\n var firstMagnitudeBitMask = 2;\n\n for (var i0 = 0; i0 < height; i0 += 4) {\n for (var j = 0; j < width; j++) {\n var index = i0 * width + j;\n\n for (var i1 = 0; i1 < 4; i1++, index += width) {\n var i = i0 + i1;\n\n if (i >= height) {\n break;\n }\n\n processingFlags[index] &= processedInverseMask;\n\n if (coefficentsMagnitude[index] || !neighborsSignificance[index]) {\n continue;\n }\n\n var contextLabel = labels[neighborsSignificance[index]];\n var decision = decoder.readBit(contexts, contextLabel);\n\n if (decision) {\n var sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n },\n decodeSignBit: function BitModel_decodeSignBit(row, column, index) {\n var width = this.width,\n height = this.height;\n var coefficentsMagnitude = this.coefficentsMagnitude;\n var coefficentsSign = this.coefficentsSign;\n var contribution, sign0, sign1, significance1;\n var contextLabel, decoded;\n significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;\n\n if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n sign1 = coefficentsSign[index + 1];\n\n if (significance1) {\n sign0 = coefficentsSign[index - 1];\n contribution = 1 - sign1 - sign0;\n } else {\n contribution = 1 - sign1 - sign1;\n }\n } else if (significance1) {\n sign0 = coefficentsSign[index - 1];\n contribution = 1 - sign0 - sign0;\n } else {\n contribution = 0;\n }\n\n var horizontalContribution = 3 * contribution;\n significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;\n\n if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n sign1 = coefficentsSign[index + width];\n\n if (significance1) {\n sign0 = coefficentsSign[index - width];\n contribution = 1 - sign1 - sign0 + horizontalContribution;\n } else {\n contribution = 1 - sign1 - sign1 + horizontalContribution;\n }\n } else if (significance1) {\n sign0 = coefficentsSign[index - width];\n contribution = 1 - sign0 - sign0 + horizontalContribution;\n } else {\n contribution = horizontalContribution;\n }\n\n if (contribution >= 0) {\n contextLabel = 9 + contribution;\n decoded = this.decoder.readBit(this.contexts, contextLabel);\n } else {\n contextLabel = 9 - contribution;\n decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;\n }\n\n return decoded;\n },\n runMagnitudeRefinementPass: function BitModel_runMagnitudeRefinementPass() {\n var decoder = this.decoder;\n var width = this.width,\n height = this.height;\n var coefficentsMagnitude = this.coefficentsMagnitude;\n var neighborsSignificance = this.neighborsSignificance;\n var contexts = this.contexts;\n var bitsDecoded = this.bitsDecoded;\n var processingFlags = this.processingFlags;\n var processedMask = 1;\n var firstMagnitudeBitMask = 2;\n var length = width * height;\n var width4 = width * 4;\n\n for (var index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n indexNext = Math.min(length, index0 + width4);\n\n for (var j = 0; j < width; j++) {\n for (var index = index0 + j; index < indexNext; index += width) {\n if (!coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) {\n continue;\n }\n\n var contextLabel = 16;\n\n if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n processingFlags[index] ^= firstMagnitudeBitMask;\n var significance = neighborsSignificance[index] & 127;\n contextLabel = significance === 0 ? 15 : 14;\n }\n\n var bit = decoder.readBit(contexts, contextLabel);\n coefficentsMagnitude[index] = coefficentsMagnitude[index] << 1 | bit;\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n },\n runCleanupPass: function BitModel_runCleanupPass() {\n var decoder = this.decoder;\n var width = this.width,\n height = this.height;\n var neighborsSignificance = this.neighborsSignificance;\n var coefficentsMagnitude = this.coefficentsMagnitude;\n var coefficentsSign = this.coefficentsSign;\n var contexts = this.contexts;\n var labels = this.contextLabelTable;\n var bitsDecoded = this.bitsDecoded;\n var processingFlags = this.processingFlags;\n var processedMask = 1;\n var firstMagnitudeBitMask = 2;\n var oneRowDown = width;\n var twoRowsDown = width * 2;\n var threeRowsDown = width * 3;\n var iNext;\n\n for (var i0 = 0; i0 < height; i0 = iNext) {\n iNext = Math.min(i0 + 4, height);\n var indexBase = i0 * width;\n var checkAllEmpty = i0 + 3 < height;\n\n for (var j = 0; j < width; j++) {\n var index0 = indexBase + j;\n var allEmpty = checkAllEmpty && processingFlags[index0] === 0 && processingFlags[index0 + oneRowDown] === 0 && processingFlags[index0 + twoRowsDown] === 0 && processingFlags[index0 + threeRowsDown] === 0 && neighborsSignificance[index0] === 0 && neighborsSignificance[index0 + oneRowDown] === 0 && neighborsSignificance[index0 + twoRowsDown] === 0 && neighborsSignificance[index0 + threeRowsDown] === 0;\n var i1 = 0,\n index = index0;\n var i = i0,\n sign;\n\n if (allEmpty) {\n var hasSignificantCoefficent = decoder.readBit(contexts, RUNLENGTH_CONTEXT);\n\n if (!hasSignificantCoefficent) {\n bitsDecoded[index0]++;\n bitsDecoded[index0 + oneRowDown]++;\n bitsDecoded[index0 + twoRowsDown]++;\n bitsDecoded[index0 + threeRowsDown]++;\n continue;\n }\n\n i1 = decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT);\n\n if (i1 !== 0) {\n i = i0 + i1;\n index += i1 * width;\n }\n\n sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n index = index0;\n\n for (var i2 = i0; i2 <= i; i2++, index += width) {\n bitsDecoded[index]++;\n }\n\n i1++;\n }\n\n for (i = i0 + i1; i < iNext; i++, index += width) {\n if (coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) {\n continue;\n }\n\n var contextLabel = labels[neighborsSignificance[index]];\n var decision = decoder.readBit(contexts, contextLabel);\n\n if (decision === 1) {\n sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n\n bitsDecoded[index]++;\n }\n }\n }\n },\n checkSegmentationSymbol: function BitModel_checkSegmentationSymbol() {\n var decoder = this.decoder;\n var contexts = this.contexts;\n var symbol = decoder.readBit(contexts, UNIFORM_CONTEXT) << 3 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 2 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT);\n\n if (symbol !== 0xa) {\n throw new JpxError(\"Invalid segmentation symbol\");\n }\n }\n };\n return BitModel;\n }();\n\n var Transform = function TransformClosure() {\n function Transform() {}\n\n Transform.prototype.calculate = function transformCalculate(subbands, u0, v0) {\n var ll = subbands[0];\n\n for (var i = 1, ii = subbands.length; i < ii; i++) {\n ll = this.iterate(ll, subbands[i], u0, v0);\n }\n\n return ll;\n };\n\n Transform.prototype.extend = function extend(buffer, offset, size) {\n var i1 = offset - 1,\n j1 = offset + 1;\n var i2 = offset + size - 2,\n j2 = offset + size;\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1] = buffer[j1];\n buffer[j2] = buffer[i2];\n };\n\n Transform.prototype.iterate = function Transform_iterate(ll, hl_lh_hh, u0, v0) {\n var llWidth = ll.width,\n llHeight = ll.height,\n llItems = ll.items;\n var width = hl_lh_hh.width;\n var height = hl_lh_hh.height;\n var items = hl_lh_hh.items;\n var i, j, k, l, u, v;\n\n for (k = 0, i = 0; i < llHeight; i++) {\n l = i * 2 * width;\n\n for (j = 0; j < llWidth; j++, k++, l += 2) {\n items[l] = llItems[k];\n }\n }\n\n llItems = ll.items = null;\n var bufferPadding = 4;\n var rowBuffer = new Float32Array(width + 2 * bufferPadding);\n\n if (width === 1) {\n if ((u0 & 1) !== 0) {\n for (v = 0, k = 0; v < height; v++, k += width) {\n items[k] *= 0.5;\n }\n }\n } else {\n for (v = 0, k = 0; v < height; v++, k += width) {\n rowBuffer.set(items.subarray(k, k + width), bufferPadding);\n this.extend(rowBuffer, bufferPadding, width);\n this.filter(rowBuffer, bufferPadding, width);\n items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k);\n }\n }\n\n var numBuffers = 16;\n var colBuffers = [];\n\n for (i = 0; i < numBuffers; i++) {\n colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n }\n\n var b,\n currentBuffer = 0;\n ll = bufferPadding + height;\n\n if (height === 1) {\n if ((v0 & 1) !== 0) {\n for (u = 0; u < width; u++) {\n items[u] *= 0.5;\n }\n }\n } else {\n for (u = 0; u < width; u++) {\n if (currentBuffer === 0) {\n numBuffers = Math.min(width - u, numBuffers);\n\n for (k = u, l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n colBuffers[b][l] = items[k + b];\n }\n }\n\n currentBuffer = numBuffers;\n }\n\n currentBuffer--;\n var buffer = colBuffers[currentBuffer];\n this.extend(buffer, bufferPadding, height);\n this.filter(buffer, bufferPadding, height);\n\n if (currentBuffer === 0) {\n k = u - numBuffers + 1;\n\n for (l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n items[k + b] = colBuffers[b][l];\n }\n }\n }\n }\n }\n\n return {\n width,\n height,\n items\n };\n };\n\n return Transform;\n }();\n\n var IrreversibleTransform = function IrreversibleTransformClosure() {\n function IrreversibleTransform() {\n Transform.call(this);\n }\n\n IrreversibleTransform.prototype = Object.create(Transform.prototype);\n\n IrreversibleTransform.prototype.filter = function irreversibleTransformFilter(x, offset, length) {\n var len = length >> 1;\n offset = offset | 0;\n var j, n, current, next;\n var alpha = -1.586134342059924;\n var beta = -0.052980118572961;\n var gamma = 0.882911075530934;\n var delta = 0.443506852043971;\n var K = 1.230174104914001;\n var K_ = 1 / K;\n j = offset - 3;\n\n for (n = len + 4; n--; j += 2) {\n x[j] *= K_;\n }\n\n j = offset - 2;\n current = delta * x[j - 1];\n\n for (n = len + 3; n--; j += 2) {\n next = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n\n if (n--) {\n j += 2;\n current = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n } else {\n break;\n }\n }\n\n j = offset - 1;\n current = gamma * x[j - 1];\n\n for (n = len + 2; n--; j += 2) {\n next = gamma * x[j + 1];\n x[j] -= current + next;\n\n if (n--) {\n j += 2;\n current = gamma * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n\n j = offset;\n current = beta * x[j - 1];\n\n for (n = len + 1; n--; j += 2) {\n next = beta * x[j + 1];\n x[j] -= current + next;\n\n if (n--) {\n j += 2;\n current = beta * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n\n if (len !== 0) {\n j = offset + 1;\n current = alpha * x[j - 1];\n\n for (n = len; n--; j += 2) {\n next = alpha * x[j + 1];\n x[j] -= current + next;\n\n if (n--) {\n j += 2;\n current = alpha * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n }\n };\n\n return IrreversibleTransform;\n }();\n\n var ReversibleTransform = function ReversibleTransformClosure() {\n function ReversibleTransform() {\n Transform.call(this);\n }\n\n ReversibleTransform.prototype = Object.create(Transform.prototype);\n\n ReversibleTransform.prototype.filter = function reversibleTransformFilter(x, offset, length) {\n var len = length >> 1;\n offset = offset | 0;\n var j, n;\n\n for (j = offset, n = len + 1; n--; j += 2) {\n x[j] -= x[j - 1] + x[j + 1] + 2 >> 2;\n }\n\n for (j = offset + 1, n = len; n--; j += 2) {\n x[j] += x[j - 1] + x[j + 1] >> 1;\n }\n };\n\n return ReversibleTransform;\n }();\n\n return JpxImage;\n}();\n\nexports.JpxImage = JpxImage;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.calculateSHA512 = exports.calculateSHA384 = exports.calculateSHA256 = exports.calculateMD5 = exports.PDF20 = exports.PDF17 = exports.CipherTransformFactory = exports.ARCFourCipher = exports.AES256Cipher = exports.AES128Cipher = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _stream = __w_pdfjs_require__(12);\n\nvar ARCFourCipher = function ARCFourCipherClosure() {\n function ARCFourCipher(key) {\n this.a = 0;\n this.b = 0;\n var s = new Uint8Array(256);\n var i,\n j = 0,\n tmp,\n keyLength = key.length;\n\n for (i = 0; i < 256; ++i) {\n s[i] = i;\n }\n\n for (i = 0; i < 256; ++i) {\n tmp = s[i];\n j = j + tmp + key[i % keyLength] & 0xff;\n s[i] = s[j];\n s[j] = tmp;\n }\n\n this.s = s;\n }\n\n ARCFourCipher.prototype = {\n encryptBlock: function ARCFourCipher_encryptBlock(data) {\n var i,\n n = data.length,\n tmp,\n tmp2;\n var a = this.a,\n b = this.b,\n s = this.s;\n var output = new Uint8Array(n);\n\n for (i = 0; i < n; ++i) {\n a = a + 1 & 0xff;\n tmp = s[a];\n b = b + tmp & 0xff;\n tmp2 = s[b];\n s[a] = tmp2;\n s[b] = tmp;\n output[i] = data[i] ^ s[tmp + tmp2 & 0xff];\n }\n\n this.a = a;\n this.b = b;\n return output;\n }\n };\n ARCFourCipher.prototype.decryptBlock = ARCFourCipher.prototype.encryptBlock;\n ARCFourCipher.prototype.encrypt = ARCFourCipher.prototype.encryptBlock;\n return ARCFourCipher;\n}();\n\nexports.ARCFourCipher = ARCFourCipher;\n\nvar calculateMD5 = function calculateMD5Closure() {\n var r = new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);\n var k = new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551]);\n\n function hash(data, offset, length) {\n var h0 = 1732584193,\n h1 = -271733879,\n h2 = -1732584194,\n h3 = 271733878;\n var paddedLength = length + 72 & ~63;\n var padded = new Uint8Array(paddedLength);\n var i, j, n;\n\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n\n padded[i++] = 0x80;\n n = paddedLength - 8;\n\n while (i < n) {\n padded[i++] = 0;\n }\n\n padded[i++] = length << 3 & 0xff;\n padded[i++] = length >> 5 & 0xff;\n padded[i++] = length >> 13 & 0xff;\n padded[i++] = length >> 21 & 0xff;\n padded[i++] = length >>> 29 & 0xff;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n var w = new Int32Array(16);\n\n for (i = 0; i < paddedLength;) {\n for (j = 0; j < 16; ++j, i += 4) {\n w[j] = padded[i] | padded[i + 1] << 8 | padded[i + 2] << 16 | padded[i + 3] << 24;\n }\n\n var a = h0,\n b = h1,\n c = h2,\n d = h3,\n f,\n g;\n\n for (j = 0; j < 64; ++j) {\n if (j < 16) {\n f = b & c | ~b & d;\n g = j;\n } else if (j < 32) {\n f = d & b | ~d & c;\n g = 5 * j + 1 & 15;\n } else if (j < 48) {\n f = b ^ c ^ d;\n g = 3 * j + 5 & 15;\n } else {\n f = c ^ (b | ~d);\n g = 7 * j & 15;\n }\n\n var tmp = d,\n rotateArg = a + f + k[j] + w[g] | 0,\n rotate = r[j];\n d = c;\n c = b;\n b = b + (rotateArg << rotate | rotateArg >>> 32 - rotate) | 0;\n a = tmp;\n }\n\n h0 = h0 + a | 0;\n h1 = h1 + b | 0;\n h2 = h2 + c | 0;\n h3 = h3 + d | 0;\n }\n\n return new Uint8Array([h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >>> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >>> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >>> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >>> 24 & 0xFF]);\n }\n\n return hash;\n}();\n\nexports.calculateMD5 = calculateMD5;\n\nvar Word64 = function Word64Closure() {\n function Word64(highInteger, lowInteger) {\n this.high = highInteger | 0;\n this.low = lowInteger | 0;\n }\n\n Word64.prototype = {\n and: function Word64_and(word) {\n this.high &= word.high;\n this.low &= word.low;\n },\n xor: function Word64_xor(word) {\n this.high ^= word.high;\n this.low ^= word.low;\n },\n or: function Word64_or(word) {\n this.high |= word.high;\n this.low |= word.low;\n },\n shiftRight: function Word64_shiftRight(places) {\n if (places >= 32) {\n this.low = this.high >>> places - 32 | 0;\n this.high = 0;\n } else {\n this.low = this.low >>> places | this.high << 32 - places;\n this.high = this.high >>> places | 0;\n }\n },\n shiftLeft: function Word64_shiftLeft(places) {\n if (places >= 32) {\n this.high = this.low << places - 32;\n this.low = 0;\n } else {\n this.high = this.high << places | this.low >>> 32 - places;\n this.low = this.low << places;\n }\n },\n rotateRight: function Word64_rotateRight(places) {\n var low, high;\n\n if (places & 32) {\n high = this.low;\n low = this.high;\n } else {\n low = this.low;\n high = this.high;\n }\n\n places &= 31;\n this.low = low >>> places | high << 32 - places;\n this.high = high >>> places | low << 32 - places;\n },\n not: function Word64_not() {\n this.high = ~this.high;\n this.low = ~this.low;\n },\n add: function Word64_add(word) {\n var lowAdd = (this.low >>> 0) + (word.low >>> 0);\n var highAdd = (this.high >>> 0) + (word.high >>> 0);\n\n if (lowAdd > 0xffffffff) {\n highAdd += 1;\n }\n\n this.low = lowAdd | 0;\n this.high = highAdd | 0;\n },\n copyTo: function Word64_copyTo(bytes, offset) {\n bytes[offset] = this.high >>> 24 & 0xff;\n bytes[offset + 1] = this.high >> 16 & 0xff;\n bytes[offset + 2] = this.high >> 8 & 0xff;\n bytes[offset + 3] = this.high & 0xff;\n bytes[offset + 4] = this.low >>> 24 & 0xff;\n bytes[offset + 5] = this.low >> 16 & 0xff;\n bytes[offset + 6] = this.low >> 8 & 0xff;\n bytes[offset + 7] = this.low & 0xff;\n },\n assign: function Word64_assign(word) {\n this.high = word.high;\n this.low = word.low;\n }\n };\n return Word64;\n}();\n\nvar calculateSHA256 = function calculateSHA256Closure() {\n function rotr(x, n) {\n return x >>> n | x << 32 - n;\n }\n\n function ch(x, y, z) {\n return x & y ^ ~x & z;\n }\n\n function maj(x, y, z) {\n return x & y ^ x & z ^ y & z;\n }\n\n function sigma(x) {\n return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n }\n\n function sigmaPrime(x) {\n return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n }\n\n function littleSigma(x) {\n return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3;\n }\n\n function littleSigmaPrime(x) {\n return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10;\n }\n\n var k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n\n function hash(data, offset, length) {\n var h0 = 0x6a09e667,\n h1 = 0xbb67ae85,\n h2 = 0x3c6ef372,\n h3 = 0xa54ff53a,\n h4 = 0x510e527f,\n h5 = 0x9b05688c,\n h6 = 0x1f83d9ab,\n h7 = 0x5be0cd19;\n var paddedLength = Math.ceil((length + 9) / 64) * 64;\n var padded = new Uint8Array(paddedLength);\n var i, j, n;\n\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n\n padded[i++] = 0x80;\n n = paddedLength - 8;\n\n while (i < n) {\n padded[i++] = 0;\n }\n\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = length >>> 29 & 0xff;\n padded[i++] = length >> 21 & 0xff;\n padded[i++] = length >> 13 & 0xff;\n padded[i++] = length >> 5 & 0xff;\n padded[i++] = length << 3 & 0xff;\n var w = new Uint32Array(64);\n\n for (i = 0; i < paddedLength;) {\n for (j = 0; j < 16; ++j) {\n w[j] = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];\n i += 4;\n }\n\n for (j = 16; j < 64; ++j) {\n w[j] = littleSigmaPrime(w[j - 2]) + w[j - 7] + littleSigma(w[j - 15]) + w[j - 16] | 0;\n }\n\n var a = h0,\n b = h1,\n c = h2,\n d = h3,\n e = h4,\n f = h5,\n g = h6,\n h = h7,\n t1,\n t2;\n\n for (j = 0; j < 64; ++j) {\n t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\n t2 = sigma(a) + maj(a, b, c);\n h = g;\n g = f;\n f = e;\n e = d + t1 | 0;\n d = c;\n c = b;\n b = a;\n a = t1 + t2 | 0;\n }\n\n h0 = h0 + a | 0;\n h1 = h1 + b | 0;\n h2 = h2 + c | 0;\n h3 = h3 + d | 0;\n h4 = h4 + e | 0;\n h5 = h5 + f | 0;\n h6 = h6 + g | 0;\n h7 = h7 + h | 0;\n }\n\n return new Uint8Array([h0 >> 24 & 0xFF, h0 >> 16 & 0xFF, h0 >> 8 & 0xFF, h0 & 0xFF, h1 >> 24 & 0xFF, h1 >> 16 & 0xFF, h1 >> 8 & 0xFF, h1 & 0xFF, h2 >> 24 & 0xFF, h2 >> 16 & 0xFF, h2 >> 8 & 0xFF, h2 & 0xFF, h3 >> 24 & 0xFF, h3 >> 16 & 0xFF, h3 >> 8 & 0xFF, h3 & 0xFF, h4 >> 24 & 0xFF, h4 >> 16 & 0xFF, h4 >> 8 & 0xFF, h4 & 0xFF, h5 >> 24 & 0xFF, h5 >> 16 & 0xFF, h5 >> 8 & 0xFF, h5 & 0xFF, h6 >> 24 & 0xFF, h6 >> 16 & 0xFF, h6 >> 8 & 0xFF, h6 & 0xFF, h7 >> 24 & 0xFF, h7 >> 16 & 0xFF, h7 >> 8 & 0xFF, h7 & 0xFF]);\n }\n\n return hash;\n}();\n\nexports.calculateSHA256 = calculateSHA256;\n\nvar calculateSHA512 = function calculateSHA512Closure() {\n function ch(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.not();\n tmp.and(z);\n result.xor(tmp);\n }\n\n function maj(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.and(z);\n result.xor(tmp);\n tmp.assign(y);\n tmp.and(z);\n result.xor(tmp);\n }\n\n function sigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(28);\n tmp.assign(x);\n tmp.rotateRight(34);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(39);\n result.xor(tmp);\n }\n\n function sigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(14);\n tmp.assign(x);\n tmp.rotateRight(18);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(41);\n result.xor(tmp);\n }\n\n function littleSigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(1);\n tmp.assign(x);\n tmp.rotateRight(8);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(7);\n result.xor(tmp);\n }\n\n function littleSigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(19);\n tmp.assign(x);\n tmp.rotateRight(61);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(6);\n result.xor(tmp);\n }\n\n var k = [new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019), new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n\n function hash(data, offset, length, mode384) {\n mode384 = !!mode384;\n var h0, h1, h2, h3, h4, h5, h6, h7;\n\n if (!mode384) {\n h0 = new Word64(0x6a09e667, 0xf3bcc908);\n h1 = new Word64(0xbb67ae85, 0x84caa73b);\n h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n h4 = new Word64(0x510e527f, 0xade682d1);\n h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n h7 = new Word64(0x5be0cd19, 0x137e2179);\n } else {\n h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n h1 = new Word64(0x629a292a, 0x367cd507);\n h2 = new Word64(0x9159015a, 0x3070dd17);\n h3 = new Word64(0x152fecd8, 0xf70e5939);\n h4 = new Word64(0x67332667, 0xffc00b31);\n h5 = new Word64(0x8eb44a87, 0x68581511);\n h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n }\n\n var paddedLength = Math.ceil((length + 17) / 128) * 128;\n var padded = new Uint8Array(paddedLength);\n var i, j, n;\n\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n\n padded[i++] = 0x80;\n n = paddedLength - 16;\n\n while (i < n) {\n padded[i++] = 0;\n }\n\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = length >>> 29 & 0xff;\n padded[i++] = length >> 21 & 0xff;\n padded[i++] = length >> 13 & 0xff;\n padded[i++] = length >> 5 & 0xff;\n padded[i++] = length << 3 & 0xff;\n var w = new Array(80);\n\n for (i = 0; i < 80; i++) {\n w[i] = new Word64(0, 0);\n }\n\n var a = new Word64(0, 0),\n b = new Word64(0, 0),\n c = new Word64(0, 0);\n var d = new Word64(0, 0),\n e = new Word64(0, 0),\n f = new Word64(0, 0);\n var g = new Word64(0, 0),\n h = new Word64(0, 0);\n var t1 = new Word64(0, 0),\n t2 = new Word64(0, 0);\n var tmp1 = new Word64(0, 0),\n tmp2 = new Word64(0, 0),\n tmp3;\n\n for (i = 0; i < paddedLength;) {\n for (j = 0; j < 16; ++j) {\n w[j].high = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];\n w[j].low = padded[i + 4] << 24 | padded[i + 5] << 16 | padded[i + 6] << 8 | padded[i + 7];\n i += 8;\n }\n\n for (j = 16; j < 80; ++j) {\n tmp3 = w[j];\n littleSigmaPrime(tmp3, w[j - 2], tmp2);\n tmp3.add(w[j - 7]);\n littleSigma(tmp1, w[j - 15], tmp2);\n tmp3.add(tmp1);\n tmp3.add(w[j - 16]);\n }\n\n a.assign(h0);\n b.assign(h1);\n c.assign(h2);\n d.assign(h3);\n e.assign(h4);\n f.assign(h5);\n g.assign(h6);\n h.assign(h7);\n\n for (j = 0; j < 80; ++j) {\n t1.assign(h);\n sigmaPrime(tmp1, e, tmp2);\n t1.add(tmp1);\n ch(tmp1, e, f, g, tmp2);\n t1.add(tmp1);\n t1.add(k[j]);\n t1.add(w[j]);\n sigma(t2, a, tmp2);\n maj(tmp1, a, b, c, tmp2);\n t2.add(tmp1);\n tmp3 = h;\n h = g;\n g = f;\n f = e;\n d.add(t1);\n e = d;\n d = c;\n c = b;\n b = a;\n tmp3.assign(t1);\n tmp3.add(t2);\n a = tmp3;\n }\n\n h0.add(a);\n h1.add(b);\n h2.add(c);\n h3.add(d);\n h4.add(e);\n h5.add(f);\n h6.add(g);\n h7.add(h);\n }\n\n var result;\n\n if (!mode384) {\n result = new Uint8Array(64);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n h6.copyTo(result, 48);\n h7.copyTo(result, 56);\n } else {\n result = new Uint8Array(48);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n }\n\n return result;\n }\n\n return hash;\n}();\n\nexports.calculateSHA512 = calculateSHA512;\n\nvar calculateSHA384 = function calculateSHA384Closure() {\n function hash(data, offset, length) {\n return calculateSHA512(data, offset, length, true);\n }\n\n return hash;\n}();\n\nexports.calculateSHA384 = calculateSHA384;\n\nvar NullCipher = function NullCipherClosure() {\n function NullCipher() {}\n\n NullCipher.prototype = {\n decryptBlock: function NullCipher_decryptBlock(data) {\n return data;\n },\n encrypt: function NullCipher_encrypt(data) {\n return data;\n }\n };\n return NullCipher;\n}();\n\nclass AESBaseCipher {\n constructor() {\n if (this.constructor === AESBaseCipher) {\n (0, _util.unreachable)(\"Cannot initialize AESBaseCipher.\");\n }\n\n this._s = new Uint8Array([0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]);\n this._inv_s = new Uint8Array([0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]);\n this._mix = new Uint32Array([0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]);\n this._mixCol = new Uint8Array(256);\n\n for (let i = 0; i < 256; i++) {\n if (i < 128) {\n this._mixCol[i] = i << 1;\n } else {\n this._mixCol[i] = i << 1 ^ 0x1b;\n }\n }\n\n this.buffer = new Uint8Array(16);\n this.bufferPosition = 0;\n }\n\n _expandKey(cipherKey) {\n (0, _util.unreachable)(\"Cannot call `_expandKey` on the base class\");\n }\n\n _decrypt(input, key) {\n let t, u, v;\n const state = new Uint8Array(16);\n state.set(input);\n\n for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n\n for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n\n for (let j = 0; j < 16; ++j) {\n state[j] = this._inv_s[state[j]];\n }\n\n for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n\n for (let j = 0; j < 16; j += 4) {\n const s0 = this._mix[state[j]];\n const s1 = this._mix[state[j + 1]];\n const s2 = this._mix[state[j + 2]];\n const s3 = this._mix[state[j + 3]];\n t = s0 ^ s1 >>> 8 ^ s1 << 24 ^ s2 >>> 16 ^ s2 << 16 ^ s3 >>> 24 ^ s3 << 8;\n state[j] = t >>> 24 & 0xff;\n state[j + 1] = t >> 16 & 0xff;\n state[j + 2] = t >> 8 & 0xff;\n state[j + 3] = t & 0xff;\n }\n }\n\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n\n for (let j = 0; j < 16; ++j) {\n state[j] = this._inv_s[state[j]];\n state[j] ^= key[j];\n }\n\n return state;\n }\n\n _encrypt(input, key) {\n const s = this._s;\n let t, u, v;\n const state = new Uint8Array(16);\n state.set(input);\n\n for (let j = 0; j < 16; ++j) {\n state[j] ^= key[j];\n }\n\n for (let i = 1; i < this._cyclesOfRepetition; i++) {\n for (let j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n\n for (let j = 0; j < 16; j += 4) {\n const s0 = state[j + 0];\n const s1 = state[j + 1];\n const s2 = state[j + 2];\n const s3 = state[j + 3];\n t = s0 ^ s1 ^ s2 ^ s3;\n state[j + 0] ^= t ^ this._mixCol[s0 ^ s1];\n state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n }\n\n for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n }\n\n for (let j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n\n for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n\n return state;\n }\n\n _decryptBlock2(data, finalize) {\n const sourceLength = data.length;\n let buffer = this.buffer,\n bufferLength = this.bufferPosition;\n const result = [];\n let iv = this.iv;\n\n for (let i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n\n if (bufferLength < 16) {\n continue;\n }\n\n const plain = this._decrypt(buffer, this._key);\n\n for (let j = 0; j < 16; ++j) {\n plain[j] ^= iv[j];\n }\n\n iv = buffer;\n result.push(plain);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n\n let outputLength = 16 * result.length;\n\n if (finalize) {\n const lastBlock = result[result.length - 1];\n let psLen = lastBlock[15];\n\n if (psLen <= 16) {\n for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\n if (lastBlock[i] !== psLen) {\n psLen = 0;\n break;\n }\n }\n\n outputLength -= psLen;\n result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n }\n }\n\n const output = new Uint8Array(outputLength);\n\n for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n\n return output;\n }\n\n decryptBlock(data, finalize, iv = null) {\n const sourceLength = data.length;\n const buffer = this.buffer;\n let bufferLength = this.bufferPosition;\n\n if (iv) {\n this.iv = iv;\n } else {\n for (let i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) {\n buffer[bufferLength] = data[i];\n }\n\n if (bufferLength < 16) {\n this.bufferLength = bufferLength;\n return new Uint8Array(0);\n }\n\n this.iv = buffer;\n data = data.subarray(16);\n }\n\n this.buffer = new Uint8Array(16);\n this.bufferLength = 0;\n this.decryptBlock = this._decryptBlock2;\n return this.decryptBlock(data, finalize);\n }\n\n encrypt(data, iv) {\n const sourceLength = data.length;\n let buffer = this.buffer,\n bufferLength = this.bufferPosition;\n const result = [];\n\n if (!iv) {\n iv = new Uint8Array(16);\n }\n\n for (let i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n\n if (bufferLength < 16) {\n continue;\n }\n\n for (let j = 0; j < 16; ++j) {\n buffer[j] ^= iv[j];\n }\n\n const cipher = this._encrypt(buffer, this._key);\n\n iv = cipher;\n result.push(cipher);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n\n const outputLength = 16 * result.length;\n const output = new Uint8Array(outputLength);\n\n for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n\n return output;\n }\n\n}\n\nclass AES128Cipher extends AESBaseCipher {\n constructor(key) {\n super();\n this._cyclesOfRepetition = 10;\n this._keySize = 160;\n this._rcon = new Uint8Array([0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d]);\n this._key = this._expandKey(key);\n }\n\n _expandKey(cipherKey) {\n const b = 176;\n const s = this._s;\n const rcon = this._rcon;\n const result = new Uint8Array(b);\n result.set(cipherKey);\n\n for (let j = 16, i = 1; j < b; ++i) {\n let t1 = result[j - 3];\n let t2 = result[j - 2];\n let t3 = result[j - 1];\n let t4 = result[j - 4];\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n t1 = t1 ^ rcon[i];\n\n for (let n = 0; n < 4; ++n) {\n result[j] = t1 ^= result[j - 16];\n j++;\n result[j] = t2 ^= result[j - 16];\n j++;\n result[j] = t3 ^= result[j - 16];\n j++;\n result[j] = t4 ^= result[j - 16];\n j++;\n }\n }\n\n return result;\n }\n\n}\n\nexports.AES128Cipher = AES128Cipher;\n\nclass AES256Cipher extends AESBaseCipher {\n constructor(key) {\n super();\n this._cyclesOfRepetition = 14;\n this._keySize = 224;\n this._key = this._expandKey(key);\n }\n\n _expandKey(cipherKey) {\n const b = 240;\n const s = this._s;\n const result = new Uint8Array(b);\n result.set(cipherKey);\n let r = 1;\n let t1, t2, t3, t4;\n\n for (let j = 32, i = 1; j < b; ++i) {\n if (j % 32 === 16) {\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n } else if (j % 32 === 0) {\n t1 = result[j - 3];\n t2 = result[j - 2];\n t3 = result[j - 1];\n t4 = result[j - 4];\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n t1 = t1 ^ r;\n\n if ((r <<= 1) >= 256) {\n r = (r ^ 0x1b) & 0xff;\n }\n }\n\n for (let n = 0; n < 4; ++n) {\n result[j] = t1 ^= result[j - 32];\n j++;\n result[j] = t2 ^= result[j - 32];\n j++;\n result[j] = t3 ^= result[j - 32];\n j++;\n result[j] = t4 ^= result[j - 32];\n j++;\n }\n }\n\n return result;\n }\n\n}\n\nexports.AES256Cipher = AES256Cipher;\n\nvar PDF17 = function PDF17Closure() {\n function compareByteArrays(array1, array2) {\n if (array1.length !== array2.length) {\n return false;\n }\n\n for (var i = 0; i < array1.length; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n function PDF17() {}\n\n PDF17.prototype = {\n checkOwnerPassword: function PDF17_checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n var hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n var result = calculateSHA256(hashData, 0, hashData.length);\n return compareByteArrays(result, ownerPassword);\n },\n checkUserPassword: function PDF17_checkUserPassword(password, userValidationSalt, userPassword) {\n var hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n var result = calculateSHA256(hashData, 0, hashData.length);\n return compareByteArrays(result, userPassword);\n },\n getOwnerKey: function PDF17_getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n var hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n var key = calculateSHA256(hashData, 0, hashData.length);\n var cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n },\n getUserKey: function PDF17_getUserKey(password, userKeySalt, userEncryption) {\n var hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n var key = calculateSHA256(hashData, 0, hashData.length);\n var cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n };\n return PDF17;\n}();\n\nexports.PDF17 = PDF17;\n\nvar PDF20 = function PDF20Closure() {\n function concatArrays(array1, array2) {\n var t = new Uint8Array(array1.length + array2.length);\n t.set(array1, 0);\n t.set(array2, array1.length);\n return t;\n }\n\n function calculatePDF20Hash(password, input, userBytes) {\n var k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n var e = [0];\n var i = 0;\n\n while (i < 64 || e[e.length - 1] > i - 32) {\n var arrayLength = password.length + k.length + userBytes.length;\n var k1 = new Uint8Array(arrayLength * 64);\n var array = concatArrays(password, k);\n array = concatArrays(array, userBytes);\n\n for (var j = 0, pos = 0; j < 64; j++, pos += arrayLength) {\n k1.set(array, pos);\n }\n\n var cipher = new AES128Cipher(k.subarray(0, 16));\n e = cipher.encrypt(k1, k.subarray(16, 32));\n var remainder = 0;\n\n for (var z = 0; z < 16; z++) {\n remainder *= 256 % 3;\n remainder %= 3;\n remainder += (e[z] >>> 0) % 3;\n remainder %= 3;\n }\n\n if (remainder === 0) {\n k = calculateSHA256(e, 0, e.length);\n } else if (remainder === 1) {\n k = calculateSHA384(e, 0, e.length);\n } else if (remainder === 2) {\n k = calculateSHA512(e, 0, e.length);\n }\n\n i++;\n }\n\n return k.subarray(0, 32);\n }\n\n function PDF20() {}\n\n function compareByteArrays(array1, array2) {\n if (array1.length !== array2.length) {\n return false;\n }\n\n for (var i = 0; i < array1.length; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n PDF20.prototype = {\n hash: function PDF20_hash(password, concatBytes, userBytes) {\n return calculatePDF20Hash(password, concatBytes, userBytes);\n },\n checkOwnerPassword: function PDF20_checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n var hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n var result = calculatePDF20Hash(password, hashData, userBytes);\n return compareByteArrays(result, ownerPassword);\n },\n checkUserPassword: function PDF20_checkUserPassword(password, userValidationSalt, userPassword) {\n var hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n var result = calculatePDF20Hash(password, hashData, []);\n return compareByteArrays(result, userPassword);\n },\n getOwnerKey: function PDF20_getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n var hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n var key = calculatePDF20Hash(password, hashData, userBytes);\n var cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n },\n getUserKey: function PDF20_getUserKey(password, userKeySalt, userEncryption) {\n var hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n var key = calculatePDF20Hash(password, hashData, []);\n var cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n };\n return PDF20;\n}();\n\nexports.PDF20 = PDF20;\n\nvar CipherTransform = function CipherTransformClosure() {\n function CipherTransform(stringCipherConstructor, streamCipherConstructor) {\n this.StringCipherConstructor = stringCipherConstructor;\n this.StreamCipherConstructor = streamCipherConstructor;\n }\n\n CipherTransform.prototype = {\n createStream: function CipherTransform_createStream(stream, length) {\n var cipher = new this.StreamCipherConstructor();\n return new _stream.DecryptStream(stream, length, function cipherTransformDecryptStream(data, finalize) {\n return cipher.decryptBlock(data, finalize);\n });\n },\n decryptString: function CipherTransform_decryptString(s) {\n var cipher = new this.StringCipherConstructor();\n var data = (0, _util.stringToBytes)(s);\n data = cipher.decryptBlock(data, true);\n return (0, _util.bytesToString)(data);\n },\n encryptString: function CipherTransform_encryptString(s) {\n const cipher = new this.StringCipherConstructor();\n\n if (cipher instanceof AESBaseCipher) {\n const strLen = s.length;\n const pad = 16 - strLen % 16;\n\n if (pad !== 16) {\n s = s.padEnd(16 * Math.ceil(strLen / 16), String.fromCharCode(pad));\n }\n\n const iv = new Uint8Array(16);\n\n if (typeof crypto !== \"undefined\") {\n crypto.getRandomValues(iv);\n } else {\n for (let i = 0; i < 16; i++) {\n iv[i] = Math.floor(256 * Math.random());\n }\n }\n\n let data = (0, _util.stringToBytes)(s);\n data = cipher.encrypt(data, iv);\n const buf = new Uint8Array(16 + data.length);\n buf.set(iv);\n buf.set(data, 16);\n return (0, _util.bytesToString)(buf);\n }\n\n let data = (0, _util.stringToBytes)(s);\n data = cipher.encrypt(data);\n return (0, _util.bytesToString)(data);\n }\n };\n return CipherTransform;\n}();\n\nvar CipherTransformFactory = function CipherTransformFactoryClosure() {\n var defaultPasswordBytes = new Uint8Array([0x28, 0xBF, 0x4E, 0x5E, 0x4E, 0x75, 0x8A, 0x41, 0x64, 0x00, 0x4E, 0x56, 0xFF, 0xFA, 0x01, 0x08, 0x2E, 0x2E, 0x00, 0xB6, 0xD0, 0x68, 0x3E, 0x80, 0x2F, 0x0C, 0xA9, 0xFE, 0x64, 0x53, 0x69, 0x7A]);\n\n function createEncryptionKey20(revision, password, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms) {\n if (password) {\n var passwordLength = Math.min(127, password.length);\n password = password.subarray(0, passwordLength);\n } else {\n password = [];\n }\n\n var pdfAlgorithm;\n\n if (revision === 6) {\n pdfAlgorithm = new PDF20();\n } else {\n pdfAlgorithm = new PDF17();\n }\n\n if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)) {\n return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, ownerValidationSalt, uBytes, ownerPassword)) {\n return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption);\n }\n\n return null;\n }\n\n function prepareKeyData(fileId, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata) {\n var hashDataSize = 40 + ownerPassword.length + fileId.length;\n var hashData = new Uint8Array(hashDataSize),\n i = 0,\n j,\n n;\n\n if (password) {\n n = Math.min(32, password.length);\n\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n }\n\n j = 0;\n\n while (i < 32) {\n hashData[i++] = defaultPasswordBytes[j++];\n }\n\n for (j = 0, n = ownerPassword.length; j < n; ++j) {\n hashData[i++] = ownerPassword[j];\n }\n\n hashData[i++] = flags & 0xff;\n hashData[i++] = flags >> 8 & 0xff;\n hashData[i++] = flags >> 16 & 0xff;\n hashData[i++] = flags >>> 24 & 0xff;\n\n for (j = 0, n = fileId.length; j < n; ++j) {\n hashData[i++] = fileId[j];\n }\n\n if (revision >= 4 && !encryptMetadata) {\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n }\n\n var hash = calculateMD5(hashData, 0, i);\n var keyLengthInBytes = keyLength >> 3;\n\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, keyLengthInBytes);\n }\n }\n\n var encryptionKey = hash.subarray(0, keyLengthInBytes);\n var cipher, checkData;\n\n if (revision >= 3) {\n for (i = 0; i < 32; ++i) {\n hashData[i] = defaultPasswordBytes[i];\n }\n\n for (j = 0, n = fileId.length; j < n; ++j) {\n hashData[i++] = fileId[j];\n }\n\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n n = encryptionKey.length;\n var derivedKey = new Uint8Array(n),\n k;\n\n for (j = 1; j <= 19; ++j) {\n for (k = 0; k < n; ++k) {\n derivedKey[k] = encryptionKey[k] ^ j;\n }\n\n cipher = new ARCFourCipher(derivedKey);\n checkData = cipher.encryptBlock(checkData);\n }\n\n for (j = 0, n = checkData.length; j < n; ++j) {\n if (userPassword[j] !== checkData[j]) {\n return null;\n }\n }\n } else {\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(defaultPasswordBytes);\n\n for (j = 0, n = checkData.length; j < n; ++j) {\n if (userPassword[j] !== checkData[j]) {\n return null;\n }\n }\n }\n\n return encryptionKey;\n }\n\n function decodeUserPassword(password, ownerPassword, revision, keyLength) {\n var hashData = new Uint8Array(32),\n i = 0,\n j,\n n;\n n = Math.min(32, password.length);\n\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n\n j = 0;\n\n while (i < 32) {\n hashData[i++] = defaultPasswordBytes[j++];\n }\n\n var hash = calculateMD5(hashData, 0, i);\n var keyLengthInBytes = keyLength >> 3;\n\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, hash.length);\n }\n }\n\n var cipher, userPassword;\n\n if (revision >= 3) {\n userPassword = ownerPassword;\n var derivedKey = new Uint8Array(keyLengthInBytes),\n k;\n\n for (j = 19; j >= 0; j--) {\n for (k = 0; k < keyLengthInBytes; ++k) {\n derivedKey[k] = hash[k] ^ j;\n }\n\n cipher = new ARCFourCipher(derivedKey);\n userPassword = cipher.encryptBlock(userPassword);\n }\n } else {\n cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n userPassword = cipher.encryptBlock(ownerPassword);\n }\n\n return userPassword;\n }\n\n var identityName = _primitives.Name.get(\"Identity\");\n\n function CipherTransformFactory(dict, fileId, password) {\n var filter = dict.get(\"Filter\");\n\n if (!(0, _primitives.isName)(filter, \"Standard\")) {\n throw new _util.FormatError(\"unknown encryption method\");\n }\n\n this.dict = dict;\n var algorithm = dict.get(\"V\");\n\n if (!Number.isInteger(algorithm) || algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5) {\n throw new _util.FormatError(\"unsupported encryption algorithm\");\n }\n\n this.algorithm = algorithm;\n var keyLength = dict.get(\"Length\");\n\n if (!keyLength) {\n if (algorithm <= 3) {\n keyLength = 40;\n } else {\n var cfDict = dict.get(\"CF\");\n var streamCryptoName = dict.get(\"StmF\");\n\n if ((0, _primitives.isDict)(cfDict) && (0, _primitives.isName)(streamCryptoName)) {\n cfDict.suppressEncryption = true;\n var handlerDict = cfDict.get(streamCryptoName.name);\n keyLength = handlerDict && handlerDict.get(\"Length\") || 128;\n\n if (keyLength < 40) {\n keyLength <<= 3;\n }\n }\n }\n }\n\n if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) {\n throw new _util.FormatError(\"invalid key length\");\n }\n\n var ownerPassword = (0, _util.stringToBytes)(dict.get(\"O\")).subarray(0, 32);\n var userPassword = (0, _util.stringToBytes)(dict.get(\"U\")).subarray(0, 32);\n var flags = dict.get(\"P\");\n var revision = dict.get(\"R\");\n var encryptMetadata = (algorithm === 4 || algorithm === 5) && dict.get(\"EncryptMetadata\") !== false;\n this.encryptMetadata = encryptMetadata;\n var fileIdBytes = (0, _util.stringToBytes)(fileId);\n var passwordBytes;\n\n if (password) {\n if (revision === 6) {\n try {\n password = (0, _util.utf8StringToString)(password);\n } catch (ex) {\n (0, _util.warn)(\"CipherTransformFactory: \" + \"Unable to convert UTF8 encoded password.\");\n }\n }\n\n passwordBytes = (0, _util.stringToBytes)(password);\n }\n\n var encryptionKey;\n\n if (algorithm !== 5) {\n encryptionKey = prepareKeyData(fileIdBytes, passwordBytes, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);\n } else {\n var ownerValidationSalt = (0, _util.stringToBytes)(dict.get(\"O\")).subarray(32, 40);\n var ownerKeySalt = (0, _util.stringToBytes)(dict.get(\"O\")).subarray(40, 48);\n var uBytes = (0, _util.stringToBytes)(dict.get(\"U\")).subarray(0, 48);\n var userValidationSalt = (0, _util.stringToBytes)(dict.get(\"U\")).subarray(32, 40);\n var userKeySalt = (0, _util.stringToBytes)(dict.get(\"U\")).subarray(40, 48);\n var ownerEncryption = (0, _util.stringToBytes)(dict.get(\"OE\"));\n var userEncryption = (0, _util.stringToBytes)(dict.get(\"UE\"));\n var perms = (0, _util.stringToBytes)(dict.get(\"Perms\"));\n encryptionKey = createEncryptionKey20(revision, passwordBytes, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms);\n }\n\n if (!encryptionKey && !password) {\n throw new _util.PasswordException(\"No password given\", _util.PasswordResponses.NEED_PASSWORD);\n } else if (!encryptionKey && password) {\n var decodedPassword = decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength);\n encryptionKey = prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);\n }\n\n if (!encryptionKey) {\n throw new _util.PasswordException(\"Incorrect Password\", _util.PasswordResponses.INCORRECT_PASSWORD);\n }\n\n this.encryptionKey = encryptionKey;\n\n if (algorithm >= 4) {\n var cf = dict.get(\"CF\");\n\n if ((0, _primitives.isDict)(cf)) {\n cf.suppressEncryption = true;\n }\n\n this.cf = cf;\n this.stmf = dict.get(\"StmF\") || identityName;\n this.strf = dict.get(\"StrF\") || identityName;\n this.eff = dict.get(\"EFF\") || this.stmf;\n }\n }\n\n function buildObjectKey(num, gen, encryptionKey, isAes) {\n var key = new Uint8Array(encryptionKey.length + 9),\n i,\n n;\n\n for (i = 0, n = encryptionKey.length; i < n; ++i) {\n key[i] = encryptionKey[i];\n }\n\n key[i++] = num & 0xff;\n key[i++] = num >> 8 & 0xff;\n key[i++] = num >> 16 & 0xff;\n key[i++] = gen & 0xff;\n key[i++] = gen >> 8 & 0xff;\n\n if (isAes) {\n key[i++] = 0x73;\n key[i++] = 0x41;\n key[i++] = 0x6c;\n key[i++] = 0x54;\n }\n\n var hash = calculateMD5(key, 0, i);\n return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n }\n\n function buildCipherConstructor(cf, name, num, gen, key) {\n if (!(0, _primitives.isName)(name)) {\n throw new _util.FormatError(\"Invalid crypt filter name.\");\n }\n\n var cryptFilter = cf.get(name.name);\n var cfm;\n\n if (cryptFilter !== null && cryptFilter !== undefined) {\n cfm = cryptFilter.get(\"CFM\");\n }\n\n if (!cfm || cfm.name === \"None\") {\n return function cipherTransformFactoryBuildCipherConstructorNone() {\n return new NullCipher();\n };\n }\n\n if (cfm.name === \"V2\") {\n return function cipherTransformFactoryBuildCipherConstructorV2() {\n return new ARCFourCipher(buildObjectKey(num, gen, key, false));\n };\n }\n\n if (cfm.name === \"AESV2\") {\n return function cipherTransformFactoryBuildCipherConstructorAESV2() {\n return new AES128Cipher(buildObjectKey(num, gen, key, true));\n };\n }\n\n if (cfm.name === \"AESV3\") {\n return function cipherTransformFactoryBuildCipherConstructorAESV3() {\n return new AES256Cipher(key);\n };\n }\n\n throw new _util.FormatError(\"Unknown crypto method\");\n }\n\n CipherTransformFactory.prototype = {\n createCipherTransform: function CipherTransformFactory_createCipherTransform(num, gen) {\n if (this.algorithm === 4 || this.algorithm === 5) {\n return new CipherTransform(buildCipherConstructor(this.cf, this.stmf, num, gen, this.encryptionKey), buildCipherConstructor(this.cf, this.strf, num, gen, this.encryptionKey));\n }\n\n var key = buildObjectKey(num, gen, this.encryptionKey, false);\n\n var cipherConstructor = function buildCipherCipherConstructor() {\n return new ARCFourCipher(key);\n };\n\n return new CipherTransform(cipherConstructor, cipherConstructor);\n }\n };\n return CipherTransformFactory;\n}();\n\nexports.CipherTransformFactory = CipherTransformFactory;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ColorSpace = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n const COMPONENTS = 3;\n alpha01 = alpha01 !== 1 ? 0 : alpha01;\n const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let newIndex = 0,\n oldIndex;\n const xScaled = new Uint16Array(w2);\n const w1Scanline = w1 * COMPONENTS;\n\n for (let i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n }\n\n for (let i = 0; i < h2; i++) {\n const py = Math.floor(i * yRatio) * w1Scanline;\n\n for (let j = 0; j < w2; j++) {\n oldIndex = py + xScaled[j];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n newIndex += alpha01;\n }\n }\n}\n\nclass ColorSpace {\n constructor(name, numComps) {\n if (this.constructor === ColorSpace) {\n (0, _util.unreachable)(\"Cannot initialize ColorSpace.\");\n }\n\n this.name = name;\n this.numComps = numComps;\n }\n\n getRgb(src, srcOffset) {\n const rgb = new Uint8ClampedArray(3);\n this.getRgbItem(src, srcOffset, rgb, 0);\n return rgb;\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n (0, _util.unreachable)(\"Should not call ColorSpace.getRgbItem\");\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n (0, _util.unreachable)(\"Should not call ColorSpace.getRgbBuffer\");\n }\n\n getOutputLength(inputLength, alpha01) {\n (0, _util.unreachable)(\"Should not call ColorSpace.getOutputLength\");\n }\n\n isPassthrough(bits) {\n return false;\n }\n\n isDefaultDecode(decodeMap, bpc) {\n return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n }\n\n fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) {\n const count = originalWidth * originalHeight;\n let rgbBuf = null;\n const numComponentColors = 1 << bpc;\n const needsResizing = originalHeight !== height || originalWidth !== width;\n\n if (this.isPassthrough(bpc)) {\n rgbBuf = comps;\n } else if (this.numComps === 1 && count > numComponentColors && this.name !== \"DeviceGray\" && this.name !== \"DeviceRGB\") {\n const allColors = bpc <= 8 ? new Uint8Array(numComponentColors) : new Uint16Array(numComponentColors);\n\n for (let i = 0; i < numComponentColors; i++) {\n allColors[i] = i;\n }\n\n const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, 0);\n\n if (!needsResizing) {\n let destPos = 0;\n\n for (let i = 0; i < count; ++i) {\n const key = comps[i] * 3;\n dest[destPos++] = colorMap[key];\n dest[destPos++] = colorMap[key + 1];\n dest[destPos++] = colorMap[key + 2];\n destPos += alpha01;\n }\n } else {\n rgbBuf = new Uint8Array(count * 3);\n let rgbPos = 0;\n\n for (let i = 0; i < count; ++i) {\n const key = comps[i] * 3;\n rgbBuf[rgbPos++] = colorMap[key];\n rgbBuf[rgbPos++] = colorMap[key + 1];\n rgbBuf[rgbPos++] = colorMap[key + 2];\n }\n }\n } else {\n if (!needsResizing) {\n this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01);\n } else {\n rgbBuf = new Uint8ClampedArray(count * 3);\n this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, 0);\n }\n }\n\n if (rgbBuf) {\n if (needsResizing) {\n resizeRgbImage(rgbBuf, dest, originalWidth, originalHeight, width, height, alpha01);\n } else {\n let destPos = 0,\n rgbPos = 0;\n\n for (let i = 0, ii = width * actualHeight; i < ii; i++) {\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n destPos += alpha01;\n }\n }\n }\n }\n\n get usesZeroToOneRange() {\n return (0, _util.shadow)(this, \"usesZeroToOneRange\", true);\n }\n\n static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) {\n if (!localColorSpaceCache) {\n throw new Error('ColorSpace._cache - expected \"localColorSpaceCache\" argument.');\n }\n\n if (!parsedColorSpace) {\n throw new Error('ColorSpace._cache - expected \"parsedColorSpace\" argument.');\n }\n\n let csName, csRef;\n\n if (cacheKey instanceof _primitives.Ref) {\n csRef = cacheKey;\n cacheKey = xref.fetch(cacheKey);\n }\n\n if (cacheKey instanceof _primitives.Name) {\n csName = cacheKey.name;\n }\n\n if (csName || csRef) {\n localColorSpaceCache.set(csName, csRef, parsedColorSpace);\n }\n }\n\n static getCached(cacheKey, xref, localColorSpaceCache) {\n if (!localColorSpaceCache) {\n throw new Error('ColorSpace.getCached - expected \"localColorSpaceCache\" argument.');\n }\n\n if (cacheKey instanceof _primitives.Ref) {\n const localColorSpace = localColorSpaceCache.getByRef(cacheKey);\n\n if (localColorSpace) {\n return localColorSpace;\n }\n\n try {\n cacheKey = xref.fetch(cacheKey);\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n }\n }\n\n if (cacheKey instanceof _primitives.Name) {\n const localColorSpace = localColorSpaceCache.getByName(cacheKey.name);\n\n if (localColorSpace) {\n return localColorSpace;\n }\n }\n\n return null;\n }\n\n static async parseAsync({\n cs,\n xref,\n resources = null,\n pdfFunctionFactory,\n localColorSpaceCache\n }) {\n const parsedColorSpace = this._parse(cs, xref, resources, pdfFunctionFactory);\n\n this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n return parsedColorSpace;\n }\n\n static parse({\n cs,\n xref,\n resources = null,\n pdfFunctionFactory,\n localColorSpaceCache\n }) {\n const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache);\n\n if (cachedColorSpace) {\n return cachedColorSpace;\n }\n\n const parsedColorSpace = this._parse(cs, xref, resources, pdfFunctionFactory);\n\n this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n return parsedColorSpace;\n }\n\n static _parse(cs, xref, resources = null, pdfFunctionFactory) {\n cs = xref.fetchIfRef(cs);\n\n if ((0, _primitives.isName)(cs)) {\n switch (cs.name) {\n case \"DeviceGray\":\n case \"G\":\n return this.singletons.gray;\n\n case \"DeviceRGB\":\n case \"RGB\":\n return this.singletons.rgb;\n\n case \"DeviceCMYK\":\n case \"CMYK\":\n return this.singletons.cmyk;\n\n case \"Pattern\":\n return new PatternCS(null);\n\n default:\n if ((0, _primitives.isDict)(resources)) {\n const colorSpaces = resources.get(\"ColorSpace\");\n\n if ((0, _primitives.isDict)(colorSpaces)) {\n const resourcesCS = colorSpaces.get(cs.name);\n\n if (resourcesCS) {\n if ((0, _primitives.isName)(resourcesCS)) {\n return this._parse(resourcesCS, xref, resources, pdfFunctionFactory);\n }\n\n cs = resourcesCS;\n break;\n }\n }\n }\n\n throw new _util.FormatError(`Unrecognized ColorSpace: ${cs.name}`);\n }\n }\n\n if (Array.isArray(cs)) {\n const mode = xref.fetchIfRef(cs[0]).name;\n let params, numComps, baseCS, whitePoint, blackPoint, gamma;\n\n switch (mode) {\n case \"DeviceGray\":\n case \"G\":\n return this.singletons.gray;\n\n case \"DeviceRGB\":\n case \"RGB\":\n return this.singletons.rgb;\n\n case \"DeviceCMYK\":\n case \"CMYK\":\n return this.singletons.cmyk;\n\n case \"CalGray\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n gamma = params.get(\"Gamma\");\n return new CalGrayCS(whitePoint, blackPoint, gamma);\n\n case \"CalRGB\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n gamma = params.getArray(\"Gamma\");\n const matrix = params.getArray(\"Matrix\");\n return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n\n case \"ICCBased\":\n const stream = xref.fetchIfRef(cs[1]);\n const dict = stream.dict;\n numComps = dict.get(\"N\");\n const alt = dict.get(\"Alternate\");\n\n if (alt) {\n const altCS = this._parse(alt, xref, resources, pdfFunctionFactory);\n\n if (altCS.numComps === numComps) {\n return altCS;\n }\n\n (0, _util.warn)(\"ICCBased color space: Ignoring incorrect /Alternate entry.\");\n }\n\n if (numComps === 1) {\n return this.singletons.gray;\n } else if (numComps === 3) {\n return this.singletons.rgb;\n } else if (numComps === 4) {\n return this.singletons.cmyk;\n }\n\n break;\n\n case \"Pattern\":\n baseCS = cs[1] || null;\n\n if (baseCS) {\n baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory);\n }\n\n return new PatternCS(baseCS);\n\n case \"Indexed\":\n case \"I\":\n baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory);\n const hiVal = xref.fetchIfRef(cs[2]) + 1;\n const lookup = xref.fetchIfRef(cs[3]);\n return new IndexedCS(baseCS, hiVal, lookup);\n\n case \"Separation\":\n case \"DeviceN\":\n const name = xref.fetchIfRef(cs[1]);\n numComps = Array.isArray(name) ? name.length : 1;\n baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory);\n const tintFn = pdfFunctionFactory.create(cs[3]);\n return new AlternateCS(numComps, baseCS, tintFn);\n\n case \"Lab\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n const range = params.getArray(\"Range\");\n return new LabCS(whitePoint, blackPoint, range);\n\n default:\n throw new _util.FormatError(`Unimplemented ColorSpace object: ${mode}`);\n }\n }\n\n throw new _util.FormatError(`Unrecognized ColorSpace object: ${cs}`);\n }\n\n static isDefaultDecode(decode, numComps) {\n if (!Array.isArray(decode)) {\n return true;\n }\n\n if (numComps * 2 !== decode.length) {\n (0, _util.warn)(\"The decode map is not the correct length\");\n return true;\n }\n\n for (let i = 0, ii = decode.length; i < ii; i += 2) {\n if (decode[i] !== 0 || decode[i + 1] !== 1) {\n return false;\n }\n }\n\n return true;\n }\n\n static get singletons() {\n return (0, _util.shadow)(this, \"singletons\", {\n get gray() {\n return (0, _util.shadow)(this, \"gray\", new DeviceGrayCS());\n },\n\n get rgb() {\n return (0, _util.shadow)(this, \"rgb\", new DeviceRgbCS());\n },\n\n get cmyk() {\n return (0, _util.shadow)(this, \"cmyk\", new DeviceCmykCS());\n }\n\n });\n }\n\n}\n\nexports.ColorSpace = ColorSpace;\n\nclass AlternateCS extends ColorSpace {\n constructor(numComps, base, tintFn) {\n super(\"Alternate\", numComps);\n this.base = base;\n this.tintFn = tintFn;\n this.tmpBuf = new Float32Array(base.numComps);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n const tmpBuf = this.tmpBuf;\n this.tintFn(src, srcOffset, tmpBuf, 0);\n this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const tintFn = this.tintFn;\n const base = this.base;\n const scale = 1 / ((1 << bits) - 1);\n const baseNumComps = base.numComps;\n const usesZeroToOneRange = base.usesZeroToOneRange;\n const isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n let pos = isPassthrough ? destOffset : 0;\n const baseBuf = isPassthrough ? dest : new Uint8ClampedArray(baseNumComps * count);\n const numComps = this.numComps;\n const scaled = new Float32Array(numComps);\n const tinted = new Float32Array(baseNumComps);\n let i, j;\n\n for (i = 0; i < count; i++) {\n for (j = 0; j < numComps; j++) {\n scaled[j] = src[srcOffset++] * scale;\n }\n\n tintFn(scaled, 0, tinted, 0);\n\n if (usesZeroToOneRange) {\n for (j = 0; j < baseNumComps; j++) {\n baseBuf[pos++] = tinted[j] * 255;\n }\n } else {\n base.getRgbItem(tinted, 0, baseBuf, pos);\n pos += baseNumComps;\n }\n }\n\n if (!isPassthrough) {\n base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return this.base.getOutputLength(inputLength * this.base.numComps / this.numComps, alpha01);\n }\n\n}\n\nclass PatternCS extends ColorSpace {\n constructor(baseCS) {\n super(\"Pattern\", null);\n this.base = baseCS;\n }\n\n isDefaultDecode(decodeMap, bpc) {\n (0, _util.unreachable)(\"Should not call PatternCS.isDefaultDecode\");\n }\n\n}\n\nclass IndexedCS extends ColorSpace {\n constructor(base, highVal, lookup) {\n super(\"Indexed\", 1);\n this.base = base;\n this.highVal = highVal;\n const length = base.numComps * highVal;\n this.lookup = new Uint8Array(length);\n\n if ((0, _primitives.isStream)(lookup)) {\n const bytes = lookup.getBytes(length);\n this.lookup.set(bytes);\n } else if (typeof lookup === \"string\") {\n for (let i = 0; i < length; ++i) {\n this.lookup[i] = lookup.charCodeAt(i) & 0xff;\n }\n } else {\n throw new _util.FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n const numComps = this.base.numComps;\n const start = src[srcOffset] * numComps;\n this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const base = this.base;\n const numComps = base.numComps;\n const outputDelta = base.getOutputLength(numComps, alpha01);\n const lookup = this.lookup;\n\n for (let i = 0; i < count; ++i) {\n const lookupPos = src[srcOffset++] * numComps;\n base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n destOffset += outputDelta;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n }\n\n isDefaultDecode(decodeMap, bpc) {\n if (!Array.isArray(decodeMap)) {\n return true;\n }\n\n if (decodeMap.length !== 2) {\n (0, _util.warn)(\"Decode map length is not correct\");\n return true;\n }\n\n if (!Number.isInteger(bpc) || bpc < 1) {\n (0, _util.warn)(\"Bits per component is not correct\");\n return true;\n }\n\n return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1;\n }\n\n}\n\nclass DeviceGrayCS extends ColorSpace {\n constructor() {\n super(\"DeviceGray\", 1);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n const c = src[srcOffset] * 255;\n dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const scale = 255 / ((1 << bits) - 1);\n let j = srcOffset,\n q = destOffset;\n\n for (let i = 0; i < count; ++i) {\n const c = scale * src[j++];\n dest[q++] = c;\n dest[q++] = c;\n dest[q++] = c;\n q += alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01);\n }\n\n}\n\nclass DeviceRgbCS extends ColorSpace {\n constructor() {\n super(\"DeviceRGB\", 3);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n dest[destOffset] = src[srcOffset] * 255;\n dest[destOffset + 1] = src[srcOffset + 1] * 255;\n dest[destOffset + 2] = src[srcOffset + 2] * 255;\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (bits === 8 && alpha01 === 0) {\n dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n return;\n }\n\n const scale = 255 / ((1 << bits) - 1);\n let j = srcOffset,\n q = destOffset;\n\n for (let i = 0; i < count; ++i) {\n dest[q++] = scale * src[j++];\n dest[q++] = scale * src[j++];\n dest[q++] = scale * src[j++];\n q += alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01) / 3 | 0;\n }\n\n isPassthrough(bits) {\n return bits === 8;\n }\n\n}\n\nconst DeviceCmykCS = function DeviceCmykCSClosure() {\n function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {\n const c = src[srcOffset] * srcScale;\n const m = src[srcOffset + 1] * srcScale;\n const y = src[srcOffset + 2] * srcScale;\n const k = src[srcOffset + 3] * srcScale;\n dest[destOffset] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + -17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747);\n dest[destOffset + 1] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578);\n dest[destOffset + 2] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + -193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367);\n }\n\n class DeviceCmykCS extends ColorSpace {\n constructor() {\n super(\"DeviceCMYK\", 4);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n convertToRgb(src, srcOffset, 1, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const scale = 1 / ((1 << bits) - 1);\n\n for (let i = 0; i < count; i++) {\n convertToRgb(src, srcOffset, scale, dest, destOffset);\n srcOffset += 4;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return inputLength / 4 * (3 + alpha01) | 0;\n }\n\n }\n\n return DeviceCmykCS;\n}();\n\nconst CalGrayCS = function CalGrayCSClosure() {\n function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n const A = src[srcOffset] * scale;\n const AG = A ** cs.G;\n const L = cs.YW * AG;\n const val = Math.max(295.8 * L ** 0.333333333333333333 - 40.8, 0);\n dest[destOffset] = val;\n dest[destOffset + 1] = val;\n dest[destOffset + 2] = val;\n }\n\n class CalGrayCS extends ColorSpace {\n constructor(whitePoint, blackPoint, gamma) {\n super(\"CalGray\", 1);\n\n if (!whitePoint) {\n throw new _util.FormatError(\"WhitePoint missing - required for color space CalGray\");\n }\n\n blackPoint = blackPoint || [0, 0, 0];\n gamma = gamma || 1;\n this.XW = whitePoint[0];\n this.YW = whitePoint[1];\n this.ZW = whitePoint[2];\n this.XB = blackPoint[0];\n this.YB = blackPoint[1];\n this.ZB = blackPoint[2];\n this.G = gamma;\n\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new _util.FormatError(`Invalid WhitePoint components for ${this.name}` + \", no fallback available\");\n }\n\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n (0, _util.info)(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n this.XB = this.YB = this.ZB = 0;\n }\n\n if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n (0, _util.warn)(`${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` + `ZB: ${this.ZB}, only default values are supported.`);\n }\n\n if (this.G < 1) {\n (0, _util.info)(`Invalid Gamma: ${this.G} for ${this.name}, ` + \"falling back to default.\");\n this.G = 1;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const scale = 1 / ((1 << bits) - 1);\n\n for (let i = 0; i < count; ++i) {\n convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n srcOffset += 1;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01);\n }\n\n }\n\n return CalGrayCS;\n}();\n\nconst CalRGBCS = function CalRGBCSClosure() {\n const BRADFORD_SCALE_MATRIX = new Float32Array([0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, 1.0296]);\n const BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, -0.0085287, 0.0400428, 0.9684867]);\n const SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([3.2404542, -1.5371385, -0.4985314, -0.9692660, 1.8760108, 0.0415560, 0.0556434, -0.2040259, 1.0572252]);\n const FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n const tempNormalizeMatrix = new Float32Array(3);\n const tempConvertMatrix1 = new Float32Array(3);\n const tempConvertMatrix2 = new Float32Array(3);\n const DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;\n\n function matrixProduct(a, b, result) {\n result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n }\n\n function convertToFlat(sourceWhitePoint, LMS, result) {\n result[0] = LMS[0] * 1 / sourceWhitePoint[0];\n result[1] = LMS[1] * 1 / sourceWhitePoint[1];\n result[2] = LMS[2] * 1 / sourceWhitePoint[2];\n }\n\n function convertToD65(sourceWhitePoint, LMS, result) {\n const D65X = 0.95047;\n const D65Y = 1;\n const D65Z = 1.08883;\n result[0] = LMS[0] * D65X / sourceWhitePoint[0];\n result[1] = LMS[1] * D65Y / sourceWhitePoint[1];\n result[2] = LMS[2] * D65Z / sourceWhitePoint[2];\n }\n\n function sRGBTransferFunction(color) {\n if (color <= 0.0031308) {\n return adjustToRange(0, 1, 12.92 * color);\n }\n\n if (color >= 0.99554525) {\n return 1;\n }\n\n return adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055);\n }\n\n function adjustToRange(min, max, value) {\n return Math.max(min, Math.min(max, value));\n }\n\n function decodeL(L) {\n if (L < 0) {\n return -decodeL(-L);\n }\n\n if (L > 8.0) {\n return ((L + 16) / 116) ** 3;\n }\n\n return L * DECODE_L_CONSTANT;\n }\n\n function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 && sourceBlackPoint[2] === 0) {\n result[0] = XYZ_Flat[0];\n result[1] = XYZ_Flat[1];\n result[2] = XYZ_Flat[2];\n return;\n }\n\n const zeroDecodeL = decodeL(0);\n const X_DST = zeroDecodeL;\n const X_SRC = decodeL(sourceBlackPoint[0]);\n const Y_DST = zeroDecodeL;\n const Y_SRC = decodeL(sourceBlackPoint[1]);\n const Z_DST = zeroDecodeL;\n const Z_SRC = decodeL(sourceBlackPoint[2]);\n const X_Scale = (1 - X_DST) / (1 - X_SRC);\n const X_Offset = 1 - X_Scale;\n const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n const Y_Offset = 1 - Y_Scale;\n const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n const Z_Offset = 1 - Z_Scale;\n result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n }\n\n function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n result[0] = XYZ_In[0];\n result[1] = XYZ_In[1];\n result[2] = XYZ_In[2];\n return;\n }\n\n const LMS = result;\n matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n const LMS_Flat = tempNormalizeMatrix;\n convertToFlat(sourceWhitePoint, LMS, LMS_Flat);\n matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n }\n\n function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n const LMS = result;\n matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n const LMS_D65 = tempNormalizeMatrix;\n convertToD65(sourceWhitePoint, LMS, LMS_D65);\n matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n }\n\n function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n const A = adjustToRange(0, 1, src[srcOffset] * scale);\n const B = adjustToRange(0, 1, src[srcOffset + 1] * scale);\n const C = adjustToRange(0, 1, src[srcOffset + 2] * scale);\n const AGR = A === 1 ? 1 : A ** cs.GR;\n const BGG = B === 1 ? 1 : B ** cs.GG;\n const CGB = C === 1 ? 1 : C ** cs.GB;\n const X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;\n const Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;\n const Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;\n const XYZ = tempConvertMatrix1;\n XYZ[0] = X;\n XYZ[1] = Y;\n XYZ[2] = Z;\n const XYZ_Flat = tempConvertMatrix2;\n normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);\n const XYZ_Black = tempConvertMatrix1;\n compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);\n const XYZ_D65 = tempConvertMatrix2;\n normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n const SRGB = tempConvertMatrix1;\n matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255;\n dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255;\n dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255;\n }\n\n class CalRGBCS extends ColorSpace {\n constructor(whitePoint, blackPoint, gamma, matrix) {\n super(\"CalRGB\", 3);\n\n if (!whitePoint) {\n throw new _util.FormatError(\"WhitePoint missing - required for color space CalRGB\");\n }\n\n blackPoint = blackPoint || new Float32Array(3);\n gamma = gamma || new Float32Array([1, 1, 1]);\n matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n const XW = whitePoint[0];\n const YW = whitePoint[1];\n const ZW = whitePoint[2];\n this.whitePoint = whitePoint;\n const XB = blackPoint[0];\n const YB = blackPoint[1];\n const ZB = blackPoint[2];\n this.blackPoint = blackPoint;\n this.GR = gamma[0];\n this.GG = gamma[1];\n this.GB = gamma[2];\n this.MXA = matrix[0];\n this.MYA = matrix[1];\n this.MZA = matrix[2];\n this.MXB = matrix[3];\n this.MYB = matrix[4];\n this.MZB = matrix[5];\n this.MXC = matrix[6];\n this.MYC = matrix[7];\n this.MZC = matrix[8];\n\n if (XW < 0 || ZW < 0 || YW !== 1) {\n throw new _util.FormatError(`Invalid WhitePoint components for ${this.name}` + \", no fallback available\");\n }\n\n if (XB < 0 || YB < 0 || ZB < 0) {\n (0, _util.info)(`Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` + \"falling back to default.\");\n this.blackPoint = new Float32Array(3);\n }\n\n if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n (0, _util.info)(`Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` + `${this.name}, falling back to default.`);\n this.GR = this.GG = this.GB = 1;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const scale = 1 / ((1 << bits) - 1);\n\n for (let i = 0; i < count; ++i) {\n convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01) / 3 | 0;\n }\n\n }\n\n return CalRGBCS;\n}();\n\nconst LabCS = function LabCSClosure() {\n function fn_g(x) {\n let result;\n\n if (x >= 6 / 29) {\n result = x * x * x;\n } else {\n result = 108 / 841 * (x - 4 / 29);\n }\n\n return result;\n }\n\n function decode(value, high1, low2, high2) {\n return low2 + value * (high2 - low2) / high1;\n }\n\n function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {\n let Ls = src[srcOffset];\n let as = src[srcOffset + 1];\n let bs = src[srcOffset + 2];\n\n if (maxVal !== false) {\n Ls = decode(Ls, maxVal, 0, 100);\n as = decode(as, maxVal, cs.amin, cs.amax);\n bs = decode(bs, maxVal, cs.bmin, cs.bmax);\n }\n\n if (as > cs.amax) {\n as = cs.amax;\n } else if (as < cs.amin) {\n as = cs.amin;\n }\n\n if (bs > cs.bmax) {\n bs = cs.bmax;\n } else if (bs < cs.bmin) {\n bs = cs.bmin;\n }\n\n const M = (Ls + 16) / 116;\n const L = M + as / 500;\n const N = M - bs / 200;\n const X = cs.XW * fn_g(L);\n const Y = cs.YW * fn_g(M);\n const Z = cs.ZW * fn_g(N);\n let r, g, b;\n\n if (cs.ZW < 1) {\n r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n } else {\n r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n }\n\n dest[destOffset] = Math.sqrt(r) * 255;\n dest[destOffset + 1] = Math.sqrt(g) * 255;\n dest[destOffset + 2] = Math.sqrt(b) * 255;\n }\n\n class LabCS extends ColorSpace {\n constructor(whitePoint, blackPoint, range) {\n super(\"Lab\", 3);\n\n if (!whitePoint) {\n throw new _util.FormatError(\"WhitePoint missing - required for color space Lab\");\n }\n\n blackPoint = blackPoint || [0, 0, 0];\n range = range || [-100, 100, -100, 100];\n this.XW = whitePoint[0];\n this.YW = whitePoint[1];\n this.ZW = whitePoint[2];\n this.amin = range[0];\n this.amax = range[1];\n this.bmin = range[2];\n this.bmax = range[3];\n this.XB = blackPoint[0];\n this.YB = blackPoint[1];\n this.ZB = blackPoint[2];\n\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new _util.FormatError(\"Invalid WhitePoint components, no fallback available\");\n }\n\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n (0, _util.info)(\"Invalid BlackPoint, falling back to default\");\n this.XB = this.YB = this.ZB = 0;\n }\n\n if (this.amin > this.amax || this.bmin > this.bmax) {\n (0, _util.info)(\"Invalid Range, falling back to defaults\");\n this.amin = -100;\n this.amax = 100;\n this.bmin = -100;\n this.bmax = 100;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n convertToRgb(this, src, srcOffset, false, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const maxVal = (1 << bits) - 1;\n\n for (let i = 0; i < count; i++) {\n convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01) / 3 | 0;\n }\n\n isDefaultDecode(decodeMap, bpc) {\n return true;\n }\n\n get usesZeroToOneRange() {\n return (0, _util.shadow)(this, \"usesZeroToOneRange\", false);\n }\n\n }\n\n return LabCS;\n}();\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GlobalImageCache = exports.LocalGStateCache = exports.LocalFunctionCache = exports.LocalColorSpaceCache = exports.LocalImageCache = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nclass BaseLocalCache {\n constructor(options) {\n if (this.constructor === BaseLocalCache) {\n (0, _util.unreachable)(\"Cannot initialize BaseLocalCache.\");\n }\n\n if (!options || !options.onlyRefs) {\n this._nameRefMap = new Map();\n this._imageMap = new Map();\n }\n\n this._imageCache = new _primitives.RefSetCache();\n }\n\n getByName(name) {\n const ref = this._nameRefMap.get(name);\n\n if (ref) {\n return this.getByRef(ref);\n }\n\n return this._imageMap.get(name) || null;\n }\n\n getByRef(ref) {\n return this._imageCache.get(ref) || null;\n }\n\n set(name, ref, data) {\n (0, _util.unreachable)(\"Abstract method `set` called.\");\n }\n\n}\n\nclass LocalImageCache extends BaseLocalCache {\n set(name, ref = null, data) {\n if (!name) {\n throw new Error('LocalImageCache.set - expected \"name\" argument.');\n }\n\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n\n this._nameRefMap.set(name, ref);\n\n this._imageCache.put(ref, data);\n\n return;\n }\n\n if (this._imageMap.has(name)) {\n return;\n }\n\n this._imageMap.set(name, data);\n }\n\n}\n\nexports.LocalImageCache = LocalImageCache;\n\nclass LocalColorSpaceCache extends BaseLocalCache {\n set(name = null, ref = null, data) {\n if (!name && !ref) {\n throw new Error('LocalColorSpaceCache.set - expected \"name\" and/or \"ref\" argument.');\n }\n\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n\n if (name) {\n this._nameRefMap.set(name, ref);\n }\n\n this._imageCache.put(ref, data);\n\n return;\n }\n\n if (this._imageMap.has(name)) {\n return;\n }\n\n this._imageMap.set(name, data);\n }\n\n}\n\nexports.LocalColorSpaceCache = LocalColorSpaceCache;\n\nclass LocalFunctionCache extends BaseLocalCache {\n constructor(options) {\n super({\n onlyRefs: true\n });\n }\n\n getByName(name) {\n (0, _util.unreachable)(\"Should not call `getByName` method.\");\n }\n\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('LocalFunctionCache.set - expected \"ref\" argument.');\n }\n\n if (this._imageCache.has(ref)) {\n return;\n }\n\n this._imageCache.put(ref, data);\n }\n\n}\n\nexports.LocalFunctionCache = LocalFunctionCache;\n\nclass LocalGStateCache extends BaseLocalCache {\n set(name, ref = null, data) {\n if (!name) {\n throw new Error('LocalGStateCache.set - expected \"name\" argument.');\n }\n\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n\n this._nameRefMap.set(name, ref);\n\n this._imageCache.put(ref, data);\n\n return;\n }\n\n if (this._imageMap.has(name)) {\n return;\n }\n\n this._imageMap.set(name, data);\n }\n\n}\n\nexports.LocalGStateCache = LocalGStateCache;\n\nclass GlobalImageCache {\n static get NUM_PAGES_THRESHOLD() {\n return (0, _util.shadow)(this, \"NUM_PAGES_THRESHOLD\", 2);\n }\n\n static get MAX_IMAGES_TO_CACHE() {\n return (0, _util.shadow)(this, \"MAX_IMAGES_TO_CACHE\", 10);\n }\n\n constructor() {\n this._refCache = new _primitives.RefSetCache();\n this._imageCache = new _primitives.RefSetCache();\n }\n\n shouldCache(ref, pageIndex) {\n const pageIndexSet = this._refCache.get(ref);\n\n const numPages = pageIndexSet ? pageIndexSet.size + (pageIndexSet.has(pageIndex) ? 0 : 1) : 1;\n\n if (numPages < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n return false;\n }\n\n if (!this._imageCache.has(ref) && this._imageCache.size >= GlobalImageCache.MAX_IMAGES_TO_CACHE) {\n return false;\n }\n\n return true;\n }\n\n addPageIndex(ref, pageIndex) {\n let pageIndexSet = this._refCache.get(ref);\n\n if (!pageIndexSet) {\n pageIndexSet = new Set();\n\n this._refCache.put(ref, pageIndexSet);\n }\n\n pageIndexSet.add(pageIndex);\n }\n\n getData(ref, pageIndex) {\n const pageIndexSet = this._refCache.get(ref);\n\n if (!pageIndexSet) {\n return null;\n }\n\n if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n return null;\n }\n\n if (!this._imageCache.has(ref)) {\n return null;\n }\n\n pageIndexSet.add(pageIndex);\n return this._imageCache.get(ref);\n }\n\n setData(ref, data) {\n if (!this._refCache.has(ref)) {\n throw new Error('GlobalImageCache.setData - expected \"addPageIndex\" to have been called.');\n }\n\n if (this._imageCache.has(ref)) {\n return;\n }\n\n if (this._imageCache.size >= GlobalImageCache.MAX_IMAGES_TO_CACHE) {\n (0, _util.info)(\"GlobalImageCache.setData - ignoring image above MAX_IMAGES_TO_CACHE.\");\n return;\n }\n\n this._imageCache.put(ref, data);\n }\n\n clear(onlyData = false) {\n if (!onlyData) {\n this._refCache.clear();\n }\n\n this._imageCache.clear();\n }\n\n}\n\nexports.GlobalImageCache = GlobalImageCache;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getQuadPoints = getQuadPoints;\nexports.MarkupAnnotation = exports.AnnotationFactory = exports.AnnotationBorderStyle = exports.Annotation = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _obj = __w_pdfjs_require__(10);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _colorspace = __w_pdfjs_require__(23);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _operator_list = __w_pdfjs_require__(26);\n\nvar _stream = __w_pdfjs_require__(12);\n\nvar _writer = __w_pdfjs_require__(27);\n\nclass AnnotationFactory {\n static create(xref, ref, pdfManager, idFactory) {\n return pdfManager.ensureCatalog(\"acroForm\").then(acroForm => {\n return pdfManager.ensure(this, \"_create\", [xref, ref, pdfManager, idFactory, acroForm]);\n });\n }\n\n static _create(xref, ref, pdfManager, idFactory, acroForm) {\n const dict = xref.fetchIfRef(ref);\n\n if (!(0, _primitives.isDict)(dict)) {\n return undefined;\n }\n\n const id = (0, _primitives.isRef)(ref) ? ref.toString() : `annot_${idFactory.createObjId()}`;\n let subtype = dict.get(\"Subtype\");\n subtype = (0, _primitives.isName)(subtype) ? subtype.name : null;\n const parameters = {\n xref,\n ref,\n dict,\n subtype,\n id,\n pdfManager,\n acroForm: acroForm instanceof _primitives.Dict ? acroForm : _primitives.Dict.empty\n };\n\n switch (subtype) {\n case \"Link\":\n return new LinkAnnotation(parameters);\n\n case \"Text\":\n return new TextAnnotation(parameters);\n\n case \"Widget\":\n let fieldType = (0, _core_utils.getInheritableProperty)({\n dict,\n key: \"FT\"\n });\n fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotation(parameters);\n\n case \"Btn\":\n return new ButtonWidgetAnnotation(parameters);\n\n case \"Ch\":\n return new ChoiceWidgetAnnotation(parameters);\n }\n\n (0, _util.warn)('Unimplemented widget field type \"' + fieldType + '\", ' + \"falling back to base field type.\");\n return new WidgetAnnotation(parameters);\n\n case \"Popup\":\n return new PopupAnnotation(parameters);\n\n case \"FreeText\":\n return new FreeTextAnnotation(parameters);\n\n case \"Line\":\n return new LineAnnotation(parameters);\n\n case \"Square\":\n return new SquareAnnotation(parameters);\n\n case \"Circle\":\n return new CircleAnnotation(parameters);\n\n case \"PolyLine\":\n return new PolylineAnnotation(parameters);\n\n case \"Polygon\":\n return new PolygonAnnotation(parameters);\n\n case \"Caret\":\n return new CaretAnnotation(parameters);\n\n case \"Ink\":\n return new InkAnnotation(parameters);\n\n case \"Highlight\":\n return new HighlightAnnotation(parameters);\n\n case \"Underline\":\n return new UnderlineAnnotation(parameters);\n\n case \"Squiggly\":\n return new SquigglyAnnotation(parameters);\n\n case \"StrikeOut\":\n return new StrikeOutAnnotation(parameters);\n\n case \"Stamp\":\n return new StampAnnotation(parameters);\n\n case \"FileAttachment\":\n return new FileAttachmentAnnotation(parameters);\n\n default:\n if (!subtype) {\n (0, _util.warn)(\"Annotation is missing the required /Subtype.\");\n } else {\n (0, _util.warn)('Unimplemented annotation type \"' + subtype + '\", ' + \"falling back to base annotation.\");\n }\n\n return new Annotation(parameters);\n }\n }\n\n}\n\nexports.AnnotationFactory = AnnotationFactory;\n\nfunction getQuadPoints(dict, rect) {\n if (!dict.has(\"QuadPoints\")) {\n return null;\n }\n\n const quadPoints = dict.getArray(\"QuadPoints\");\n\n if (!Array.isArray(quadPoints) || quadPoints.length % 8 > 0) {\n return null;\n }\n\n const quadPointsLists = [];\n\n for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) {\n quadPointsLists.push([]);\n\n for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) {\n const x = quadPoints[j];\n const y = quadPoints[j + 1];\n\n if (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3]) {\n return null;\n }\n\n quadPointsLists[i].push({\n x,\n y\n });\n }\n }\n\n return quadPointsLists;\n}\n\nfunction getTransformMatrix(rect, bbox, matrix) {\n const [minX, minY, maxX, maxY] = _util.Util.getAxialAlignedBoundingBox(bbox, matrix);\n\n if (minX === maxX || minY === maxY) {\n return [1, 0, 0, 1, rect[0], rect[1]];\n }\n\n const xRatio = (rect[2] - rect[0]) / (maxX - minX);\n const yRatio = (rect[3] - rect[1]) / (maxY - minY);\n return [xRatio, 0, 0, yRatio, rect[0] - minX * xRatio, rect[1] - minY * yRatio];\n}\n\nclass Annotation {\n constructor(params) {\n const dict = params.dict;\n this.setContents(dict.get(\"Contents\"));\n this.setModificationDate(dict.get(\"M\"));\n this.setFlags(dict.get(\"F\"));\n this.setRectangle(dict.getArray(\"Rect\"));\n this.setColor(dict.getArray(\"C\"));\n this.setBorderStyle(dict);\n this.setAppearance(dict);\n this.data = {\n annotationFlags: this.flags,\n borderStyle: this.borderStyle,\n color: this.color,\n contents: this.contents,\n hasAppearance: !!this.appearance,\n id: params.id,\n modificationDate: this.modificationDate,\n rect: this.rectangle,\n subtype: params.subtype\n };\n }\n\n _hasFlag(flags, flag) {\n return !!(flags & flag);\n }\n\n _isViewable(flags) {\n return !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.HIDDEN) && !this._hasFlag(flags, _util.AnnotationFlag.NOVIEW);\n }\n\n _isPrintable(flags) {\n return this._hasFlag(flags, _util.AnnotationFlag.PRINT) && !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.HIDDEN);\n }\n\n get viewable() {\n if (this.flags === 0) {\n return true;\n }\n\n return this._isViewable(this.flags);\n }\n\n get printable() {\n if (this.flags === 0) {\n return false;\n }\n\n return this._isPrintable(this.flags);\n }\n\n setContents(contents) {\n this.contents = (0, _util.stringToPDFString)(contents || \"\");\n }\n\n setModificationDate(modificationDate) {\n this.modificationDate = (0, _util.isString)(modificationDate) ? modificationDate : null;\n }\n\n setFlags(flags) {\n this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\n }\n\n hasFlag(flag) {\n return this._hasFlag(this.flags, flag);\n }\n\n setRectangle(rectangle) {\n if (Array.isArray(rectangle) && rectangle.length === 4) {\n this.rectangle = _util.Util.normalizeRect(rectangle);\n } else {\n this.rectangle = [0, 0, 0, 0];\n }\n }\n\n setColor(color) {\n const rgbColor = new Uint8ClampedArray(3);\n\n if (!Array.isArray(color)) {\n this.color = rgbColor;\n return;\n }\n\n switch (color.length) {\n case 0:\n this.color = null;\n break;\n\n case 1:\n _colorspace.ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n\n this.color = rgbColor;\n break;\n\n case 3:\n _colorspace.ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n\n this.color = rgbColor;\n break;\n\n case 4:\n _colorspace.ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n\n this.color = rgbColor;\n break;\n\n default:\n this.color = rgbColor;\n break;\n }\n }\n\n setBorderStyle(borderStyle) {\n this.borderStyle = new AnnotationBorderStyle();\n\n if (!(0, _primitives.isDict)(borderStyle)) {\n return;\n }\n\n if (borderStyle.has(\"BS\")) {\n const dict = borderStyle.get(\"BS\");\n const dictType = dict.get(\"Type\");\n\n if (!dictType || (0, _primitives.isName)(dictType, \"Border\")) {\n this.borderStyle.setWidth(dict.get(\"W\"), this.rectangle);\n this.borderStyle.setStyle(dict.get(\"S\"));\n this.borderStyle.setDashArray(dict.getArray(\"D\"));\n }\n } else if (borderStyle.has(\"Border\")) {\n const array = borderStyle.getArray(\"Border\");\n\n if (Array.isArray(array) && array.length >= 3) {\n this.borderStyle.setHorizontalCornerRadius(array[0]);\n this.borderStyle.setVerticalCornerRadius(array[1]);\n this.borderStyle.setWidth(array[2], this.rectangle);\n\n if (array.length === 4) {\n this.borderStyle.setDashArray(array[3]);\n }\n }\n } else {\n this.borderStyle.setWidth(0);\n }\n }\n\n setAppearance(dict) {\n this.appearance = null;\n const appearanceStates = dict.get(\"AP\");\n\n if (!(0, _primitives.isDict)(appearanceStates)) {\n return;\n }\n\n const normalAppearanceState = appearanceStates.get(\"N\");\n\n if ((0, _primitives.isStream)(normalAppearanceState)) {\n this.appearance = normalAppearanceState;\n return;\n }\n\n if (!(0, _primitives.isDict)(normalAppearanceState)) {\n return;\n }\n\n const as = dict.get(\"AS\");\n\n if (!(0, _primitives.isName)(as) || !normalAppearanceState.has(as.name)) {\n return;\n }\n\n this.appearance = normalAppearanceState.get(as.name);\n }\n\n loadResources(keys) {\n return this.appearance.dict.getAsync(\"Resources\").then(resources => {\n if (!resources) {\n return undefined;\n }\n\n const objectLoader = new _obj.ObjectLoader(resources, keys, resources.xref);\n return objectLoader.load().then(function () {\n return resources;\n });\n });\n }\n\n getOperatorList(evaluator, task, renderForms, annotationStorage) {\n if (!this.appearance) {\n return Promise.resolve(new _operator_list.OperatorList());\n }\n\n const appearance = this.appearance;\n const data = this.data;\n const appearanceDict = appearance.dict;\n const resourcesPromise = this.loadResources([\"ExtGState\", \"ColorSpace\", \"Pattern\", \"Shading\", \"XObject\", \"Font\"]);\n const bbox = appearanceDict.getArray(\"BBox\") || [0, 0, 1, 1];\n const matrix = appearanceDict.getArray(\"Matrix\") || [1, 0, 0, 1, 0, 0];\n const transform = getTransformMatrix(data.rect, bbox, matrix);\n return resourcesPromise.then(resources => {\n const opList = new _operator_list.OperatorList();\n opList.addOp(_util.OPS.beginAnnotation, [data.rect, transform, matrix]);\n return evaluator.getOperatorList({\n stream: appearance,\n task,\n resources,\n operatorList: opList\n }).then(() => {\n opList.addOp(_util.OPS.endAnnotation, []);\n appearance.reset();\n return opList;\n });\n });\n }\n\n async save(evaluator, task, annotationStorage) {\n return null;\n }\n\n}\n\nexports.Annotation = Annotation;\n\nclass AnnotationBorderStyle {\n constructor() {\n this.width = 1;\n this.style = _util.AnnotationBorderStyleType.SOLID;\n this.dashArray = [3];\n this.horizontalCornerRadius = 0;\n this.verticalCornerRadius = 0;\n }\n\n setWidth(width, rect = [0, 0, 0, 0]) {\n if ((0, _primitives.isName)(width)) {\n this.width = 0;\n return;\n }\n\n if (Number.isInteger(width)) {\n if (width > 0) {\n const maxWidth = (rect[2] - rect[0]) / 2;\n const maxHeight = (rect[3] - rect[1]) / 2;\n\n if (maxWidth > 0 && maxHeight > 0 && (width > maxWidth || width > maxHeight)) {\n (0, _util.warn)(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);\n width = 1;\n }\n }\n\n this.width = width;\n }\n }\n\n setStyle(style) {\n if (!(0, _primitives.isName)(style)) {\n return;\n }\n\n switch (style.name) {\n case \"S\":\n this.style = _util.AnnotationBorderStyleType.SOLID;\n break;\n\n case \"D\":\n this.style = _util.AnnotationBorderStyleType.DASHED;\n break;\n\n case \"B\":\n this.style = _util.AnnotationBorderStyleType.BEVELED;\n break;\n\n case \"I\":\n this.style = _util.AnnotationBorderStyleType.INSET;\n break;\n\n case \"U\":\n this.style = _util.AnnotationBorderStyleType.UNDERLINE;\n break;\n\n default:\n break;\n }\n }\n\n setDashArray(dashArray) {\n if (Array.isArray(dashArray) && dashArray.length > 0) {\n let isValid = true;\n let allZeros = true;\n\n for (const element of dashArray) {\n const validNumber = +element >= 0;\n\n if (!validNumber) {\n isValid = false;\n break;\n } else if (element > 0) {\n allZeros = false;\n }\n }\n\n if (isValid && !allZeros) {\n this.dashArray = dashArray;\n } else {\n this.width = 0;\n }\n } else if (dashArray) {\n this.width = 0;\n }\n }\n\n setHorizontalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.horizontalCornerRadius = radius;\n }\n }\n\n setVerticalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.verticalCornerRadius = radius;\n }\n }\n\n}\n\nexports.AnnotationBorderStyle = AnnotationBorderStyle;\n\nclass MarkupAnnotation extends Annotation {\n constructor(parameters) {\n super(parameters);\n const dict = parameters.dict;\n\n if (dict.has(\"IRT\")) {\n const rawIRT = dict.getRaw(\"IRT\");\n this.data.inReplyTo = (0, _primitives.isRef)(rawIRT) ? rawIRT.toString() : null;\n const rt = dict.get(\"RT\");\n this.data.replyType = (0, _primitives.isName)(rt) ? rt.name : _util.AnnotationReplyType.REPLY;\n }\n\n if (this.data.replyType === _util.AnnotationReplyType.GROUP) {\n const parent = dict.get(\"IRT\");\n this.data.title = (0, _util.stringToPDFString)(parent.get(\"T\") || \"\");\n this.setContents(parent.get(\"Contents\"));\n this.data.contents = this.contents;\n\n if (!parent.has(\"CreationDate\")) {\n this.data.creationDate = null;\n } else {\n this.setCreationDate(parent.get(\"CreationDate\"));\n this.data.creationDate = this.creationDate;\n }\n\n if (!parent.has(\"M\")) {\n this.data.modificationDate = null;\n } else {\n this.setModificationDate(parent.get(\"M\"));\n this.data.modificationDate = this.modificationDate;\n }\n\n this.data.hasPopup = parent.has(\"Popup\");\n\n if (!parent.has(\"C\")) {\n this.data.color = null;\n } else {\n this.setColor(parent.getArray(\"C\"));\n this.data.color = this.color;\n }\n } else {\n this.data.title = (0, _util.stringToPDFString)(dict.get(\"T\") || \"\");\n this.setCreationDate(dict.get(\"CreationDate\"));\n this.data.creationDate = this.creationDate;\n this.data.hasPopup = dict.has(\"Popup\");\n\n if (!dict.has(\"C\")) {\n this.data.color = null;\n }\n }\n }\n\n setCreationDate(creationDate) {\n this.creationDate = (0, _util.isString)(creationDate) ? creationDate : null;\n }\n\n}\n\nexports.MarkupAnnotation = MarkupAnnotation;\n\nclass WidgetAnnotation extends Annotation {\n constructor(params) {\n super(params);\n const dict = params.dict;\n const data = this.data;\n this.ref = params.ref;\n data.annotationType = _util.AnnotationType.WIDGET;\n data.fieldName = this._constructFieldName(dict);\n const fieldValue = (0, _core_utils.getInheritableProperty)({\n dict,\n key: \"V\",\n getArray: true\n });\n data.fieldValue = this._decodeFormValue(fieldValue);\n data.alternativeText = (0, _util.stringToPDFString)(dict.get(\"TU\") || \"\");\n data.defaultAppearance = (0, _core_utils.getInheritableProperty)({\n dict,\n key: \"DA\"\n }) || params.acroForm.get(\"DA\") || \"\";\n const fieldType = (0, _core_utils.getInheritableProperty)({\n dict,\n key: \"FT\"\n });\n data.fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;\n this.fieldResources = (0, _core_utils.getInheritableProperty)({\n dict,\n key: \"DR\"\n }) || params.acroForm.get(\"DR\") || _primitives.Dict.empty;\n data.fieldFlags = (0, _core_utils.getInheritableProperty)({\n dict,\n key: \"Ff\"\n });\n\n if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n data.fieldFlags = 0;\n }\n\n data.readOnly = this.hasFieldFlag(_util.AnnotationFieldFlag.READONLY);\n\n if (data.fieldType === \"Sig\") {\n data.fieldValue = null;\n this.setFlags(_util.AnnotationFlag.HIDDEN);\n }\n }\n\n _constructFieldName(dict) {\n if (!dict.has(\"T\") && !dict.has(\"Parent\")) {\n (0, _util.warn)(\"Unknown field name, falling back to empty field name.\");\n return \"\";\n }\n\n if (!dict.has(\"Parent\")) {\n return (0, _util.stringToPDFString)(dict.get(\"T\"));\n }\n\n const fieldName = [];\n\n if (dict.has(\"T\")) {\n fieldName.unshift((0, _util.stringToPDFString)(dict.get(\"T\")));\n }\n\n let loopDict = dict;\n\n while (loopDict.has(\"Parent\")) {\n loopDict = loopDict.get(\"Parent\");\n\n if (!(0, _primitives.isDict)(loopDict)) {\n break;\n }\n\n if (loopDict.has(\"T\")) {\n fieldName.unshift((0, _util.stringToPDFString)(loopDict.get(\"T\")));\n }\n }\n\n return fieldName.join(\".\");\n }\n\n _decodeFormValue(formValue) {\n if (Array.isArray(formValue)) {\n return formValue.filter(item => (0, _util.isString)(item)).map(item => (0, _util.stringToPDFString)(item));\n } else if ((0, _primitives.isName)(formValue)) {\n return (0, _util.stringToPDFString)(formValue.name);\n } else if ((0, _util.isString)(formValue)) {\n return (0, _util.stringToPDFString)(formValue);\n }\n\n return null;\n }\n\n hasFieldFlag(flag) {\n return !!(this.data.fieldFlags & flag);\n }\n\n getOperatorList(evaluator, task, renderForms, annotationStorage) {\n if (renderForms) {\n return Promise.resolve(new _operator_list.OperatorList());\n }\n\n if (!this._hasText) {\n return super.getOperatorList(evaluator, task, renderForms, annotationStorage);\n }\n\n return this._getAppearance(evaluator, task, annotationStorage).then(content => {\n if (this.appearance && content === null) {\n return super.getOperatorList(evaluator, task, renderForms, annotationStorage);\n }\n\n const operatorList = new _operator_list.OperatorList();\n\n if (!this.data.defaultAppearance || content === null) {\n return operatorList;\n }\n\n const matrix = [1, 0, 0, 1, 0, 0];\n const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]];\n const transform = getTransformMatrix(this.data.rect, bbox, matrix);\n operatorList.addOp(_util.OPS.beginAnnotation, [this.data.rect, transform, matrix]);\n const stream = new _stream.StringStream(content);\n return evaluator.getOperatorList({\n stream,\n task,\n resources: this.fieldResources,\n operatorList\n }).then(function () {\n operatorList.addOp(_util.OPS.endAnnotation, []);\n return operatorList;\n });\n });\n }\n\n async save(evaluator, task, annotationStorage) {\n if (this.data.fieldValue === annotationStorage[this.data.id]) {\n return null;\n }\n\n let appearance = await this._getAppearance(evaluator, task, annotationStorage);\n\n if (appearance === null) {\n return null;\n }\n\n const dict = evaluator.xref.fetchIfRef(this.ref);\n\n if (!(0, _primitives.isDict)(dict)) {\n return null;\n }\n\n const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]];\n const newRef = evaluator.xref.getNewRef();\n const AP = new _primitives.Dict(evaluator.xref);\n AP.set(\"N\", newRef);\n const value = annotationStorage[this.data.id];\n const encrypt = evaluator.xref.encrypt;\n let originalTransform = null;\n let newTransform = null;\n\n if (encrypt) {\n originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen);\n newTransform = encrypt.createCipherTransform(newRef.num, newRef.gen);\n appearance = newTransform.encryptString(appearance);\n }\n\n dict.set(\"V\", value);\n dict.set(\"AP\", AP);\n dict.set(\"M\", `D:${(0, _util.getModificationDate)()}`);\n const appearanceDict = new _primitives.Dict(evaluator.xref);\n appearanceDict.set(\"Length\", appearance.length);\n appearanceDict.set(\"Subtype\", _primitives.Name.get(\"Form\"));\n appearanceDict.set(\"Resources\", this.fieldResources);\n appearanceDict.set(\"BBox\", bbox);\n const bufferOriginal = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n (0, _writer.writeDict)(dict, bufferOriginal, originalTransform);\n bufferOriginal.push(\"\\nendobj\\n\");\n const bufferNew = [`${newRef.num} ${newRef.gen} obj\\n`];\n (0, _writer.writeDict)(appearanceDict, bufferNew, newTransform);\n bufferNew.push(\" stream\\n\");\n bufferNew.push(appearance);\n bufferNew.push(\"\\nendstream\\nendobj\\n\");\n return [{\n ref: this.ref,\n data: bufferOriginal.join(\"\")\n }, {\n ref: newRef,\n data: bufferNew.join(\"\")\n }];\n }\n\n async _getAppearance(evaluator, task, annotationStorage) {\n const isPassword = this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD);\n\n if (!annotationStorage || isPassword) {\n return null;\n }\n\n const value = annotationStorage[this.data.id];\n\n if (value === \"\") {\n return \"\";\n }\n\n const defaultPadding = 2;\n const hPadding = defaultPadding;\n const totalHeight = this.data.rect[3] - this.data.rect[1];\n const totalWidth = this.data.rect[2] - this.data.rect[0];\n const fontInfo = await this._getFontData(evaluator, task);\n const [font, fontName] = fontInfo;\n let fontSize = fontInfo[2];\n fontSize = this._computeFontSize(font, fontName, fontSize, totalHeight);\n let descent = font.descent;\n\n if (isNaN(descent)) {\n descent = 0;\n }\n\n const vPadding = defaultPadding + Math.abs(descent) * fontSize;\n const defaultAppearance = this.data.defaultAppearance;\n const alignment = this.data.textAlignment;\n\n if (this.data.comb) {\n return this._getCombAppearance(defaultAppearance, value, totalWidth, hPadding, vPadding);\n }\n\n if (this.data.multiLine) {\n return this._getMultilineAppearance(defaultAppearance, value, font, fontSize, totalWidth, totalHeight, alignment, hPadding, vPadding);\n }\n\n if (alignment === 0 || alignment > 2) {\n return \"/Tx BMC q BT \" + defaultAppearance + ` 1 0 0 1 ${hPadding} ${vPadding} Tm (${(0, _util.escapeString)(value)}) Tj` + \" ET Q EMC\";\n }\n\n const renderedText = this._renderText(value, font, fontSize, totalWidth, alignment, hPadding, vPadding);\n\n return \"/Tx BMC q BT \" + defaultAppearance + ` 1 0 0 1 0 0 Tm ${renderedText}` + \" ET Q EMC\";\n }\n\n async _getFontData(evaluator, task) {\n const operatorList = new _operator_list.OperatorList();\n const initialState = {\n fontSize: 0,\n font: null,\n fontName: null,\n\n clone() {\n return this;\n }\n\n };\n await evaluator.getOperatorList({\n stream: new _stream.StringStream(this.data.defaultAppearance),\n task,\n resources: this.fieldResources,\n operatorList,\n initialState\n });\n return [initialState.font, initialState.fontName, initialState.fontSize];\n }\n\n _computeFontSize(font, fontName, fontSize, height) {\n if (fontSize === null || fontSize === 0) {\n const em = font.charsToGlyphs(\"M\", true)[0].width / 1000;\n const capHeight = 0.7 * em;\n fontSize = Math.max(1, Math.floor(height / (1.5 * capHeight)));\n let fontRegex = new RegExp(`/${fontName}\\\\s+[0-9\\.]+\\\\s+Tf`);\n\n if (this.data.defaultAppearance.search(fontRegex) === -1) {\n fontRegex = new RegExp(`/${fontName}\\\\s+Tf`);\n }\n\n this.data.defaultAppearance = this.data.defaultAppearance.replace(fontRegex, `/${fontName} ${fontSize} Tf`);\n }\n\n return fontSize;\n }\n\n _renderText(text, font, fontSize, totalWidth, alignment, hPadding, vPadding) {\n const glyphs = font.charsToGlyphs(text);\n const scale = fontSize / 1000;\n let width = 0;\n\n for (const glyph of glyphs) {\n width += glyph.width * scale;\n }\n\n let shift;\n\n if (alignment === 1) {\n shift = (totalWidth - width) / 2;\n } else if (alignment === 2) {\n shift = totalWidth - width - hPadding;\n } else {\n shift = hPadding;\n }\n\n shift = shift.toFixed(2);\n vPadding = vPadding.toFixed(2);\n return `${shift} ${vPadding} Td (${(0, _util.escapeString)(text)}) Tj`;\n }\n\n}\n\nclass TextWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n this._hasText = true;\n const dict = params.dict;\n\n if (!(0, _util.isString)(this.data.fieldValue)) {\n this.data.fieldValue = \"\";\n }\n\n let alignment = (0, _core_utils.getInheritableProperty)({\n dict,\n key: \"Q\"\n });\n\n if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n alignment = null;\n }\n\n this.data.textAlignment = alignment;\n let maximumLength = (0, _core_utils.getInheritableProperty)({\n dict,\n key: \"MaxLen\"\n });\n\n if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n maximumLength = null;\n }\n\n this.data.maxLen = maximumLength;\n this.data.multiLine = this.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE);\n this.data.comb = this.hasFieldFlag(_util.AnnotationFieldFlag.COMB) && !this.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE) && !this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD) && !this.hasFieldFlag(_util.AnnotationFieldFlag.FILESELECT) && this.data.maxLen !== null;\n }\n\n _getCombAppearance(defaultAppearance, text, width, hPadding, vPadding) {\n const combWidth = (width / this.data.maxLen).toFixed(2);\n const buf = [];\n\n for (const character of text) {\n buf.push(`(${(0, _util.escapeString)(character)}) Tj`);\n }\n\n const renderedComb = buf.join(` ${combWidth} 0 Td `);\n return \"/Tx BMC q BT \" + defaultAppearance + ` 1 0 0 1 ${hPadding} ${vPadding} Tm ${renderedComb}` + \" ET Q EMC\";\n }\n\n _getMultilineAppearance(defaultAppearance, text, font, fontSize, width, height, alignment, hPadding, vPadding) {\n const lines = text.split(/\\r\\n|\\r|\\n/);\n const buf = [];\n const totalWidth = width - 2 * hPadding;\n\n for (const line of lines) {\n const chunks = this._splitLine(line, font, fontSize, totalWidth);\n\n for (const chunk of chunks) {\n const padding = buf.length === 0 ? hPadding : 0;\n buf.push(this._renderText(chunk, font, fontSize, width, alignment, padding, -fontSize));\n }\n }\n\n const renderedText = buf.join(\"\\n\");\n return \"/Tx BMC q BT \" + defaultAppearance + ` 1 0 0 1 0 ${height} Tm ${renderedText}` + \" ET Q EMC\";\n }\n\n _splitLine(line, font, fontSize, width) {\n if (line.length <= 1) {\n return [line];\n }\n\n const scale = fontSize / 1000;\n const whitespace = font.charsToGlyphs(\" \", true)[0].width * scale;\n const chunks = [];\n let lastSpacePos = -1,\n startChunk = 0,\n currentWidth = 0;\n\n for (let i = 0, ii = line.length; i < ii; i++) {\n const character = line.charAt(i);\n\n if (character === \" \") {\n if (currentWidth + whitespace > width) {\n chunks.push(line.substring(startChunk, i));\n startChunk = i;\n currentWidth = whitespace;\n lastSpacePos = -1;\n } else {\n currentWidth += whitespace;\n lastSpacePos = i;\n }\n } else {\n const charWidth = font.charsToGlyphs(character, false)[0].width * scale;\n\n if (currentWidth + charWidth > width) {\n if (lastSpacePos !== -1) {\n chunks.push(line.substring(startChunk, lastSpacePos + 1));\n startChunk = i = lastSpacePos + 1;\n lastSpacePos = -1;\n currentWidth = 0;\n } else {\n chunks.push(line.substring(startChunk, i));\n startChunk = i;\n currentWidth = charWidth;\n }\n } else {\n currentWidth += charWidth;\n }\n }\n }\n\n if (startChunk < line.length) {\n chunks.push(line.substring(startChunk, line.length));\n }\n\n return chunks;\n }\n\n}\n\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n this.checkedAppearance = null;\n this.uncheckedAppearance = null;\n this.data.checkBox = !this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);\n this.data.radioButton = this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);\n this.data.pushButton = this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);\n\n if (this.data.checkBox) {\n this._processCheckBox(params);\n } else if (this.data.radioButton) {\n this._processRadioButton(params);\n } else if (this.data.pushButton) {\n this._processPushButton(params);\n } else {\n (0, _util.warn)(\"Invalid field flags for button widget annotation\");\n }\n }\n\n getOperatorList(evaluator, task, renderForms, annotationStorage) {\n if (this.data.pushButton) {\n return super.getOperatorList(evaluator, task, false, annotationStorage);\n }\n\n if (annotationStorage) {\n const value = annotationStorage[this.data.id] || false;\n let appearance;\n\n if (value) {\n appearance = this.checkedAppearance;\n } else {\n appearance = this.uncheckedAppearance;\n }\n\n if (appearance) {\n const savedAppearance = this.appearance;\n this.appearance = appearance;\n const operatorList = super.getOperatorList(evaluator, task, renderForms, annotationStorage);\n this.appearance = savedAppearance;\n return operatorList;\n }\n\n return Promise.resolve(new _operator_list.OperatorList());\n }\n\n return super.getOperatorList(evaluator, task, renderForms, annotationStorage);\n }\n\n async save(evaluator, task, annotationStorage) {\n if (this.data.checkBox) {\n return this._saveCheckbox(evaluator, task, annotationStorage);\n }\n\n if (this.data.radioButton) {\n return this._saveRadioButton(evaluator, task, annotationStorage);\n }\n\n return super.save(evaluator, task, annotationStorage);\n }\n\n async _saveCheckbox(evaluator, task, annotationStorage) {\n const defaultValue = this.data.fieldValue && this.data.fieldValue !== \"Off\";\n const value = annotationStorage[this.data.id];\n\n if (defaultValue === value) {\n return null;\n }\n\n const dict = evaluator.xref.fetchIfRef(this.ref);\n\n if (!(0, _primitives.isDict)(dict)) {\n return null;\n }\n\n const name = _primitives.Name.get(value ? this.data.exportValue : \"Off\");\n\n dict.set(\"V\", name);\n dict.set(\"AS\", name);\n dict.set(\"M\", `D:${(0, _util.getModificationDate)()}`);\n const encrypt = evaluator.xref.encrypt;\n let originalTransform = null;\n\n if (encrypt) {\n originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen);\n }\n\n const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n (0, _writer.writeDict)(dict, buffer, originalTransform);\n buffer.push(\"\\nendobj\\n\");\n return [{\n ref: this.ref,\n data: buffer.join(\"\")\n }];\n }\n\n async _saveRadioButton(evaluator, task, annotationStorage) {\n const defaultValue = this.data.fieldValue === this.data.buttonValue;\n const value = annotationStorage[this.data.id];\n\n if (defaultValue === value) {\n return null;\n }\n\n const dict = evaluator.xref.fetchIfRef(this.ref);\n\n if (!(0, _primitives.isDict)(dict)) {\n return null;\n }\n\n const name = _primitives.Name.get(value ? this.data.buttonValue : \"Off\");\n\n let parentBuffer = null;\n const encrypt = evaluator.xref.encrypt;\n\n if (value) {\n if ((0, _primitives.isRef)(this.parent)) {\n const parent = evaluator.xref.fetch(this.parent);\n let parentTransform = null;\n\n if (encrypt) {\n parentTransform = encrypt.createCipherTransform(this.parent.num, this.parent.gen);\n }\n\n parent.set(\"V\", name);\n parentBuffer = [`${this.parent.num} ${this.parent.gen} obj\\n`];\n (0, _writer.writeDict)(parent, parentBuffer, parentTransform);\n parentBuffer.push(\"\\nendobj\\n\");\n } else if ((0, _primitives.isDict)(this.parent)) {\n this.parent.set(\"V\", name);\n }\n }\n\n dict.set(\"AS\", name);\n dict.set(\"M\", `D:${(0, _util.getModificationDate)()}`);\n let originalTransform = null;\n\n if (encrypt) {\n originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen);\n }\n\n const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n (0, _writer.writeDict)(dict, buffer, originalTransform);\n buffer.push(\"\\nendobj\\n\");\n const newRefs = [{\n ref: this.ref,\n data: buffer.join(\"\")\n }];\n\n if (parentBuffer !== null) {\n newRefs.push({\n ref: this.parent,\n data: parentBuffer.join(\"\")\n });\n }\n\n return newRefs;\n }\n\n _processCheckBox(params) {\n const customAppearance = params.dict.get(\"AP\");\n\n if (!(0, _primitives.isDict)(customAppearance)) {\n return;\n }\n\n const normalAppearance = customAppearance.get(\"N\");\n\n if (!(0, _primitives.isDict)(normalAppearance)) {\n return;\n }\n\n const exportValues = normalAppearance.getKeys();\n\n if (!exportValues.includes(\"Off\")) {\n exportValues.push(\"Off\");\n }\n\n if (exportValues.length !== 2) {\n return;\n }\n\n this.data.exportValue = exportValues[0] === \"Off\" ? exportValues[1] : exportValues[0];\n this.checkedAppearance = normalAppearance.get(this.data.exportValue);\n this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n }\n\n _processRadioButton(params) {\n this.data.fieldValue = this.data.buttonValue = null;\n const fieldParent = params.dict.get(\"Parent\");\n\n if ((0, _primitives.isDict)(fieldParent) && fieldParent.has(\"V\")) {\n const fieldParentValue = fieldParent.get(\"V\");\n\n if ((0, _primitives.isName)(fieldParentValue)) {\n this.parent = params.dict.getRaw(\"Parent\");\n this.data.fieldValue = this._decodeFormValue(fieldParentValue);\n }\n }\n\n const appearanceStates = params.dict.get(\"AP\");\n\n if (!(0, _primitives.isDict)(appearanceStates)) {\n return;\n }\n\n const normalAppearance = appearanceStates.get(\"N\");\n\n if (!(0, _primitives.isDict)(normalAppearance)) {\n return;\n }\n\n for (const key of normalAppearance.getKeys()) {\n if (key !== \"Off\") {\n this.data.buttonValue = key;\n break;\n }\n }\n\n this.checkedAppearance = normalAppearance.get(this.data.buttonValue);\n this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n }\n\n _processPushButton(params) {\n if (!params.dict.has(\"A\")) {\n (0, _util.warn)(\"Push buttons without action dictionaries are not supported\");\n return;\n }\n\n _obj.Catalog.parseDestDictionary({\n destDict: params.dict,\n resultObj: this.data,\n docBaseUrl: params.pdfManager.docBaseUrl\n });\n }\n\n}\n\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n this.data.options = [];\n const options = (0, _core_utils.getInheritableProperty)({\n dict: params.dict,\n key: \"Opt\"\n });\n\n if (Array.isArray(options)) {\n const xref = params.xref;\n\n for (let i = 0, ii = options.length; i < ii; i++) {\n const option = xref.fetchIfRef(options[i]);\n const isOptionArray = Array.isArray(option);\n this.data.options[i] = {\n exportValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[0]) : option),\n displayValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[1]) : option)\n };\n }\n }\n\n if ((0, _util.isString)(this.data.fieldValue)) {\n this.data.fieldValue = [this.data.fieldValue];\n } else if (!this.data.fieldValue) {\n this.data.fieldValue = [];\n }\n\n this.data.combo = this.hasFieldFlag(_util.AnnotationFieldFlag.COMBO);\n this.data.multiSelect = this.hasFieldFlag(_util.AnnotationFieldFlag.MULTISELECT);\n this._hasText = true;\n }\n\n}\n\nclass TextAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n const DEFAULT_ICON_SIZE = 22;\n super(parameters);\n const dict = parameters.dict;\n this.data.annotationType = _util.AnnotationType.TEXT;\n\n if (this.data.hasAppearance) {\n this.data.name = \"NoIcon\";\n } else {\n this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\n this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\n this.data.name = dict.has(\"Name\") ? dict.get(\"Name\").name : \"Note\";\n }\n\n if (dict.has(\"State\")) {\n this.data.state = dict.get(\"State\") || null;\n this.data.stateModel = dict.get(\"StateModel\") || null;\n } else {\n this.data.state = null;\n this.data.stateModel = null;\n }\n }\n\n}\n\nclass LinkAnnotation extends Annotation {\n constructor(params) {\n super(params);\n this.data.annotationType = _util.AnnotationType.LINK;\n const quadPoints = getQuadPoints(params.dict, this.rectangle);\n\n if (quadPoints) {\n this.data.quadPoints = quadPoints;\n }\n\n _obj.Catalog.parseDestDictionary({\n destDict: params.dict,\n resultObj: this.data,\n docBaseUrl: params.pdfManager.docBaseUrl\n });\n }\n\n}\n\nclass PopupAnnotation extends Annotation {\n constructor(parameters) {\n super(parameters);\n this.data.annotationType = _util.AnnotationType.POPUP;\n let parentItem = parameters.dict.get(\"Parent\");\n\n if (!parentItem) {\n (0, _util.warn)(\"Popup annotation has a missing or invalid parent annotation.\");\n return;\n }\n\n const parentSubtype = parentItem.get(\"Subtype\");\n this.data.parentType = (0, _primitives.isName)(parentSubtype) ? parentSubtype.name : null;\n const rawParent = parameters.dict.getRaw(\"Parent\");\n this.data.parentId = (0, _primitives.isRef)(rawParent) ? rawParent.toString() : null;\n const rt = parentItem.get(\"RT\");\n\n if ((0, _primitives.isName)(rt, _util.AnnotationReplyType.GROUP)) {\n parentItem = parentItem.get(\"IRT\");\n }\n\n if (!parentItem.has(\"M\")) {\n this.data.modificationDate = null;\n } else {\n this.setModificationDate(parentItem.get(\"M\"));\n this.data.modificationDate = this.modificationDate;\n }\n\n if (!parentItem.has(\"C\")) {\n this.data.color = null;\n } else {\n this.setColor(parentItem.getArray(\"C\"));\n this.data.color = this.color;\n }\n\n if (!this.viewable) {\n const parentFlags = parentItem.get(\"F\");\n\n if (this._isViewable(parentFlags)) {\n this.setFlags(parentFlags);\n }\n }\n\n this.data.title = (0, _util.stringToPDFString)(parentItem.get(\"T\") || \"\");\n this.data.contents = (0, _util.stringToPDFString)(parentItem.get(\"Contents\") || \"\");\n }\n\n}\n\nclass FreeTextAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n this.data.annotationType = _util.AnnotationType.FREETEXT;\n }\n\n}\n\nclass LineAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n this.data.annotationType = _util.AnnotationType.LINE;\n this.data.lineCoordinates = _util.Util.normalizeRect(parameters.dict.getArray(\"L\"));\n }\n\n}\n\nclass SquareAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n this.data.annotationType = _util.AnnotationType.SQUARE;\n }\n\n}\n\nclass CircleAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n this.data.annotationType = _util.AnnotationType.CIRCLE;\n }\n\n}\n\nclass PolylineAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n this.data.annotationType = _util.AnnotationType.POLYLINE;\n const rawVertices = parameters.dict.getArray(\"Vertices\");\n this.data.vertices = [];\n\n for (let i = 0, ii = rawVertices.length; i < ii; i += 2) {\n this.data.vertices.push({\n x: rawVertices[i],\n y: rawVertices[i + 1]\n });\n }\n }\n\n}\n\nclass PolygonAnnotation extends PolylineAnnotation {\n constructor(parameters) {\n super(parameters);\n this.data.annotationType = _util.AnnotationType.POLYGON;\n }\n\n}\n\nclass CaretAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n this.data.annotationType = _util.AnnotationType.CARET;\n }\n\n}\n\nclass InkAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n this.data.annotationType = _util.AnnotationType.INK;\n const xref = parameters.xref;\n const originalInkLists = parameters.dict.getArray(\"InkList\");\n this.data.inkLists = [];\n\n for (let i = 0, ii = originalInkLists.length; i < ii; ++i) {\n this.data.inkLists.push([]);\n\n for (let j = 0, jj = originalInkLists[i].length; j < jj; j += 2) {\n this.data.inkLists[i].push({\n x: xref.fetchIfRef(originalInkLists[i][j]),\n y: xref.fetchIfRef(originalInkLists[i][j + 1])\n });\n }\n }\n }\n\n}\n\nclass HighlightAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n this.data.annotationType = _util.AnnotationType.HIGHLIGHT;\n const quadPoints = getQuadPoints(parameters.dict, this.rectangle);\n\n if (quadPoints) {\n this.data.quadPoints = quadPoints;\n }\n }\n\n}\n\nclass UnderlineAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n this.data.annotationType = _util.AnnotationType.UNDERLINE;\n const quadPoints = getQuadPoints(parameters.dict, this.rectangle);\n\n if (quadPoints) {\n this.data.quadPoints = quadPoints;\n }\n }\n\n}\n\nclass SquigglyAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n this.data.annotationType = _util.AnnotationType.SQUIGGLY;\n const quadPoints = getQuadPoints(parameters.dict, this.rectangle);\n\n if (quadPoints) {\n this.data.quadPoints = quadPoints;\n }\n }\n\n}\n\nclass StrikeOutAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n this.data.annotationType = _util.AnnotationType.STRIKEOUT;\n const quadPoints = getQuadPoints(parameters.dict, this.rectangle);\n\n if (quadPoints) {\n this.data.quadPoints = quadPoints;\n }\n }\n\n}\n\nclass StampAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n this.data.annotationType = _util.AnnotationType.STAMP;\n }\n\n}\n\nclass FileAttachmentAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n const file = new _obj.FileSpec(parameters.dict.get(\"FS\"), parameters.xref);\n this.data.annotationType = _util.AnnotationType.FILEATTACHMENT;\n this.data.file = file.serializable;\n }\n\n}\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OperatorList = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar QueueOptimizer = function QueueOptimizerClosure() {\n function addState(parentState, pattern, checkFn, iterateFn, processFn) {\n var state = parentState;\n\n for (var i = 0, ii = pattern.length - 1; i < ii; i++) {\n var item = pattern[i];\n state = state[item] || (state[item] = []);\n }\n\n state[pattern[pattern.length - 1]] = {\n checkFn,\n iterateFn,\n processFn\n };\n }\n\n function handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) {\n var iFirstPIMXO = iFirstSave + 2;\n\n for (var i = 0; i < count; i++) {\n var arg = argsArray[iFirstPIMXO + 4 * i];\n var imageMask = arg.length === 1 && arg[0];\n\n if (imageMask && imageMask.width === 1 && imageMask.height === 1 && (!imageMask.data.length || imageMask.data.length === 1 && imageMask.data[0] === 0)) {\n fnArray[iFirstPIMXO + 4 * i] = _util.OPS.paintSolidColorImageMask;\n continue;\n }\n\n break;\n }\n\n return count - i;\n }\n\n var InitialState = [];\n addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInlineImageXObject, _util.OPS.restore], null, function iterateInlineImageGroup(context, i) {\n var fnArray = context.fnArray;\n var iFirstSave = context.iCurr - 3;\n var pos = (i - iFirstSave) % 4;\n\n switch (pos) {\n case 0:\n return fnArray[i] === _util.OPS.save;\n\n case 1:\n return fnArray[i] === _util.OPS.transform;\n\n case 2:\n return fnArray[i] === _util.OPS.paintInlineImageXObject;\n\n case 3:\n return fnArray[i] === _util.OPS.restore;\n }\n\n throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\n }, function foundInlineImageGroup(context, i) {\n var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n var MAX_WIDTH = 1000;\n var IMAGE_PADDING = 1;\n var fnArray = context.fnArray,\n argsArray = context.argsArray;\n var curr = context.iCurr;\n var iFirstSave = curr - 3;\n var iFirstTransform = curr - 2;\n var iFirstPIIXO = curr - 1;\n var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK);\n\n if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n return i - (i - iFirstSave) % 4;\n }\n\n var maxX = 0;\n var map = [],\n maxLineHeight = 0;\n var currentX = IMAGE_PADDING,\n currentY = IMAGE_PADDING;\n var q;\n\n for (q = 0; q < count; q++) {\n var transform = argsArray[iFirstTransform + (q << 2)];\n var img = argsArray[iFirstPIIXO + (q << 2)][0];\n\n if (currentX + img.width > MAX_WIDTH) {\n maxX = Math.max(maxX, currentX);\n currentY += maxLineHeight + 2 * IMAGE_PADDING;\n currentX = 0;\n maxLineHeight = 0;\n }\n\n map.push({\n transform,\n x: currentX,\n y: currentY,\n w: img.width,\n h: img.height\n });\n currentX += img.width + 2 * IMAGE_PADDING;\n maxLineHeight = Math.max(maxLineHeight, img.height);\n }\n\n var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n var imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n var imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);\n var imgRowSize = imgWidth << 2;\n\n for (q = 0; q < count; q++) {\n var data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n var rowSize = map[q].w << 2;\n var dataOffset = 0;\n var offset = map[q].x + map[q].y * imgWidth << 2;\n imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n\n for (var k = 0, kk = map[q].h; k < kk; k++) {\n imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n dataOffset += rowSize;\n offset += imgRowSize;\n }\n\n imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n\n while (offset >= 0) {\n data[offset - 4] = data[offset];\n data[offset - 3] = data[offset + 1];\n data[offset - 2] = data[offset + 2];\n data[offset - 1] = data[offset + 3];\n data[offset + rowSize] = data[offset + rowSize - 4];\n data[offset + rowSize + 1] = data[offset + rowSize - 3];\n data[offset + rowSize + 2] = data[offset + rowSize - 2];\n data[offset + rowSize + 3] = data[offset + rowSize - 1];\n offset -= imgRowSize;\n }\n }\n\n fnArray.splice(iFirstSave, count * 4, _util.OPS.paintInlineImageXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [{\n width: imgWidth,\n height: imgHeight,\n kind: _util.ImageKind.RGBA_32BPP,\n data: imgData\n }, map]);\n return iFirstSave + 1;\n });\n addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageMaskXObject, _util.OPS.restore], null, function iterateImageMaskGroup(context, i) {\n var fnArray = context.fnArray;\n var iFirstSave = context.iCurr - 3;\n var pos = (i - iFirstSave) % 4;\n\n switch (pos) {\n case 0:\n return fnArray[i] === _util.OPS.save;\n\n case 1:\n return fnArray[i] === _util.OPS.transform;\n\n case 2:\n return fnArray[i] === _util.OPS.paintImageMaskXObject;\n\n case 3:\n return fnArray[i] === _util.OPS.restore;\n }\n\n throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\n }, function foundImageMaskGroup(context, i) {\n var MIN_IMAGES_IN_MASKS_BLOCK = 10;\n var MAX_IMAGES_IN_MASKS_BLOCK = 100;\n var MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n var fnArray = context.fnArray,\n argsArray = context.argsArray;\n var curr = context.iCurr;\n var iFirstSave = curr - 3;\n var iFirstTransform = curr - 2;\n var iFirstPIMXO = curr - 1;\n var count = Math.floor((i - iFirstSave) / 4);\n count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray);\n\n if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n return i - (i - iFirstSave) % 4;\n }\n\n var q;\n var isSameImage = false;\n var iTransform, transformArgs;\n var firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n const firstTransformArg0 = argsArray[iFirstTransform][0],\n firstTransformArg1 = argsArray[iFirstTransform][1],\n firstTransformArg2 = argsArray[iFirstTransform][2],\n firstTransformArg3 = argsArray[iFirstTransform][3];\n\n if (firstTransformArg1 === firstTransformArg2) {\n isSameImage = true;\n iTransform = iFirstTransform + 4;\n var iPIMXO = iFirstPIMXO + 4;\n\n for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n transformArgs = argsArray[iTransform];\n\n if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== firstTransformArg1 || transformArgs[2] !== firstTransformArg2 || transformArgs[3] !== firstTransformArg3) {\n if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n isSameImage = false;\n } else {\n count = q;\n }\n\n break;\n }\n }\n }\n\n if (isSameImage) {\n count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n var positions = new Float32Array(count * 2);\n iTransform = iFirstTransform;\n\n for (q = 0; q < count; q++, iTransform += 4) {\n transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n\n fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg1, firstTransformArg2, firstTransformArg3, positions]);\n } else {\n count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n var images = [];\n\n for (q = 0; q < count; q++) {\n transformArgs = argsArray[iFirstTransform + (q << 2)];\n var maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n images.push({\n data: maskParams.data,\n width: maskParams.width,\n height: maskParams.height,\n transform: transformArgs\n });\n }\n\n fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [images]);\n }\n\n return iFirstSave + 1;\n });\n addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageXObject, _util.OPS.restore], function (context) {\n var argsArray = context.argsArray;\n var iFirstTransform = context.iCurr - 2;\n return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0;\n }, function iterateImageGroup(context, i) {\n var fnArray = context.fnArray,\n argsArray = context.argsArray;\n var iFirstSave = context.iCurr - 3;\n var pos = (i - iFirstSave) % 4;\n\n switch (pos) {\n case 0:\n return fnArray[i] === _util.OPS.save;\n\n case 1:\n if (fnArray[i] !== _util.OPS.transform) {\n return false;\n }\n\n var iFirstTransform = context.iCurr - 2;\n var firstTransformArg0 = argsArray[iFirstTransform][0];\n var firstTransformArg3 = argsArray[iFirstTransform][3];\n\n if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || argsArray[i][3] !== firstTransformArg3) {\n return false;\n }\n\n return true;\n\n case 2:\n if (fnArray[i] !== _util.OPS.paintImageXObject) {\n return false;\n }\n\n var iFirstPIXO = context.iCurr - 1;\n var firstPIXOArg0 = argsArray[iFirstPIXO][0];\n\n if (argsArray[i][0] !== firstPIXOArg0) {\n return false;\n }\n\n return true;\n\n case 3:\n return fnArray[i] === _util.OPS.restore;\n }\n\n throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\n }, function (context, i) {\n var MIN_IMAGES_IN_BLOCK = 3;\n var MAX_IMAGES_IN_BLOCK = 1000;\n var fnArray = context.fnArray,\n argsArray = context.argsArray;\n var curr = context.iCurr;\n var iFirstSave = curr - 3;\n var iFirstTransform = curr - 2;\n var iFirstPIXO = curr - 1;\n var firstPIXOArg0 = argsArray[iFirstPIXO][0];\n var firstTransformArg0 = argsArray[iFirstTransform][0];\n var firstTransformArg3 = argsArray[iFirstTransform][3];\n var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK);\n\n if (count < MIN_IMAGES_IN_BLOCK) {\n return i - (i - iFirstSave) % 4;\n }\n\n var positions = new Float32Array(count * 2);\n var iTransform = iFirstTransform;\n\n for (var q = 0; q < count; q++, iTransform += 4) {\n var transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n\n var args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions];\n fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, args);\n return iFirstSave + 1;\n });\n addState(InitialState, [_util.OPS.beginText, _util.OPS.setFont, _util.OPS.setTextMatrix, _util.OPS.showText, _util.OPS.endText], null, function iterateShowTextGroup(context, i) {\n var fnArray = context.fnArray,\n argsArray = context.argsArray;\n var iFirstSave = context.iCurr - 4;\n var pos = (i - iFirstSave) % 5;\n\n switch (pos) {\n case 0:\n return fnArray[i] === _util.OPS.beginText;\n\n case 1:\n return fnArray[i] === _util.OPS.setFont;\n\n case 2:\n return fnArray[i] === _util.OPS.setTextMatrix;\n\n case 3:\n if (fnArray[i] !== _util.OPS.showText) {\n return false;\n }\n\n var iFirstSetFont = context.iCurr - 3;\n var firstSetFontArg0 = argsArray[iFirstSetFont][0];\n var firstSetFontArg1 = argsArray[iFirstSetFont][1];\n\n if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) {\n return false;\n }\n\n return true;\n\n case 4:\n return fnArray[i] === _util.OPS.endText;\n }\n\n throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\n }, function (context, i) {\n var MIN_CHARS_IN_BLOCK = 3;\n var MAX_CHARS_IN_BLOCK = 1000;\n var fnArray = context.fnArray,\n argsArray = context.argsArray;\n var curr = context.iCurr;\n var iFirstBeginText = curr - 4;\n var iFirstSetFont = curr - 3;\n var iFirstSetTextMatrix = curr - 2;\n var iFirstShowText = curr - 1;\n var iFirstEndText = curr;\n var firstSetFontArg0 = argsArray[iFirstSetFont][0];\n var firstSetFontArg1 = argsArray[iFirstSetFont][1];\n var count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK);\n\n if (count < MIN_CHARS_IN_BLOCK) {\n return i - (i - iFirstBeginText) % 5;\n }\n\n var iFirst = iFirstBeginText;\n\n if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) {\n count++;\n iFirst -= 5;\n }\n\n var iEndText = iFirst + 4;\n\n for (var q = 1; q < count; q++) {\n fnArray.splice(iEndText, 3);\n argsArray.splice(iEndText, 3);\n iEndText += 2;\n }\n\n return iEndText + 1;\n });\n\n function QueueOptimizer(queue) {\n this.queue = queue;\n this.state = null;\n this.context = {\n iCurr: 0,\n fnArray: queue.fnArray,\n argsArray: queue.argsArray\n };\n this.match = null;\n this.lastProcessed = 0;\n }\n\n QueueOptimizer.prototype = {\n _optimize() {\n const fnArray = this.queue.fnArray;\n let i = this.lastProcessed,\n ii = fnArray.length;\n let state = this.state;\n let match = this.match;\n\n if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n this.lastProcessed = ii;\n return;\n }\n\n const context = this.context;\n\n while (i < ii) {\n if (match) {\n const iterate = (0, match.iterateFn)(context, i);\n\n if (iterate) {\n i++;\n continue;\n }\n\n i = (0, match.processFn)(context, i + 1);\n ii = fnArray.length;\n match = null;\n state = null;\n\n if (i >= ii) {\n break;\n }\n }\n\n state = (state || InitialState)[fnArray[i]];\n\n if (!state || Array.isArray(state)) {\n i++;\n continue;\n }\n\n context.iCurr = i;\n i++;\n\n if (state.checkFn && !(0, state.checkFn)(context)) {\n state = null;\n continue;\n }\n\n match = state;\n state = null;\n }\n\n this.state = state;\n this.match = match;\n this.lastProcessed = i;\n },\n\n push(fn, args) {\n this.queue.fnArray.push(fn);\n this.queue.argsArray.push(args);\n\n this._optimize();\n },\n\n flush() {\n while (this.match) {\n const length = this.queue.fnArray.length;\n this.lastProcessed = (0, this.match.processFn)(this.context, length);\n this.match = null;\n this.state = null;\n\n this._optimize();\n }\n },\n\n reset() {\n this.state = null;\n this.match = null;\n this.lastProcessed = 0;\n }\n\n };\n return QueueOptimizer;\n}();\n\nvar NullOptimizer = function NullOptimizerClosure() {\n function NullOptimizer(queue) {\n this.queue = queue;\n }\n\n NullOptimizer.prototype = {\n push(fn, args) {\n this.queue.fnArray.push(fn);\n this.queue.argsArray.push(args);\n },\n\n flush() {},\n\n reset() {}\n\n };\n return NullOptimizer;\n}();\n\nvar OperatorList = function OperatorListClosure() {\n var CHUNK_SIZE = 1000;\n var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5;\n\n function OperatorList(intent, streamSink) {\n this._streamSink = streamSink;\n this.fnArray = [];\n this.argsArray = [];\n\n if (streamSink && intent !== \"oplist\") {\n this.optimizer = new QueueOptimizer(this);\n } else {\n this.optimizer = new NullOptimizer(this);\n }\n\n this.dependencies = new Set();\n this._totalLength = 0;\n this.weight = 0;\n this._resolved = streamSink ? null : Promise.resolve();\n }\n\n OperatorList.prototype = {\n get length() {\n return this.argsArray.length;\n },\n\n get ready() {\n return this._resolved || this._streamSink.ready;\n },\n\n get totalLength() {\n return this._totalLength + this.length;\n },\n\n addOp(fn, args) {\n this.optimizer.push(fn, args);\n this.weight++;\n\n if (this._streamSink) {\n if (this.weight >= CHUNK_SIZE) {\n this.flush();\n } else if (this.weight >= CHUNK_SIZE_ABOUT && (fn === _util.OPS.restore || fn === _util.OPS.endText)) {\n this.flush();\n }\n }\n },\n\n addDependency(dependency) {\n if (this.dependencies.has(dependency)) {\n return;\n }\n\n this.dependencies.add(dependency);\n this.addOp(_util.OPS.dependency, [dependency]);\n },\n\n addDependencies(dependencies) {\n for (const dependency of dependencies) {\n this.addDependency(dependency);\n }\n },\n\n addOpList(opList) {\n if (!(opList instanceof OperatorList)) {\n (0, _util.warn)('addOpList - ignoring invalid \"opList\" parameter.');\n return;\n }\n\n for (const dependency of opList.dependencies) {\n this.dependencies.add(dependency);\n }\n\n for (var i = 0, ii = opList.length; i < ii; i++) {\n this.addOp(opList.fnArray[i], opList.argsArray[i]);\n }\n },\n\n getIR() {\n return {\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n length: this.length\n };\n },\n\n get _transfers() {\n const transfers = [];\n const {\n fnArray,\n argsArray,\n length\n } = this;\n\n for (let i = 0; i < length; i++) {\n switch (fnArray[i]) {\n case _util.OPS.paintInlineImageXObject:\n case _util.OPS.paintInlineImageXObjectGroup:\n case _util.OPS.paintImageMaskXObject:\n const arg = argsArray[i][0];\n ;\n\n if (!arg.cached) {\n transfers.push(arg.data.buffer);\n }\n\n break;\n }\n }\n\n return transfers;\n },\n\n flush(lastChunk = false) {\n this.optimizer.flush();\n const length = this.length;\n this._totalLength += length;\n\n this._streamSink.enqueue({\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n lastChunk,\n length\n }, 1, this._transfers);\n\n this.dependencies.clear();\n this.fnArray.length = 0;\n this.argsArray.length = 0;\n this.weight = 0;\n this.optimizer.reset();\n }\n\n };\n return OperatorList;\n}();\n\nexports.OperatorList = OperatorList;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.writeDict = writeDict;\nexports.incrementalUpdate = incrementalUpdate;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _crypto = __w_pdfjs_require__(22);\n\nfunction writeDict(dict, buffer, transform) {\n buffer.push(\"<<\");\n\n for (const key of dict.getKeys()) {\n buffer.push(` /${key} `);\n writeValue(dict.getRaw(key), buffer, transform);\n }\n\n buffer.push(\">>\");\n}\n\nfunction writeStream(stream, buffer, transform) {\n writeDict(stream.dict, buffer, transform);\n buffer.push(\" stream\\n\");\n let string = (0, _util.bytesToString)(stream.getBytes());\n\n if (transform !== null) {\n string = transform.encryptString(string);\n }\n\n buffer.push(string);\n buffer.push(\"\\nendstream\\n\");\n}\n\nfunction writeArray(array, buffer, transform) {\n buffer.push(\"[\");\n let first = true;\n\n for (const val of array) {\n if (!first) {\n buffer.push(\" \");\n } else {\n first = false;\n }\n\n writeValue(val, buffer, transform);\n }\n\n buffer.push(\"]\");\n}\n\nfunction numberToString(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n const roundedValue = Math.round(value * 100);\n\n if (roundedValue % 100 === 0) {\n return (roundedValue / 100).toString();\n }\n\n if (roundedValue % 10 === 0) {\n return value.toFixed(1);\n }\n\n return value.toFixed(2);\n}\n\nfunction writeValue(value, buffer, transform) {\n if ((0, _primitives.isName)(value)) {\n buffer.push(`/${value.name}`);\n } else if ((0, _primitives.isRef)(value)) {\n buffer.push(`${value.num} ${value.gen} R`);\n } else if (Array.isArray(value)) {\n writeArray(value, buffer, transform);\n } else if (typeof value === \"string\") {\n if (transform !== null) {\n value = transform.encryptString(value);\n }\n\n buffer.push(`(${(0, _util.escapeString)(value)})`);\n } else if (typeof value === \"number\") {\n buffer.push(numberToString(value));\n } else if ((0, _primitives.isDict)(value)) {\n writeDict(value, buffer, transform);\n } else if ((0, _primitives.isStream)(value)) {\n writeStream(value, buffer, transform);\n }\n}\n\nfunction writeInt(number, size, offset, buffer) {\n for (let i = size + offset - 1; i > offset - 1; i--) {\n buffer[i] = number & 0xff;\n number >>= 8;\n }\n\n return offset + size;\n}\n\nfunction writeString(string, offset, buffer) {\n for (let i = 0, len = string.length; i < len; i++) {\n buffer[offset + i] = string.charCodeAt(i) & 0xff;\n }\n}\n\nfunction computeMD5(filesize, xrefInfo) {\n const time = Math.floor(Date.now() / 1000);\n const filename = xrefInfo.filename || \"\";\n const md5Buffer = [time.toString(), filename, filesize.toString()];\n let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0);\n\n for (const value of Object.values(xrefInfo.info)) {\n md5Buffer.push(value);\n md5BufferLen += value.length;\n }\n\n const array = new Uint8Array(md5BufferLen);\n let offset = 0;\n\n for (const str of md5Buffer) {\n writeString(str, offset, array);\n offset += str.length;\n }\n\n return (0, _util.bytesToString)((0, _crypto.calculateMD5)(array));\n}\n\nfunction incrementalUpdate(originalData, xrefInfo, newRefs) {\n const newXref = new _primitives.Dict(null);\n const refForXrefTable = xrefInfo.newRef;\n let buffer, baseOffset;\n const lastByte = originalData[originalData.length - 1];\n\n if (lastByte === 0x0a || lastByte === 0x0d) {\n buffer = [];\n baseOffset = originalData.length;\n } else {\n buffer = [\"\\n\"];\n baseOffset = originalData.length + 1;\n }\n\n newXref.set(\"Size\", refForXrefTable.num + 1);\n newXref.set(\"Prev\", xrefInfo.startXRef);\n newXref.set(\"Type\", _primitives.Name.get(\"XRef\"));\n\n if (xrefInfo.rootRef !== null) {\n newXref.set(\"Root\", xrefInfo.rootRef);\n }\n\n if (xrefInfo.infoRef !== null) {\n newXref.set(\"Info\", xrefInfo.infoRef);\n }\n\n if (xrefInfo.encrypt !== null) {\n newXref.set(\"Encrypt\", xrefInfo.encrypt);\n }\n\n newRefs.push({\n ref: refForXrefTable,\n data: \"\"\n });\n newRefs = newRefs.sort((a, b) => {\n return a.ref.num - b.ref.num;\n });\n const xrefTableData = [[0, 1, 0xffff]];\n const indexes = [0, 1];\n let maxOffset = 0;\n\n for (const {\n ref,\n data\n } of newRefs) {\n maxOffset = Math.max(maxOffset, baseOffset);\n xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]);\n baseOffset += data.length;\n indexes.push(ref.num);\n indexes.push(1);\n buffer.push(data);\n }\n\n newXref.set(\"Index\", indexes);\n\n if (xrefInfo.fileIds.length !== 0) {\n const md5 = computeMD5(baseOffset, xrefInfo);\n newXref.set(\"ID\", [xrefInfo.fileIds[0], md5]);\n }\n\n const offsetSize = Math.ceil(Math.log2(maxOffset) / 8);\n const sizes = [1, offsetSize, 2];\n const structSize = sizes[0] + sizes[1] + sizes[2];\n const tableLength = structSize * xrefTableData.length;\n newXref.set(\"W\", sizes);\n newXref.set(\"Length\", tableLength);\n buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\\n`);\n writeDict(newXref, buffer, null);\n buffer.push(\" stream\\n\");\n const bufferLen = buffer.reduce((a, str) => a + str.length, 0);\n const footer = `\\nendstream\\nendobj\\nstartxref\\n${baseOffset}\\n%%EOF\\n`;\n const array = new Uint8Array(originalData.length + bufferLen + tableLength + footer.length);\n array.set(originalData);\n let offset = originalData.length;\n\n for (const str of buffer) {\n writeString(str, offset, array);\n offset += str.length;\n }\n\n for (const [type, objOffset, gen] of xrefTableData) {\n offset = writeInt(type, sizes[0], offset, array);\n offset = writeInt(objOffset, sizes[1], offset, array);\n offset = writeInt(gen, sizes[2], offset, array);\n }\n\n writeString(footer, offset, array);\n return array;\n}\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PartialEvaluator = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _cmap = __w_pdfjs_require__(29);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _fonts = __w_pdfjs_require__(30);\n\nvar _encodings = __w_pdfjs_require__(33);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _unicode = __w_pdfjs_require__(36);\n\nvar _standard_fonts = __w_pdfjs_require__(35);\n\nvar _pattern = __w_pdfjs_require__(39);\n\nvar _function = __w_pdfjs_require__(40);\n\nvar _parser = __w_pdfjs_require__(11);\n\nvar _image_utils = __w_pdfjs_require__(24);\n\nvar _bidi = __w_pdfjs_require__(42);\n\nvar _colorspace = __w_pdfjs_require__(23);\n\nvar _stream = __w_pdfjs_require__(12);\n\nvar _glyphlist = __w_pdfjs_require__(34);\n\nvar _metrics = __w_pdfjs_require__(43);\n\nvar _murmurhash = __w_pdfjs_require__(44);\n\nvar _operator_list = __w_pdfjs_require__(26);\n\nvar _image = __w_pdfjs_require__(45);\n\nconst DefaultPartialEvaluatorOptions = Object.freeze({\n maxImageSize: -1,\n disableFontFace: false,\n ignoreErrors: false,\n isEvalSupported: true,\n fontExtraProperties: false\n});\nconst PatternType = {\n TILING: 1,\n SHADING: 2\n};\nconst deferred = Promise.resolve();\n\nfunction normalizeBlendMode(value, parsingArray = false) {\n if (Array.isArray(value)) {\n for (let i = 0, ii = value.length; i < ii; i++) {\n const maybeBM = normalizeBlendMode(value[i], true);\n\n if (maybeBM) {\n return maybeBM;\n }\n }\n\n (0, _util.warn)(`Unsupported blend mode Array: ${value}`);\n return \"source-over\";\n }\n\n if (!(0, _primitives.isName)(value)) {\n if (parsingArray) {\n return null;\n }\n\n return \"source-over\";\n }\n\n switch (value.name) {\n case \"Normal\":\n case \"Compatible\":\n return \"source-over\";\n\n case \"Multiply\":\n return \"multiply\";\n\n case \"Screen\":\n return \"screen\";\n\n case \"Overlay\":\n return \"overlay\";\n\n case \"Darken\":\n return \"darken\";\n\n case \"Lighten\":\n return \"lighten\";\n\n case \"ColorDodge\":\n return \"color-dodge\";\n\n case \"ColorBurn\":\n return \"color-burn\";\n\n case \"HardLight\":\n return \"hard-light\";\n\n case \"SoftLight\":\n return \"soft-light\";\n\n case \"Difference\":\n return \"difference\";\n\n case \"Exclusion\":\n return \"exclusion\";\n\n case \"Hue\":\n return \"hue\";\n\n case \"Saturation\":\n return \"saturation\";\n\n case \"Color\":\n return \"color\";\n\n case \"Luminosity\":\n return \"luminosity\";\n }\n\n if (parsingArray) {\n return null;\n }\n\n (0, _util.warn)(`Unsupported blend mode: ${value.name}`);\n return \"source-over\";\n}\n\nclass TimeSlotManager {\n static get TIME_SLOT_DURATION_MS() {\n return (0, _util.shadow)(this, \"TIME_SLOT_DURATION_MS\", 20);\n }\n\n static get CHECK_TIME_EVERY() {\n return (0, _util.shadow)(this, \"CHECK_TIME_EVERY\", 100);\n }\n\n constructor() {\n this.reset();\n }\n\n check() {\n if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {\n return false;\n }\n\n this.checked = 0;\n return this.endTime <= Date.now();\n }\n\n reset() {\n this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;\n this.checked = 0;\n }\n\n}\n\nclass PartialEvaluator {\n constructor({\n xref,\n handler,\n pageIndex,\n idFactory,\n fontCache,\n builtInCMapCache,\n globalImageCache,\n options = null\n }) {\n this.xref = xref;\n this.handler = handler;\n this.pageIndex = pageIndex;\n this.idFactory = idFactory;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.globalImageCache = globalImageCache;\n this.options = options || DefaultPartialEvaluatorOptions;\n this.parsingType3Font = false;\n this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);\n }\n\n get _pdfFunctionFactory() {\n const pdfFunctionFactory = new _function.PDFFunctionFactory({\n xref: this.xref,\n isEvalSupported: this.options.isEvalSupported\n });\n return (0, _util.shadow)(this, \"_pdfFunctionFactory\", pdfFunctionFactory);\n }\n\n clone(newOptions = DefaultPartialEvaluatorOptions) {\n var newEvaluator = Object.create(this);\n newEvaluator.options = newOptions;\n return newEvaluator;\n }\n\n hasBlendModes(resources) {\n if (!(resources instanceof _primitives.Dict)) {\n return false;\n }\n\n const processed = new _primitives.RefSet();\n\n if (resources.objId) {\n processed.put(resources.objId);\n }\n\n var nodes = [resources],\n xref = this.xref;\n\n while (nodes.length) {\n var node = nodes.shift();\n var graphicStates = node.get(\"ExtGState\");\n\n if (graphicStates instanceof _primitives.Dict) {\n for (let graphicState of graphicStates.getRawValues()) {\n if (graphicState instanceof _primitives.Ref) {\n if (processed.has(graphicState)) {\n continue;\n }\n\n try {\n graphicState = xref.fetch(graphicState);\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n processed.put(graphicState);\n (0, _util.info)(`hasBlendModes - ignoring ExtGState: \"${ex}\".`);\n continue;\n }\n }\n\n if (!(graphicState instanceof _primitives.Dict)) {\n continue;\n }\n\n if (graphicState.objId) {\n processed.put(graphicState.objId);\n }\n\n const bm = graphicState.get(\"BM\");\n\n if (bm instanceof _primitives.Name) {\n if (bm.name !== \"Normal\") {\n return true;\n }\n\n continue;\n }\n\n if (bm !== undefined && Array.isArray(bm)) {\n for (const element of bm) {\n if (element instanceof _primitives.Name && element.name !== \"Normal\") {\n return true;\n }\n }\n }\n }\n }\n\n var xObjects = node.get(\"XObject\");\n\n if (!(xObjects instanceof _primitives.Dict)) {\n continue;\n }\n\n for (let xObject of xObjects.getRawValues()) {\n if (xObject instanceof _primitives.Ref) {\n if (processed.has(xObject)) {\n continue;\n }\n\n try {\n xObject = xref.fetch(xObject);\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n processed.put(xObject);\n (0, _util.info)(`hasBlendModes - ignoring XObject: \"${ex}\".`);\n continue;\n }\n }\n\n if (!(0, _primitives.isStream)(xObject)) {\n continue;\n }\n\n if (xObject.dict.objId) {\n processed.put(xObject.dict.objId);\n }\n\n var xResources = xObject.dict.get(\"Resources\");\n\n if (!(xResources instanceof _primitives.Dict)) {\n continue;\n }\n\n if (xResources.objId && processed.has(xResources.objId)) {\n continue;\n }\n\n nodes.push(xResources);\n\n if (xResources.objId) {\n processed.put(xResources.objId);\n }\n }\n }\n\n return false;\n }\n\n async fetchBuiltInCMap(name) {\n const cachedData = this.builtInCMapCache.get(name);\n\n if (cachedData) {\n return cachedData;\n }\n\n const readableStream = this.handler.sendWithStream(\"FetchBuiltInCMap\", {\n name\n });\n const reader = readableStream.getReader();\n const data = await new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n return;\n }\n\n resolve(value);\n pump();\n }, reject);\n }\n\n pump();\n });\n\n if (data.compressionType !== _util.CMapCompressionType.NONE) {\n this.builtInCMapCache.set(name, data);\n }\n\n return data;\n }\n\n async buildFormXObject(resources, xobj, smask, operatorList, task, initialState, localColorSpaceCache) {\n var dict = xobj.dict;\n var matrix = dict.getArray(\"Matrix\");\n var bbox = dict.getArray(\"BBox\");\n\n if (Array.isArray(bbox) && bbox.length === 4) {\n bbox = _util.Util.normalizeRect(bbox);\n } else {\n bbox = null;\n }\n\n let optionalContent = null;\n\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(dict.get(\"OC\"), resources);\n operatorList.addOp(_util.OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n\n var group = dict.get(\"Group\");\n\n if (group) {\n var groupOptions = {\n matrix,\n bbox,\n smask,\n isolated: false,\n knockout: false\n };\n var groupSubtype = group.get(\"S\");\n var colorSpace = null;\n\n if ((0, _primitives.isName)(groupSubtype, \"Transparency\")) {\n groupOptions.isolated = group.get(\"I\") || false;\n groupOptions.knockout = group.get(\"K\") || false;\n\n if (group.has(\"CS\")) {\n const cs = group.getRaw(\"CS\");\n\n const cachedColorSpace = _colorspace.ColorSpace.getCached(cs, this.xref, localColorSpaceCache);\n\n if (cachedColorSpace) {\n colorSpace = cachedColorSpace;\n } else {\n colorSpace = await this.parseColorSpace({\n cs,\n resources,\n localColorSpaceCache\n });\n }\n }\n }\n\n if (smask && smask.backdrop) {\n colorSpace = colorSpace || _colorspace.ColorSpace.singletons.rgb;\n smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n }\n\n operatorList.addOp(_util.OPS.beginGroup, [groupOptions]);\n }\n\n operatorList.addOp(_util.OPS.paintFormXObjectBegin, [matrix, bbox]);\n return this.getOperatorList({\n stream: xobj,\n task,\n resources: dict.get(\"Resources\") || resources,\n operatorList,\n initialState\n }).then(function () {\n operatorList.addOp(_util.OPS.paintFormXObjectEnd, []);\n\n if (group) {\n operatorList.addOp(_util.OPS.endGroup, [groupOptions]);\n }\n\n if (optionalContent) {\n operatorList.addOp(_util.OPS.endMarkedContent, []);\n }\n });\n }\n\n _sendImgData(objId, imgData, cacheGlobally = false) {\n const transfers = imgData ? [imgData.data.buffer] : null;\n\n if (this.parsingType3Font || cacheGlobally) {\n return this.handler.send(\"commonobj\", [objId, \"Image\", imgData], transfers);\n }\n\n return this.handler.send(\"obj\", [objId, this.pageIndex, \"Image\", imgData], transfers);\n }\n\n async buildPaintImageXObject({\n resources,\n image,\n isInline = false,\n operatorList,\n cacheKey,\n localImageCache,\n localColorSpaceCache\n }) {\n var dict = image.dict;\n const imageRef = dict.objId;\n var w = dict.get(\"Width\", \"W\");\n var h = dict.get(\"Height\", \"H\");\n\n if (!(w && (0, _util.isNum)(w)) || !(h && (0, _util.isNum)(h))) {\n (0, _util.warn)(\"Image dimensions are missing, or not numbers.\");\n return undefined;\n }\n\n var maxImageSize = this.options.maxImageSize;\n\n if (maxImageSize !== -1 && w * h > maxImageSize) {\n (0, _util.warn)(\"Image exceeded maximum allowed size and was removed.\");\n return undefined;\n }\n\n var imageMask = dict.get(\"ImageMask\", \"IM\") || false;\n var imgData, args;\n\n if (imageMask) {\n var width = dict.get(\"Width\", \"W\");\n var height = dict.get(\"Height\", \"H\");\n var bitStrideLength = width + 7 >> 3;\n var imgArray = image.getBytes(bitStrideLength * height, true);\n var decode = dict.getArray(\"Decode\", \"D\");\n imgData = _image.PDFImage.createMask({\n imgArray,\n width,\n height,\n imageIsFromDecodeStream: image instanceof _stream.DecodeStream,\n inverseDecode: !!decode && decode[0] > 0\n });\n imgData.cached = !!cacheKey;\n args = [imgData];\n operatorList.addOp(_util.OPS.paintImageMaskXObject, args);\n\n if (cacheKey) {\n localImageCache.set(cacheKey, imageRef, {\n fn: _util.OPS.paintImageMaskXObject,\n args\n });\n }\n\n return undefined;\n }\n\n var softMask = dict.get(\"SMask\", \"SM\") || false;\n var mask = dict.get(\"Mask\") || false;\n var SMALL_IMAGE_DIMENSIONS = 200;\n\n if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) {\n const imageObj = new _image.PDFImage({\n xref: this.xref,\n res: resources,\n image,\n isInline,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache\n });\n imgData = imageObj.createImageData(true);\n operatorList.addOp(_util.OPS.paintInlineImageXObject, [imgData]);\n return undefined;\n }\n\n let objId = `img_${this.idFactory.createObjId()}`,\n cacheGlobally = false;\n\n if (this.parsingType3Font) {\n objId = `${this.idFactory.getDocId()}_type3_${objId}`;\n } else if (imageRef) {\n cacheGlobally = this.globalImageCache.shouldCache(imageRef, this.pageIndex);\n\n if (cacheGlobally) {\n objId = `${this.idFactory.getDocId()}_${objId}`;\n }\n }\n\n operatorList.addDependency(objId);\n args = [objId, w, h];\n\n _image.PDFImage.buildImage({\n xref: this.xref,\n res: resources,\n image,\n isInline,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache\n }).then(imageObj => {\n imgData = imageObj.createImageData(false);\n return this._sendImgData(objId, imgData, cacheGlobally);\n }).catch(reason => {\n (0, _util.warn)(`Unable to decode image \"${objId}\": \"${reason}\".`);\n return this._sendImgData(objId, null, cacheGlobally);\n });\n\n operatorList.addOp(_util.OPS.paintImageXObject, args);\n\n if (cacheKey) {\n localImageCache.set(cacheKey, imageRef, {\n fn: _util.OPS.paintImageXObject,\n args\n });\n\n if (imageRef) {\n (0, _util.assert)(!isInline, \"Cannot cache an inline image globally.\");\n this.globalImageCache.addPageIndex(imageRef, this.pageIndex);\n\n if (cacheGlobally) {\n this.globalImageCache.setData(imageRef, {\n objId,\n fn: _util.OPS.paintImageXObject,\n args\n });\n }\n }\n }\n\n return undefined;\n }\n\n handleSMask(smask, resources, operatorList, task, stateManager, localColorSpaceCache) {\n var smaskContent = smask.get(\"G\");\n var smaskOptions = {\n subtype: smask.get(\"S\").name,\n backdrop: smask.get(\"BC\")\n };\n var transferObj = smask.get(\"TR\");\n\n if ((0, _function.isPDFFunction)(transferObj)) {\n const transferFn = this._pdfFunctionFactory.create(transferObj);\n\n var transferMap = new Uint8Array(256);\n var tmp = new Float32Array(1);\n\n for (var i = 0; i < 256; i++) {\n tmp[0] = i / 255;\n transferFn(tmp, 0, tmp, 0);\n transferMap[i] = tmp[0] * 255 | 0;\n }\n\n smaskOptions.transferMap = transferMap;\n }\n\n return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, stateManager.state.clone(), localColorSpaceCache);\n }\n\n handleTransferFunction(tr) {\n let transferArray;\n\n if (Array.isArray(tr)) {\n transferArray = tr;\n } else if ((0, _function.isPDFFunction)(tr)) {\n transferArray = [tr];\n } else {\n return null;\n }\n\n const transferMaps = [];\n let numFns = 0,\n numEffectfulFns = 0;\n\n for (const entry of transferArray) {\n const transferObj = this.xref.fetchIfRef(entry);\n numFns++;\n\n if ((0, _primitives.isName)(transferObj, \"Identity\")) {\n transferMaps.push(null);\n continue;\n } else if (!(0, _function.isPDFFunction)(transferObj)) {\n return null;\n }\n\n const transferFn = this._pdfFunctionFactory.create(transferObj);\n\n const transferMap = new Uint8Array(256),\n tmp = new Float32Array(1);\n\n for (let j = 0; j < 256; j++) {\n tmp[0] = j / 255;\n transferFn(tmp, 0, tmp, 0);\n transferMap[j] = tmp[0] * 255 | 0;\n }\n\n transferMaps.push(transferMap);\n numEffectfulFns++;\n }\n\n if (!(numFns === 1 || numFns === 4)) {\n return null;\n }\n\n if (numEffectfulFns === 0) {\n return null;\n }\n\n return transferMaps;\n }\n\n handleTilingType(fn, args, resources, pattern, patternDict, operatorList, task) {\n const tilingOpList = new _operator_list.OperatorList();\n\n const patternResources = _primitives.Dict.merge({\n xref: this.xref,\n dictArray: [patternDict.get(\"Resources\"), resources]\n });\n\n return this.getOperatorList({\n stream: pattern,\n task,\n resources: patternResources,\n operatorList: tilingOpList\n }).then(function () {\n return (0, _pattern.getTilingPatternIR)({\n fnArray: tilingOpList.fnArray,\n argsArray: tilingOpList.argsArray\n }, patternDict, args);\n }).then(function (tilingPatternIR) {\n operatorList.addDependencies(tilingOpList.dependencies);\n operatorList.addOp(fn, tilingPatternIR);\n }, reason => {\n if (reason instanceof _util.AbortException) {\n return;\n }\n\n if (this.options.ignoreErrors) {\n this.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorTilingPattern\n });\n (0, _util.warn)(`handleTilingType - ignoring pattern: \"${reason}\".`);\n return;\n }\n\n throw reason;\n });\n }\n\n handleSetFont(resources, fontArgs, fontRef, operatorList, task, state) {\n var fontName,\n fontSize = 0;\n\n if (fontArgs) {\n fontArgs = fontArgs.slice();\n fontName = fontArgs[0].name;\n fontSize = fontArgs[1];\n }\n\n return this.loadFont(fontName, fontRef, resources).then(translated => {\n if (!translated.font.isType3Font) {\n return translated;\n }\n\n return translated.loadType3Data(this, resources, task).then(function () {\n operatorList.addDependencies(translated.type3Dependencies);\n return translated;\n }).catch(reason => {\n this.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadType3\n });\n return new TranslatedFont({\n loadedName: \"g_font_error\",\n font: new _fonts.ErrorFont(`Type3 font load error: ${reason}`),\n dict: translated.font,\n extraProperties: this.options.fontExtraProperties\n });\n });\n }).then(translated => {\n state.font = translated.font;\n state.fontSize = fontSize;\n state.fontName = fontName;\n translated.send(this.handler);\n return translated.loadedName;\n });\n }\n\n handleText(chars, state) {\n const font = state.font;\n const glyphs = font.charsToGlyphs(chars);\n\n if (font.data) {\n const isAddToPathSet = !!(state.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);\n\n if (isAddToPathSet || state.fillColorSpace.name === \"Pattern\" || font.disableFontFace || this.options.disableFontFace) {\n PartialEvaluator.buildFontPaths(font, glyphs, this.handler);\n }\n }\n\n return glyphs;\n }\n\n ensureStateFont(state) {\n if (state.font) {\n return;\n }\n\n const reason = new _util.FormatError(\"Missing setFont (Tf) operator before text rendering operator.\");\n\n if (this.options.ignoreErrors) {\n this.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorFontState\n });\n (0, _util.warn)(`ensureStateFont: \"${reason}\".`);\n return;\n }\n\n throw reason;\n }\n\n async setGState({\n resources,\n gState,\n operatorList,\n cacheKey,\n task,\n stateManager,\n localGStateCache,\n localColorSpaceCache\n }) {\n const gStateRef = gState.objId;\n let isSimpleGState = true;\n var gStateObj = [];\n var gStateKeys = gState.getKeys();\n var promise = Promise.resolve();\n\n for (var i = 0, ii = gStateKeys.length; i < ii; i++) {\n const key = gStateKeys[i];\n const value = gState.get(key);\n\n switch (key) {\n case \"Type\":\n break;\n\n case \"LW\":\n case \"LC\":\n case \"LJ\":\n case \"ML\":\n case \"D\":\n case \"RI\":\n case \"FL\":\n case \"CA\":\n case \"ca\":\n gStateObj.push([key, value]);\n break;\n\n case \"Font\":\n isSimpleGState = false;\n promise = promise.then(() => {\n return this.handleSetFont(resources, null, value[0], operatorList, task, stateManager.state).then(function (loadedName) {\n operatorList.addDependency(loadedName);\n gStateObj.push([key, [loadedName, value[1]]]);\n });\n });\n break;\n\n case \"BM\":\n gStateObj.push([key, normalizeBlendMode(value)]);\n break;\n\n case \"SMask\":\n if ((0, _primitives.isName)(value, \"None\")) {\n gStateObj.push([key, false]);\n break;\n }\n\n if ((0, _primitives.isDict)(value)) {\n isSimpleGState = false;\n promise = promise.then(() => {\n return this.handleSMask(value, resources, operatorList, task, stateManager, localColorSpaceCache);\n });\n gStateObj.push([key, true]);\n } else {\n (0, _util.warn)(\"Unsupported SMask type\");\n }\n\n break;\n\n case \"TR\":\n const transferMaps = this.handleTransferFunction(value);\n gStateObj.push([key, transferMaps]);\n break;\n\n case \"OP\":\n case \"op\":\n case \"OPM\":\n case \"BG\":\n case \"BG2\":\n case \"UCR\":\n case \"UCR2\":\n case \"TR2\":\n case \"HT\":\n case \"SM\":\n case \"SA\":\n case \"AIS\":\n case \"TK\":\n (0, _util.info)(\"graphic state operator \" + key);\n break;\n\n default:\n (0, _util.info)(\"Unknown graphic state operator \" + key);\n break;\n }\n }\n\n return promise.then(function () {\n if (gStateObj.length > 0) {\n operatorList.addOp(_util.OPS.setGState, [gStateObj]);\n }\n\n if (isSimpleGState) {\n localGStateCache.set(cacheKey, gStateRef, gStateObj);\n }\n });\n }\n\n loadFont(fontName, font, resources) {\n const errorFont = () => {\n return Promise.resolve(new TranslatedFont({\n loadedName: \"g_font_error\",\n font: new _fonts.ErrorFont(`Font \"${fontName}\" is not available.`),\n dict: font,\n extraProperties: this.options.fontExtraProperties\n }));\n };\n\n var fontRef,\n xref = this.xref;\n\n if (font) {\n if (!(0, _primitives.isRef)(font)) {\n throw new _util.FormatError('The \"font\" object should be a reference.');\n }\n\n fontRef = font;\n } else {\n var fontRes = resources.get(\"Font\");\n\n if (fontRes) {\n fontRef = fontRes.getRaw(fontName);\n }\n }\n\n if (!fontRef) {\n const partialMsg = `Font \"${fontName || font && font.toString()}\" is not available`;\n\n if (!this.options.ignoreErrors && !this.parsingType3Font) {\n (0, _util.warn)(`${partialMsg}.`);\n return errorFont();\n }\n\n this.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorFontMissing\n });\n (0, _util.warn)(`${partialMsg} -- attempting to fallback to a default font.`);\n fontRef = PartialEvaluator.fallbackFontDict;\n }\n\n if (this.fontCache.has(fontRef)) {\n return this.fontCache.get(fontRef);\n }\n\n font = xref.fetchIfRef(fontRef);\n\n if (!(0, _primitives.isDict)(font)) {\n return errorFont();\n }\n\n if (font.translated) {\n return font.translated;\n }\n\n var fontCapability = (0, _util.createPromiseCapability)();\n var preEvaluatedFont = this.preEvaluateFont(font);\n const {\n descriptor,\n hash\n } = preEvaluatedFont;\n var fontRefIsRef = (0, _primitives.isRef)(fontRef),\n fontID;\n\n if (fontRefIsRef) {\n fontID = `f${fontRef.toString()}`;\n }\n\n if (hash && (0, _primitives.isDict)(descriptor)) {\n if (!descriptor.fontAliases) {\n descriptor.fontAliases = Object.create(null);\n }\n\n var fontAliases = descriptor.fontAliases;\n\n if (fontAliases[hash]) {\n var aliasFontRef = fontAliases[hash].aliasRef;\n\n if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {\n this.fontCache.putAlias(fontRef, aliasFontRef);\n return this.fontCache.get(fontRef);\n }\n } else {\n fontAliases[hash] = {\n fontID: this.idFactory.createFontId()\n };\n }\n\n if (fontRefIsRef) {\n fontAliases[hash].aliasRef = fontRef;\n }\n\n fontID = fontAliases[hash].fontID;\n }\n\n if (fontRefIsRef) {\n this.fontCache.put(fontRef, fontCapability.promise);\n } else {\n if (!fontID) {\n fontID = this.idFactory.createFontId();\n }\n\n this.fontCache.put(`id_${fontID}`, fontCapability.promise);\n }\n\n (0, _util.assert)(fontID && fontID.startsWith(\"f\"), 'The \"fontID\" must be (correctly) defined.');\n font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;\n font.translated = fontCapability.promise;\n var translatedPromise;\n\n try {\n translatedPromise = this.translateFont(preEvaluatedFont);\n } catch (e) {\n translatedPromise = Promise.reject(e);\n }\n\n translatedPromise.then(translatedFont => {\n if (translatedFont.fontType !== undefined) {\n var xrefFontStats = xref.stats.fontTypes;\n xrefFontStats[translatedFont.fontType] = true;\n }\n\n fontCapability.resolve(new TranslatedFont({\n loadedName: font.loadedName,\n font: translatedFont,\n dict: font,\n extraProperties: this.options.fontExtraProperties\n }));\n }).catch(reason => {\n this.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorFontTranslate\n });\n\n try {\n var fontFile3 = descriptor && descriptor.get(\"FontFile3\");\n var subtype = fontFile3 && fontFile3.get(\"Subtype\");\n var fontType = (0, _fonts.getFontType)(preEvaluatedFont.type, subtype && subtype.name);\n var xrefFontStats = xref.stats.fontTypes;\n xrefFontStats[fontType] = true;\n } catch (ex) {}\n\n fontCapability.resolve(new TranslatedFont({\n loadedName: font.loadedName,\n font: new _fonts.ErrorFont(reason instanceof Error ? reason.message : reason),\n dict: font,\n extraProperties: this.options.fontExtraProperties\n }));\n });\n return fontCapability.promise;\n }\n\n buildPath(operatorList, fn, args, parsingText = false) {\n var lastIndex = operatorList.length - 1;\n\n if (!args) {\n args = [];\n }\n\n if (lastIndex < 0 || operatorList.fnArray[lastIndex] !== _util.OPS.constructPath) {\n if (parsingText) {\n (0, _util.warn)(`Encountered path operator \"${fn}\" inside of a text object.`);\n operatorList.addOp(_util.OPS.save, null);\n }\n\n operatorList.addOp(_util.OPS.constructPath, [[fn], args]);\n\n if (parsingText) {\n operatorList.addOp(_util.OPS.restore, null);\n }\n } else {\n var opArgs = operatorList.argsArray[lastIndex];\n opArgs[0].push(fn);\n Array.prototype.push.apply(opArgs[1], args);\n }\n }\n\n parseColorSpace({\n cs,\n resources,\n localColorSpaceCache\n }) {\n return _colorspace.ColorSpace.parseAsync({\n cs,\n xref: this.xref,\n resources,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache\n }).catch(reason => {\n if (reason instanceof _util.AbortException) {\n return null;\n }\n\n if (this.options.ignoreErrors) {\n this.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorColorSpace\n });\n (0, _util.warn)(`parseColorSpace - ignoring ColorSpace: \"${reason}\".`);\n return null;\n }\n\n throw reason;\n });\n }\n\n async handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache) {\n var patternName = args[args.length - 1];\n var pattern;\n\n if ((0, _primitives.isName)(patternName) && (pattern = patterns.get(patternName.name))) {\n var dict = (0, _primitives.isStream)(pattern) ? pattern.dict : pattern;\n var typeNum = dict.get(\"PatternType\");\n\n if (typeNum === PatternType.TILING) {\n var color = cs.base ? cs.base.getRgb(args, 0) : null;\n return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task);\n } else if (typeNum === PatternType.SHADING) {\n var shading = dict.get(\"Shading\");\n var matrix = dict.getArray(\"Matrix\");\n pattern = _pattern.Pattern.parseShading(shading, matrix, this.xref, resources, this.handler, this._pdfFunctionFactory, localColorSpaceCache);\n operatorList.addOp(fn, pattern.getIR());\n return undefined;\n }\n\n throw new _util.FormatError(`Unknown PatternType: ${typeNum}`);\n }\n\n throw new _util.FormatError(`Unknown PatternName: ${patternName}`);\n }\n\n async parseMarkedContentProps(contentProperties, resources) {\n let optionalContent;\n\n if ((0, _primitives.isName)(contentProperties)) {\n const properties = resources.get(\"Properties\");\n optionalContent = properties.get(contentProperties.name);\n } else if ((0, _primitives.isDict)(contentProperties)) {\n optionalContent = contentProperties;\n } else {\n throw new _util.FormatError(\"Optional content properties malformed.\");\n }\n\n const optionalContentType = optionalContent.get(\"Type\").name;\n\n if (optionalContentType === \"OCG\") {\n return {\n type: optionalContentType,\n id: optionalContent.objId\n };\n } else if (optionalContentType === \"OCMD\") {\n const optionalContentGroups = optionalContent.get(\"OCGs\");\n\n if (Array.isArray(optionalContentGroups) || (0, _primitives.isDict)(optionalContentGroups)) {\n const groupIds = [];\n\n if (Array.isArray(optionalContentGroups)) {\n optionalContent.get(\"OCGs\").forEach(ocg => {\n groupIds.push(ocg.toString());\n });\n } else {\n groupIds.push(optionalContentGroups.objId);\n }\n\n let expression = null;\n\n if (optionalContent.get(\"VE\")) {\n expression = true;\n }\n\n return {\n type: optionalContentType,\n ids: groupIds,\n policy: (0, _primitives.isName)(optionalContent.get(\"P\")) ? optionalContent.get(\"P\").name : null,\n expression\n };\n } else if ((0, _primitives.isRef)(optionalContentGroups)) {\n return {\n type: optionalContentType,\n id: optionalContentGroups.toString()\n };\n }\n }\n\n return null;\n }\n\n getOperatorList({\n stream,\n task,\n resources,\n operatorList,\n initialState = null\n }) {\n resources = resources || _primitives.Dict.empty;\n initialState = initialState || new EvalState();\n\n if (!operatorList) {\n throw new Error('getOperatorList: missing \"operatorList\" parameter');\n }\n\n var self = this;\n var xref = this.xref;\n let parsingText = false;\n const localImageCache = new _image_utils.LocalImageCache();\n const localColorSpaceCache = new _image_utils.LocalColorSpaceCache();\n const localGStateCache = new _image_utils.LocalGStateCache();\n\n var xobjs = resources.get(\"XObject\") || _primitives.Dict.empty;\n\n var patterns = resources.get(\"Pattern\") || _primitives.Dict.empty;\n\n var stateManager = new StateManager(initialState);\n var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n var timeSlotManager = new TimeSlotManager();\n\n function closePendingRestoreOPS(argument) {\n for (var i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n operatorList.addOp(_util.OPS.restore, []);\n }\n }\n\n return new Promise(function promiseBody(resolve, reject) {\n const next = function (promise) {\n Promise.all([promise, operatorList.ready]).then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n\n task.ensureNotTerminated();\n timeSlotManager.reset();\n var stop,\n operation = {},\n i,\n ii,\n cs,\n name;\n\n while (!(stop = timeSlotManager.check())) {\n operation.args = null;\n\n if (!preprocessor.read(operation)) {\n break;\n }\n\n var args = operation.args;\n var fn = operation.fn;\n\n switch (fn | 0) {\n case _util.OPS.paintXObject:\n name = args[0].name;\n\n if (name) {\n const localImage = localImageCache.getByName(name);\n\n if (localImage) {\n operatorList.addOp(localImage.fn, localImage.args);\n args = null;\n continue;\n }\n }\n\n next(new Promise(function (resolveXObject, rejectXObject) {\n if (!name) {\n throw new _util.FormatError(\"XObject must be referred to by name.\");\n }\n\n let xobj = xobjs.getRaw(name);\n\n if (xobj instanceof _primitives.Ref) {\n const localImage = localImageCache.getByRef(xobj);\n\n if (localImage) {\n operatorList.addOp(localImage.fn, localImage.args);\n resolveXObject();\n return;\n }\n\n const globalImage = self.globalImageCache.getData(xobj, self.pageIndex);\n\n if (globalImage) {\n operatorList.addDependency(globalImage.objId);\n operatorList.addOp(globalImage.fn, globalImage.args);\n resolveXObject();\n return;\n }\n\n xobj = xref.fetch(xobj);\n }\n\n if (!(0, _primitives.isStream)(xobj)) {\n throw new _util.FormatError(\"XObject should be a stream\");\n }\n\n const type = xobj.dict.get(\"Subtype\");\n\n if (!(0, _primitives.isName)(type)) {\n throw new _util.FormatError(\"XObject should have a Name subtype\");\n }\n\n if (type.name === \"Form\") {\n stateManager.save();\n self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone(), localColorSpaceCache).then(function () {\n stateManager.restore();\n resolveXObject();\n }, rejectXObject);\n return;\n } else if (type.name === \"Image\") {\n self.buildPaintImageXObject({\n resources,\n image: xobj,\n operatorList,\n cacheKey: name,\n localImageCache,\n localColorSpaceCache\n }).then(resolveXObject, rejectXObject);\n return;\n } else if (type.name === \"PS\") {\n (0, _util.info)(\"Ignored XObject subtype PS\");\n } else {\n throw new _util.FormatError(`Unhandled XObject subtype ${type.name}`);\n }\n\n resolveXObject();\n }).catch(function (reason) {\n if (reason instanceof _util.AbortException) {\n return;\n }\n\n if (self.options.ignoreErrors) {\n self.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorXObject\n });\n (0, _util.warn)(`getOperatorList - ignoring XObject: \"${reason}\".`);\n return;\n }\n\n throw reason;\n }));\n return;\n\n case _util.OPS.setFont:\n var fontSize = args[1];\n next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state).then(function (loadedName) {\n operatorList.addDependency(loadedName);\n operatorList.addOp(_util.OPS.setFont, [loadedName, fontSize]);\n }));\n return;\n\n case _util.OPS.beginText:\n parsingText = true;\n break;\n\n case _util.OPS.endText:\n parsingText = false;\n break;\n\n case _util.OPS.endInlineImage:\n var cacheKey = args[0].cacheKey;\n\n if (cacheKey) {\n const localImage = localImageCache.getByName(cacheKey);\n\n if (localImage) {\n operatorList.addOp(localImage.fn, localImage.args);\n args = null;\n continue;\n }\n }\n\n next(self.buildPaintImageXObject({\n resources,\n image: args[0],\n isInline: true,\n operatorList,\n cacheKey,\n localImageCache,\n localColorSpaceCache\n }));\n return;\n\n case _util.OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n args[0] = self.handleText(args[0], stateManager.state);\n break;\n\n case _util.OPS.showSpacedText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n var arr = args[0];\n var combinedGlyphs = [];\n var arrLength = arr.length;\n var state = stateManager.state;\n\n for (i = 0; i < arrLength; ++i) {\n var arrItem = arr[i];\n\n if ((0, _util.isString)(arrItem)) {\n Array.prototype.push.apply(combinedGlyphs, self.handleText(arrItem, state));\n } else if ((0, _util.isNum)(arrItem)) {\n combinedGlyphs.push(arrItem);\n }\n }\n\n args[0] = combinedGlyphs;\n fn = _util.OPS.showText;\n break;\n\n case _util.OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n operatorList.addOp(_util.OPS.nextLine);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = _util.OPS.showText;\n break;\n\n case _util.OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n operatorList.addOp(_util.OPS.nextLine);\n operatorList.addOp(_util.OPS.setWordSpacing, [args.shift()]);\n operatorList.addOp(_util.OPS.setCharSpacing, [args.shift()]);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = _util.OPS.showText;\n break;\n\n case _util.OPS.setTextRenderingMode:\n stateManager.state.textRenderingMode = args[0];\n break;\n\n case _util.OPS.setFillColorSpace:\n {\n const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache);\n\n if (cachedColorSpace) {\n stateManager.state.fillColorSpace = cachedColorSpace;\n continue;\n }\n\n next(self.parseColorSpace({\n cs: args[0],\n resources,\n localColorSpaceCache\n }).then(function (colorSpace) {\n if (colorSpace) {\n stateManager.state.fillColorSpace = colorSpace;\n }\n }));\n return;\n }\n\n case _util.OPS.setStrokeColorSpace:\n {\n const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache);\n\n if (cachedColorSpace) {\n stateManager.state.strokeColorSpace = cachedColorSpace;\n continue;\n }\n\n next(self.parseColorSpace({\n cs: args[0],\n resources,\n localColorSpaceCache\n }).then(function (colorSpace) {\n if (colorSpace) {\n stateManager.state.strokeColorSpace = colorSpace;\n }\n }));\n return;\n }\n\n case _util.OPS.setFillColor:\n cs = stateManager.state.fillColorSpace;\n args = cs.getRgb(args, 0);\n fn = _util.OPS.setFillRGBColor;\n break;\n\n case _util.OPS.setStrokeColor:\n cs = stateManager.state.strokeColorSpace;\n args = cs.getRgb(args, 0);\n fn = _util.OPS.setStrokeRGBColor;\n break;\n\n case _util.OPS.setFillGray:\n stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.gray;\n args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);\n fn = _util.OPS.setFillRGBColor;\n break;\n\n case _util.OPS.setStrokeGray:\n stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;\n args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);\n fn = _util.OPS.setStrokeRGBColor;\n break;\n\n case _util.OPS.setFillCMYKColor:\n stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.cmyk;\n args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);\n fn = _util.OPS.setFillRGBColor;\n break;\n\n case _util.OPS.setStrokeCMYKColor:\n stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.cmyk;\n args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);\n fn = _util.OPS.setStrokeRGBColor;\n break;\n\n case _util.OPS.setFillRGBColor:\n stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.rgb;\n args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);\n break;\n\n case _util.OPS.setStrokeRGBColor:\n stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.rgb;\n args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);\n break;\n\n case _util.OPS.setFillColorN:\n cs = stateManager.state.fillColorSpace;\n\n if (cs.name === \"Pattern\") {\n next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, task, localColorSpaceCache));\n return;\n }\n\n args = cs.getRgb(args, 0);\n fn = _util.OPS.setFillRGBColor;\n break;\n\n case _util.OPS.setStrokeColorN:\n cs = stateManager.state.strokeColorSpace;\n\n if (cs.name === \"Pattern\") {\n next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, task, localColorSpaceCache));\n return;\n }\n\n args = cs.getRgb(args, 0);\n fn = _util.OPS.setStrokeRGBColor;\n break;\n\n case _util.OPS.shadingFill:\n var shadingRes = resources.get(\"Shading\");\n\n if (!shadingRes) {\n throw new _util.FormatError(\"No shading resource found\");\n }\n\n var shading = shadingRes.get(args[0].name);\n\n if (!shading) {\n throw new _util.FormatError(\"No shading object found\");\n }\n\n var shadingFill = _pattern.Pattern.parseShading(shading, null, xref, resources, self.handler, self._pdfFunctionFactory, localColorSpaceCache);\n\n var patternIR = shadingFill.getIR();\n args = [patternIR];\n fn = _util.OPS.shadingFill;\n break;\n\n case _util.OPS.setGState:\n name = args[0].name;\n\n if (name) {\n const localGStateObj = localGStateCache.getByName(name);\n\n if (localGStateObj) {\n if (localGStateObj.length > 0) {\n operatorList.addOp(_util.OPS.setGState, [localGStateObj]);\n }\n\n args = null;\n continue;\n }\n }\n\n next(new Promise(function (resolveGState, rejectGState) {\n if (!name) {\n throw new _util.FormatError(\"GState must be referred to by name.\");\n }\n\n const extGState = resources.get(\"ExtGState\");\n\n if (!(extGState instanceof _primitives.Dict)) {\n throw new _util.FormatError(\"ExtGState should be a dictionary.\");\n }\n\n const gState = extGState.get(name);\n\n if (!(gState instanceof _primitives.Dict)) {\n throw new _util.FormatError(\"GState should be a dictionary.\");\n }\n\n self.setGState({\n resources,\n gState,\n operatorList,\n cacheKey: name,\n task,\n stateManager,\n localGStateCache,\n localColorSpaceCache\n }).then(resolveGState, rejectGState);\n }).catch(function (reason) {\n if (reason instanceof _util.AbortException) {\n return;\n }\n\n if (self.options.ignoreErrors) {\n self.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorExtGState\n });\n (0, _util.warn)(`getOperatorList - ignoring ExtGState: \"${reason}\".`);\n return;\n }\n\n throw reason;\n }));\n return;\n\n case _util.OPS.moveTo:\n case _util.OPS.lineTo:\n case _util.OPS.curveTo:\n case _util.OPS.curveTo2:\n case _util.OPS.curveTo3:\n case _util.OPS.closePath:\n case _util.OPS.rectangle:\n self.buildPath(operatorList, fn, args, parsingText);\n continue;\n\n case _util.OPS.markPoint:\n case _util.OPS.markPointProps:\n case _util.OPS.beginCompat:\n case _util.OPS.endCompat:\n continue;\n\n case _util.OPS.beginMarkedContentProps:\n if (!(0, _primitives.isName)(args[0])) {\n (0, _util.warn)(`Expected name for beginMarkedContentProps arg0=${args[0]}`);\n continue;\n }\n\n if (args[0].name === \"OC\") {\n next(self.parseMarkedContentProps(args[1], resources).then(data => {\n operatorList.addOp(_util.OPS.beginMarkedContentProps, [\"OC\", data]);\n }).catch(reason => {\n if (reason instanceof _util.AbortException) {\n return;\n }\n\n if (self.options.ignoreErrors) {\n self.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorMarkedContent\n });\n (0, _util.warn)(`getOperatorList - ignoring beginMarkedContentProps: \"${reason}\".`);\n return;\n }\n\n throw reason;\n }));\n return;\n }\n\n args = [args[0].name];\n break;\n\n case _util.OPS.beginMarkedContent:\n case _util.OPS.endMarkedContent:\n default:\n if (args !== null) {\n for (i = 0, ii = args.length; i < ii; i++) {\n if (args[i] instanceof _primitives.Dict) {\n break;\n }\n }\n\n if (i < ii) {\n (0, _util.warn)(\"getOperatorList - ignoring operator: \" + fn);\n continue;\n }\n }\n\n }\n\n operatorList.addOp(fn, args);\n }\n\n if (stop) {\n next(deferred);\n return;\n }\n\n closePendingRestoreOPS();\n resolve();\n }).catch(reason => {\n if (reason instanceof _util.AbortException) {\n return;\n }\n\n if (this.options.ignoreErrors) {\n this.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorOperatorList\n });\n (0, _util.warn)(`getOperatorList - ignoring errors during \"${task.name}\" ` + `task: \"${reason}\".`);\n closePendingRestoreOPS();\n return;\n }\n\n throw reason;\n });\n }\n\n getTextContent({\n stream,\n task,\n resources,\n stateManager = null,\n normalizeWhitespace = false,\n combineTextItems = false,\n sink,\n seenStyles = Object.create(null)\n }) {\n resources = resources || _primitives.Dict.empty;\n stateManager = stateManager || new StateManager(new TextState());\n var WhitespaceRegexp = /\\s/g;\n var textContent = {\n items: [],\n styles: Object.create(null)\n };\n var textContentItem = {\n initialized: false,\n str: [],\n width: 0,\n height: 0,\n vertical: false,\n lastAdvanceWidth: 0,\n lastAdvanceHeight: 0,\n textAdvanceScale: 0,\n spaceWidth: 0,\n fakeSpaceMin: Infinity,\n fakeMultiSpaceMin: Infinity,\n fakeMultiSpaceMax: -0,\n textRunBreakAllowed: false,\n transform: null,\n fontName: null\n };\n var SPACE_FACTOR = 0.3;\n var MULTI_SPACE_FACTOR = 1.5;\n var MULTI_SPACE_FACTOR_MAX = 4;\n var self = this;\n var xref = this.xref;\n var xobjs = null;\n const emptyXObjectCache = new _image_utils.LocalImageCache();\n const emptyGStateCache = new _image_utils.LocalGStateCache();\n var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n var textState;\n\n function ensureTextContentItem() {\n if (textContentItem.initialized) {\n return textContentItem;\n }\n\n var font = textState.font;\n\n if (!(font.loadedName in seenStyles)) {\n seenStyles[font.loadedName] = true;\n textContent.styles[font.loadedName] = {\n fontFamily: font.fallbackName,\n ascent: font.ascent,\n descent: font.descent,\n vertical: font.vertical\n };\n }\n\n textContentItem.fontName = font.loadedName;\n var tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise];\n\n if (font.isType3Font && textState.fontSize <= 1 && !(0, _util.isArrayEqual)(textState.fontMatrix, _util.FONT_IDENTITY_MATRIX)) {\n const glyphHeight = font.bbox[3] - font.bbox[1];\n\n if (glyphHeight > 0) {\n tsm[3] *= glyphHeight * textState.fontMatrix[3];\n }\n }\n\n var trm = _util.Util.transform(textState.ctm, _util.Util.transform(textState.textMatrix, tsm));\n\n textContentItem.transform = trm;\n\n if (!font.vertical) {\n textContentItem.width = 0;\n textContentItem.height = Math.sqrt(trm[2] * trm[2] + trm[3] * trm[3]);\n textContentItem.vertical = false;\n } else {\n textContentItem.width = Math.sqrt(trm[0] * trm[0] + trm[1] * trm[1]);\n textContentItem.height = 0;\n textContentItem.vertical = true;\n }\n\n var a = textState.textLineMatrix[0];\n var b = textState.textLineMatrix[1];\n var scaleLineX = Math.sqrt(a * a + b * b);\n a = textState.ctm[0];\n b = textState.ctm[1];\n var scaleCtmX = Math.sqrt(a * a + b * b);\n textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n textContentItem.lastAdvanceWidth = 0;\n textContentItem.lastAdvanceHeight = 0;\n var spaceWidth = font.spaceWidth / 1000 * textState.fontSize;\n\n if (spaceWidth) {\n textContentItem.spaceWidth = spaceWidth;\n textContentItem.fakeSpaceMin = spaceWidth * SPACE_FACTOR;\n textContentItem.fakeMultiSpaceMin = spaceWidth * MULTI_SPACE_FACTOR;\n textContentItem.fakeMultiSpaceMax = spaceWidth * MULTI_SPACE_FACTOR_MAX;\n textContentItem.textRunBreakAllowed = !font.isMonospace;\n } else {\n textContentItem.spaceWidth = 0;\n textContentItem.fakeSpaceMin = Infinity;\n textContentItem.fakeMultiSpaceMin = Infinity;\n textContentItem.fakeMultiSpaceMax = 0;\n textContentItem.textRunBreakAllowed = false;\n }\n\n textContentItem.initialized = true;\n return textContentItem;\n }\n\n function replaceWhitespace(str) {\n var i = 0,\n ii = str.length,\n code;\n\n while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7f) {\n i++;\n }\n\n return i < ii ? str.replace(WhitespaceRegexp, \" \") : str;\n }\n\n function runBidiTransform(textChunk) {\n var str = textChunk.str.join(\"\");\n var bidiResult = (0, _bidi.bidi)(str, -1, textChunk.vertical);\n return {\n str: normalizeWhitespace ? replaceWhitespace(bidiResult.str) : bidiResult.str,\n dir: bidiResult.dir,\n width: textChunk.width,\n height: textChunk.height,\n transform: textChunk.transform,\n fontName: textChunk.fontName\n };\n }\n\n function handleSetFont(fontName, fontRef) {\n return self.loadFont(fontName, fontRef, resources).then(function (translated) {\n textState.font = translated.font;\n textState.fontMatrix = translated.font.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n });\n }\n\n function buildTextContentItem(chars) {\n var font = textState.font;\n var textChunk = ensureTextContentItem();\n var width = 0;\n var height = 0;\n var glyphs = font.charsToGlyphs(chars);\n\n for (var i = 0; i < glyphs.length; i++) {\n var glyph = glyphs[i];\n var glyphWidth = null;\n\n if (font.vertical && glyph.vmetric) {\n glyphWidth = glyph.vmetric[0];\n } else {\n glyphWidth = glyph.width;\n }\n\n var glyphUnicode = glyph.unicode;\n var NormalizedUnicodes = (0, _unicode.getNormalizedUnicodes)();\n\n if (NormalizedUnicodes[glyphUnicode] !== undefined) {\n glyphUnicode = NormalizedUnicodes[glyphUnicode];\n }\n\n glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode);\n var charSpacing = textState.charSpacing;\n\n if (glyph.isSpace) {\n var wordSpacing = textState.wordSpacing;\n charSpacing += wordSpacing;\n\n if (wordSpacing > 0) {\n addFakeSpaces(wordSpacing, textChunk.str);\n }\n }\n\n var tx = 0;\n var ty = 0;\n\n if (!font.vertical) {\n var w0 = glyphWidth * textState.fontMatrix[0];\n tx = (w0 * textState.fontSize + charSpacing) * textState.textHScale;\n width += tx;\n } else {\n var w1 = glyphWidth * textState.fontMatrix[0];\n ty = w1 * textState.fontSize + charSpacing;\n height += ty;\n }\n\n textState.translateTextMatrix(tx, ty);\n textChunk.str.push(glyphUnicode);\n }\n\n if (!font.vertical) {\n textChunk.lastAdvanceWidth = width;\n textChunk.width += width;\n } else {\n textChunk.lastAdvanceHeight = height;\n textChunk.height += Math.abs(height);\n }\n\n return textChunk;\n }\n\n function addFakeSpaces(width, strBuf) {\n if (width < textContentItem.fakeSpaceMin) {\n return;\n }\n\n if (width < textContentItem.fakeMultiSpaceMin) {\n strBuf.push(\" \");\n return;\n }\n\n var fakeSpaces = Math.round(width / textContentItem.spaceWidth);\n\n while (fakeSpaces-- > 0) {\n strBuf.push(\" \");\n }\n }\n\n function flushTextContentItem() {\n if (!textContentItem.initialized) {\n return;\n }\n\n if (!textContentItem.vertical) {\n textContentItem.width *= textContentItem.textAdvanceScale;\n } else {\n textContentItem.height *= textContentItem.textAdvanceScale;\n }\n\n textContent.items.push(runBidiTransform(textContentItem));\n textContentItem.initialized = false;\n textContentItem.str.length = 0;\n }\n\n function enqueueChunk() {\n const length = textContent.items.length;\n\n if (length > 0) {\n sink.enqueue(textContent, length);\n textContent.items = [];\n textContent.styles = Object.create(null);\n }\n }\n\n var timeSlotManager = new TimeSlotManager();\n return new Promise(function promiseBody(resolve, reject) {\n const next = function (promise) {\n enqueueChunk();\n Promise.all([promise, sink.ready]).then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n\n task.ensureNotTerminated();\n timeSlotManager.reset();\n var stop,\n operation = {},\n args = [];\n\n while (!(stop = timeSlotManager.check())) {\n args.length = 0;\n operation.args = args;\n\n if (!preprocessor.read(operation)) {\n break;\n }\n\n textState = stateManager.state;\n var fn = operation.fn;\n args = operation.args;\n var advance, diff;\n\n switch (fn | 0) {\n case _util.OPS.setFont:\n var fontNameArg = args[0].name,\n fontSizeArg = args[1];\n\n if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) {\n break;\n }\n\n flushTextContentItem();\n textState.fontName = fontNameArg;\n textState.fontSize = fontSizeArg;\n next(handleSetFont(fontNameArg, null));\n return;\n\n case _util.OPS.setTextRise:\n flushTextContentItem();\n textState.textRise = args[0];\n break;\n\n case _util.OPS.setHScale:\n flushTextContentItem();\n textState.textHScale = args[0] / 100;\n break;\n\n case _util.OPS.setLeading:\n flushTextContentItem();\n textState.leading = args[0];\n break;\n\n case _util.OPS.moveText:\n var isSameTextLine = !textState.font ? false : (textState.font.vertical ? args[0] : args[1]) === 0;\n advance = args[0] - args[1];\n\n if (combineTextItems && isSameTextLine && textContentItem.initialized && advance > 0 && advance <= textContentItem.fakeMultiSpaceMax) {\n textState.translateTextLineMatrix(args[0], args[1]);\n textContentItem.width += args[0] - textContentItem.lastAdvanceWidth;\n textContentItem.height += args[1] - textContentItem.lastAdvanceHeight;\n diff = args[0] - textContentItem.lastAdvanceWidth - (args[1] - textContentItem.lastAdvanceHeight);\n addFakeSpaces(diff, textContentItem.str);\n break;\n }\n\n flushTextContentItem();\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n\n case _util.OPS.setLeadingMoveText:\n flushTextContentItem();\n textState.leading = -args[1];\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n\n case _util.OPS.nextLine:\n flushTextContentItem();\n textState.carriageReturn();\n break;\n\n case _util.OPS.setTextMatrix:\n advance = textState.calcTextLineMatrixAdvance(args[0], args[1], args[2], args[3], args[4], args[5]);\n\n if (combineTextItems && advance !== null && textContentItem.initialized && advance.value > 0 && advance.value <= textContentItem.fakeMultiSpaceMax) {\n textState.translateTextLineMatrix(advance.width, advance.height);\n textContentItem.width += advance.width - textContentItem.lastAdvanceWidth;\n textContentItem.height += advance.height - textContentItem.lastAdvanceHeight;\n diff = advance.width - textContentItem.lastAdvanceWidth - (advance.height - textContentItem.lastAdvanceHeight);\n addFakeSpaces(diff, textContentItem.str);\n break;\n }\n\n flushTextContentItem();\n textState.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n textState.setTextLineMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n\n case _util.OPS.setCharSpacing:\n textState.charSpacing = args[0];\n break;\n\n case _util.OPS.setWordSpacing:\n textState.wordSpacing = args[0];\n break;\n\n case _util.OPS.beginText:\n flushTextContentItem();\n textState.textMatrix = _util.IDENTITY_MATRIX.slice();\n textState.textLineMatrix = _util.IDENTITY_MATRIX.slice();\n break;\n\n case _util.OPS.showSpacedText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n var items = args[0];\n var offset;\n\n for (var j = 0, jj = items.length; j < jj; j++) {\n if (typeof items[j] === \"string\") {\n buildTextContentItem(items[j]);\n } else if ((0, _util.isNum)(items[j])) {\n ensureTextContentItem();\n advance = items[j] * textState.fontSize / 1000;\n var breakTextRun = false;\n\n if (textState.font.vertical) {\n offset = advance;\n textState.translateTextMatrix(0, offset);\n breakTextRun = textContentItem.textRunBreakAllowed && advance > textContentItem.fakeMultiSpaceMax;\n\n if (!breakTextRun) {\n textContentItem.height += offset;\n }\n } else {\n advance = -advance;\n offset = advance * textState.textHScale;\n textState.translateTextMatrix(offset, 0);\n breakTextRun = textContentItem.textRunBreakAllowed && advance > textContentItem.fakeMultiSpaceMax;\n\n if (!breakTextRun) {\n textContentItem.width += offset;\n }\n }\n\n if (breakTextRun) {\n flushTextContentItem();\n } else if (advance > 0) {\n addFakeSpaces(advance, textContentItem.str);\n }\n }\n }\n\n break;\n\n case _util.OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n buildTextContentItem(args[0]);\n break;\n\n case _util.OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n flushTextContentItem();\n textState.carriageReturn();\n buildTextContentItem(args[0]);\n break;\n\n case _util.OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n flushTextContentItem();\n textState.wordSpacing = args[0];\n textState.charSpacing = args[1];\n textState.carriageReturn();\n buildTextContentItem(args[2]);\n break;\n\n case _util.OPS.paintXObject:\n flushTextContentItem();\n\n if (!xobjs) {\n xobjs = resources.get(\"XObject\") || _primitives.Dict.empty;\n }\n\n var name = args[0].name;\n\n if (name && emptyXObjectCache.getByName(name)) {\n break;\n }\n\n next(new Promise(function (resolveXObject, rejectXObject) {\n if (!name) {\n throw new _util.FormatError(\"XObject must be referred to by name.\");\n }\n\n let xobj = xobjs.getRaw(name);\n\n if (xobj instanceof _primitives.Ref) {\n if (emptyXObjectCache.getByRef(xobj)) {\n resolveXObject();\n return;\n }\n\n xobj = xref.fetch(xobj);\n }\n\n if (!(0, _primitives.isStream)(xobj)) {\n throw new _util.FormatError(\"XObject should be a stream\");\n }\n\n const type = xobj.dict.get(\"Subtype\");\n\n if (!(0, _primitives.isName)(type)) {\n throw new _util.FormatError(\"XObject should have a Name subtype\");\n }\n\n if (type.name !== \"Form\") {\n emptyXObjectCache.set(name, xobj.dict.objId, true);\n resolveXObject();\n return;\n }\n\n const currentState = stateManager.state.clone();\n const xObjStateManager = new StateManager(currentState);\n const matrix = xobj.dict.getArray(\"Matrix\");\n\n if (Array.isArray(matrix) && matrix.length === 6) {\n xObjStateManager.transform(matrix);\n }\n\n enqueueChunk();\n const sinkWrapper = {\n enqueueInvoked: false,\n\n enqueue(chunk, size) {\n this.enqueueInvoked = true;\n sink.enqueue(chunk, size);\n },\n\n get desiredSize() {\n return sink.desiredSize;\n },\n\n get ready() {\n return sink.ready;\n }\n\n };\n self.getTextContent({\n stream: xobj,\n task,\n resources: xobj.dict.get(\"Resources\") || resources,\n stateManager: xObjStateManager,\n normalizeWhitespace,\n combineTextItems,\n sink: sinkWrapper,\n seenStyles\n }).then(function () {\n if (!sinkWrapper.enqueueInvoked) {\n emptyXObjectCache.set(name, xobj.dict.objId, true);\n }\n\n resolveXObject();\n }, rejectXObject);\n }).catch(function (reason) {\n if (reason instanceof _util.AbortException) {\n return;\n }\n\n if (self.options.ignoreErrors) {\n (0, _util.warn)(`getTextContent - ignoring XObject: \"${reason}\".`);\n return;\n }\n\n throw reason;\n }));\n return;\n\n case _util.OPS.setGState:\n name = args[0].name;\n\n if (name && emptyGStateCache.getByName(name)) {\n break;\n }\n\n next(new Promise(function (resolveGState, rejectGState) {\n if (!name) {\n throw new _util.FormatError(\"GState must be referred to by name.\");\n }\n\n const extGState = resources.get(\"ExtGState\");\n\n if (!(extGState instanceof _primitives.Dict)) {\n throw new _util.FormatError(\"ExtGState should be a dictionary.\");\n }\n\n const gState = extGState.get(name);\n\n if (!(gState instanceof _primitives.Dict)) {\n throw new _util.FormatError(\"GState should be a dictionary.\");\n }\n\n const gStateFont = gState.get(\"Font\");\n\n if (!gStateFont) {\n emptyGStateCache.set(name, gState.objId, true);\n resolveGState();\n return;\n }\n\n flushTextContentItem();\n textState.fontName = null;\n textState.fontSize = gStateFont[1];\n handleSetFont(null, gStateFont[0]).then(resolveGState, rejectGState);\n }).catch(function (reason) {\n if (reason instanceof _util.AbortException) {\n return;\n }\n\n if (self.options.ignoreErrors) {\n (0, _util.warn)(`getTextContent - ignoring ExtGState: \"${reason}\".`);\n return;\n }\n\n throw reason;\n }));\n return;\n }\n\n if (textContent.items.length >= sink.desiredSize) {\n stop = true;\n break;\n }\n }\n\n if (stop) {\n next(deferred);\n return;\n }\n\n flushTextContentItem();\n enqueueChunk();\n resolve();\n }).catch(reason => {\n if (reason instanceof _util.AbortException) {\n return;\n }\n\n if (this.options.ignoreErrors) {\n (0, _util.warn)(`getTextContent - ignoring errors during \"${task.name}\" ` + `task: \"${reason}\".`);\n flushTextContentItem();\n enqueueChunk();\n return;\n }\n\n throw reason;\n });\n }\n\n extractDataStructures(dict, baseDict, properties) {\n const xref = this.xref;\n let cidToGidBytes;\n var toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n var toUnicodePromise = toUnicode ? this.readToUnicode(toUnicode) : Promise.resolve(undefined);\n\n if (properties.composite) {\n var cidSystemInfo = dict.get(\"CIDSystemInfo\");\n\n if ((0, _primitives.isDict)(cidSystemInfo)) {\n properties.cidSystemInfo = {\n registry: (0, _util.stringToPDFString)(cidSystemInfo.get(\"Registry\")),\n ordering: (0, _util.stringToPDFString)(cidSystemInfo.get(\"Ordering\")),\n supplement: cidSystemInfo.get(\"Supplement\")\n };\n }\n\n var cidToGidMap = dict.get(\"CIDToGIDMap\");\n\n if ((0, _primitives.isStream)(cidToGidMap)) {\n cidToGidBytes = cidToGidMap.getBytes();\n }\n }\n\n var differences = [];\n var baseEncodingName = null;\n var encoding;\n\n if (dict.has(\"Encoding\")) {\n encoding = dict.get(\"Encoding\");\n\n if ((0, _primitives.isDict)(encoding)) {\n baseEncodingName = encoding.get(\"BaseEncoding\");\n baseEncodingName = (0, _primitives.isName)(baseEncodingName) ? baseEncodingName.name : null;\n\n if (encoding.has(\"Differences\")) {\n var diffEncoding = encoding.get(\"Differences\");\n var index = 0;\n\n for (var j = 0, jj = diffEncoding.length; j < jj; j++) {\n var data = xref.fetchIfRef(diffEncoding[j]);\n\n if ((0, _util.isNum)(data)) {\n index = data;\n } else if ((0, _primitives.isName)(data)) {\n differences[index++] = data.name;\n } else {\n throw new _util.FormatError(`Invalid entry in 'Differences' array: ${data}`);\n }\n }\n }\n } else if ((0, _primitives.isName)(encoding)) {\n baseEncodingName = encoding.name;\n } else {\n throw new _util.FormatError(\"Encoding is not a Name nor a Dict\");\n }\n\n if (baseEncodingName !== \"MacRomanEncoding\" && baseEncodingName !== \"MacExpertEncoding\" && baseEncodingName !== \"WinAnsiEncoding\") {\n baseEncodingName = null;\n }\n }\n\n if (baseEncodingName) {\n properties.defaultEncoding = (0, _encodings.getEncoding)(baseEncodingName).slice();\n } else {\n var isSymbolicFont = !!(properties.flags & _fonts.FontFlags.Symbolic);\n var isNonsymbolicFont = !!(properties.flags & _fonts.FontFlags.Nonsymbolic);\n encoding = _encodings.StandardEncoding;\n\n if (properties.type === \"TrueType\" && !isNonsymbolicFont) {\n encoding = _encodings.WinAnsiEncoding;\n }\n\n if (isSymbolicFont) {\n encoding = _encodings.MacRomanEncoding;\n\n if (!properties.file) {\n if (/Symbol/i.test(properties.name)) {\n encoding = _encodings.SymbolSetEncoding;\n } else if (/Dingbats|Wingdings/i.test(properties.name)) {\n encoding = _encodings.ZapfDingbatsEncoding;\n }\n }\n }\n\n properties.defaultEncoding = encoding;\n }\n\n properties.differences = differences;\n properties.baseEncodingName = baseEncodingName;\n properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n properties.dict = dict;\n return toUnicodePromise.then(readToUnicode => {\n properties.toUnicode = readToUnicode;\n return this.buildToUnicode(properties);\n }).then(builtToUnicode => {\n properties.toUnicode = builtToUnicode;\n\n if (cidToGidBytes) {\n properties.cidToGidMap = this.readCidToGidMap(cidToGidBytes, builtToUnicode);\n }\n\n return properties;\n });\n }\n\n _buildSimpleFontToUnicode(properties, forceGlyphs = false) {\n (0, _util.assert)(!properties.composite, \"Must be a simple font.\");\n const toUnicode = [];\n const encoding = properties.defaultEncoding.slice();\n const baseEncodingName = properties.baseEncodingName;\n const differences = properties.differences;\n\n for (const charcode in differences) {\n const glyphName = differences[charcode];\n\n if (glyphName === \".notdef\") {\n continue;\n }\n\n encoding[charcode] = glyphName;\n }\n\n const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n\n for (const charcode in encoding) {\n let glyphName = encoding[charcode];\n\n if (glyphName === \"\") {\n continue;\n } else if (glyphsUnicodeMap[glyphName] === undefined) {\n let code = 0;\n\n switch (glyphName[0]) {\n case \"G\":\n if (glyphName.length === 3) {\n code = parseInt(glyphName.substring(1), 16);\n }\n\n break;\n\n case \"g\":\n if (glyphName.length === 5) {\n code = parseInt(glyphName.substring(1), 16);\n }\n\n break;\n\n case \"C\":\n case \"c\":\n if (glyphName.length >= 3 && glyphName.length <= 4) {\n const codeStr = glyphName.substring(1);\n\n if (forceGlyphs) {\n code = parseInt(codeStr, 16);\n break;\n }\n\n code = +codeStr;\n\n if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) {\n return this._buildSimpleFontToUnicode(properties, true);\n }\n }\n\n break;\n\n default:\n const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);\n\n if (unicode !== -1) {\n code = unicode;\n }\n\n }\n\n if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {\n if (baseEncodingName && code === +charcode) {\n const baseEncoding = (0, _encodings.getEncoding)(baseEncodingName);\n\n if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n continue;\n }\n }\n\n toUnicode[charcode] = String.fromCodePoint(code);\n }\n\n continue;\n }\n\n toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n }\n\n return new _fonts.ToUnicodeMap(toUnicode);\n }\n\n buildToUnicode(properties) {\n properties.hasIncludedToUnicodeMap = !!properties.toUnicode && properties.toUnicode.length > 0;\n\n if (properties.hasIncludedToUnicodeMap) {\n if (!properties.composite && properties.hasEncoding) {\n properties.fallbackToUnicode = this._buildSimpleFontToUnicode(properties);\n }\n\n return Promise.resolve(properties.toUnicode);\n }\n\n if (!properties.composite) {\n return Promise.resolve(this._buildSimpleFontToUnicode(properties));\n }\n\n if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof _cmap.IdentityCMap) || properties.cidSystemInfo.registry === \"Adobe\" && (properties.cidSystemInfo.ordering === \"GB1\" || properties.cidSystemInfo.ordering === \"CNS1\" || properties.cidSystemInfo.ordering === \"Japan1\" || properties.cidSystemInfo.ordering === \"Korea1\"))) {\n const registry = properties.cidSystemInfo.registry;\n const ordering = properties.cidSystemInfo.ordering;\n\n const ucs2CMapName = _primitives.Name.get(registry + \"-\" + ordering + \"-UCS2\");\n\n return _cmap.CMapFactory.create({\n encoding: ucs2CMapName,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null\n }).then(function (ucs2CMap) {\n const cMap = properties.cMap;\n const toUnicode = [];\n cMap.forEach(function (charcode, cid) {\n if (cid > 0xffff) {\n throw new _util.FormatError(\"Max size of CID is 65,535\");\n }\n\n const ucs2 = ucs2CMap.lookup(cid);\n\n if (ucs2) {\n toUnicode[charcode] = String.fromCharCode((ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1));\n }\n });\n return new _fonts.ToUnicodeMap(toUnicode);\n });\n }\n\n return Promise.resolve(new _fonts.IdentityToUnicodeMap(properties.firstChar, properties.lastChar));\n }\n\n readToUnicode(toUnicode) {\n var cmapObj = toUnicode;\n\n if ((0, _primitives.isName)(cmapObj)) {\n return _cmap.CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null\n }).then(function (cmap) {\n if (cmap instanceof _cmap.IdentityCMap) {\n return new _fonts.IdentityToUnicodeMap(0, 0xffff);\n }\n\n return new _fonts.ToUnicodeMap(cmap.getMap());\n });\n } else if ((0, _primitives.isStream)(cmapObj)) {\n return _cmap.CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null\n }).then(function (cmap) {\n if (cmap instanceof _cmap.IdentityCMap) {\n return new _fonts.IdentityToUnicodeMap(0, 0xffff);\n }\n\n var map = new Array(cmap.length);\n cmap.forEach(function (charCode, token) {\n var str = [];\n\n for (var k = 0; k < token.length; k += 2) {\n var w1 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);\n\n if ((w1 & 0xf800) !== 0xd800) {\n str.push(w1);\n continue;\n }\n\n k += 2;\n var w2 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);\n str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n }\n\n map[charCode] = String.fromCodePoint.apply(String, str);\n });\n return new _fonts.ToUnicodeMap(map);\n }, reason => {\n if (reason instanceof _util.AbortException) {\n return null;\n }\n\n if (this.options.ignoreErrors) {\n this.handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.errorFontToUnicode\n });\n (0, _util.warn)(`readToUnicode - ignoring ToUnicode data: \"${reason}\".`);\n return null;\n }\n\n throw reason;\n });\n }\n\n return Promise.resolve(null);\n }\n\n readCidToGidMap(glyphsData, toUnicode) {\n var result = [];\n\n for (var j = 0, jj = glyphsData.length; j < jj; j++) {\n var glyphID = glyphsData[j++] << 8 | glyphsData[j];\n const code = j >> 1;\n\n if (glyphID === 0 && !toUnicode.has(code)) {\n continue;\n }\n\n result[code] = glyphID;\n }\n\n return result;\n }\n\n extractWidths(dict, descriptor, properties) {\n var xref = this.xref;\n var glyphsWidths = [];\n var defaultWidth = 0;\n var glyphsVMetrics = [];\n var defaultVMetrics;\n var i, ii, j, jj, start, code, widths;\n\n if (properties.composite) {\n defaultWidth = dict.has(\"DW\") ? dict.get(\"DW\") : 1000;\n widths = dict.get(\"W\");\n\n if (widths) {\n for (i = 0, ii = widths.length; i < ii; i++) {\n start = xref.fetchIfRef(widths[i++]);\n code = xref.fetchIfRef(widths[i]);\n\n if (Array.isArray(code)) {\n for (j = 0, jj = code.length; j < jj; j++) {\n glyphsWidths[start++] = xref.fetchIfRef(code[j]);\n }\n } else {\n var width = xref.fetchIfRef(widths[++i]);\n\n for (j = start; j <= code; j++) {\n glyphsWidths[j] = width;\n }\n }\n }\n }\n\n if (properties.vertical) {\n var vmetrics = dict.getArray(\"DW2\") || [880, -1000];\n defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n vmetrics = dict.get(\"W2\");\n\n if (vmetrics) {\n for (i = 0, ii = vmetrics.length; i < ii; i++) {\n start = xref.fetchIfRef(vmetrics[i++]);\n code = xref.fetchIfRef(vmetrics[i]);\n\n if (Array.isArray(code)) {\n for (j = 0, jj = code.length; j < jj; j++) {\n glyphsVMetrics[start++] = [xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j])];\n }\n } else {\n var vmetric = [xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i])];\n\n for (j = start; j <= code; j++) {\n glyphsVMetrics[j] = vmetric;\n }\n }\n }\n }\n }\n } else {\n var firstChar = properties.firstChar;\n widths = dict.get(\"Widths\");\n\n if (widths) {\n j = firstChar;\n\n for (i = 0, ii = widths.length; i < ii; i++) {\n glyphsWidths[j++] = xref.fetchIfRef(widths[i]);\n }\n\n defaultWidth = parseFloat(descriptor.get(\"MissingWidth\")) || 0;\n } else {\n var baseFontName = dict.get(\"BaseFont\");\n\n if ((0, _primitives.isName)(baseFontName)) {\n var metrics = this.getBaseFontMetrics(baseFontName.name);\n glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);\n defaultWidth = metrics.defaultWidth;\n }\n }\n }\n\n var isMonospace = true;\n var firstWidth = defaultWidth;\n\n for (var glyph in glyphsWidths) {\n var glyphWidth = glyphsWidths[glyph];\n\n if (!glyphWidth) {\n continue;\n }\n\n if (!firstWidth) {\n firstWidth = glyphWidth;\n continue;\n }\n\n if (firstWidth !== glyphWidth) {\n isMonospace = false;\n break;\n }\n }\n\n if (isMonospace) {\n properties.flags |= _fonts.FontFlags.FixedPitch;\n }\n\n properties.defaultWidth = defaultWidth;\n properties.widths = glyphsWidths;\n properties.defaultVMetrics = defaultVMetrics;\n properties.vmetrics = glyphsVMetrics;\n }\n\n isSerifFont(baseFontName) {\n var fontNameWoStyle = baseFontName.split(\"-\")[0];\n return fontNameWoStyle in (0, _standard_fonts.getSerifFonts)() || fontNameWoStyle.search(/serif/gi) !== -1;\n }\n\n getBaseFontMetrics(name) {\n var defaultWidth = 0;\n var widths = [];\n var monospace = false;\n var stdFontMap = (0, _standard_fonts.getStdFontMap)();\n var lookupName = stdFontMap[name] || name;\n var Metrics = (0, _metrics.getMetrics)();\n\n if (!(lookupName in Metrics)) {\n if (this.isSerifFont(name)) {\n lookupName = \"Times-Roman\";\n } else {\n lookupName = \"Helvetica\";\n }\n }\n\n var glyphWidths = Metrics[lookupName];\n\n if ((0, _util.isNum)(glyphWidths)) {\n defaultWidth = glyphWidths;\n monospace = true;\n } else {\n widths = glyphWidths();\n }\n\n return {\n defaultWidth,\n monospace,\n widths\n };\n }\n\n buildCharCodeToWidth(widthsByGlyphName, properties) {\n var widths = Object.create(null);\n var differences = properties.differences;\n var encoding = properties.defaultEncoding;\n\n for (var charCode = 0; charCode < 256; charCode++) {\n if (charCode in differences && widthsByGlyphName[differences[charCode]]) {\n widths[charCode] = widthsByGlyphName[differences[charCode]];\n continue;\n }\n\n if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n widths[charCode] = widthsByGlyphName[encoding[charCode]];\n continue;\n }\n }\n\n return widths;\n }\n\n preEvaluateFont(dict) {\n var baseDict = dict;\n var type = dict.get(\"Subtype\");\n\n if (!(0, _primitives.isName)(type)) {\n throw new _util.FormatError(\"invalid font Subtype\");\n }\n\n var composite = false;\n var uint8array;\n\n if (type.name === \"Type0\") {\n var df = dict.get(\"DescendantFonts\");\n\n if (!df) {\n throw new _util.FormatError(\"Descendant fonts are not specified\");\n }\n\n dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\n type = dict.get(\"Subtype\");\n\n if (!(0, _primitives.isName)(type)) {\n throw new _util.FormatError(\"invalid font Subtype\");\n }\n\n composite = true;\n }\n\n var descriptor = dict.get(\"FontDescriptor\");\n\n if (descriptor) {\n var hash = new _murmurhash.MurmurHash3_64();\n var encoding = baseDict.getRaw(\"Encoding\");\n\n if ((0, _primitives.isName)(encoding)) {\n hash.update(encoding.name);\n } else if ((0, _primitives.isRef)(encoding)) {\n hash.update(encoding.toString());\n } else if ((0, _primitives.isDict)(encoding)) {\n for (const entry of encoding.getRawValues()) {\n if ((0, _primitives.isName)(entry)) {\n hash.update(entry.name);\n } else if ((0, _primitives.isRef)(entry)) {\n hash.update(entry.toString());\n } else if (Array.isArray(entry)) {\n var diffLength = entry.length,\n diffBuf = new Array(diffLength);\n\n for (var j = 0; j < diffLength; j++) {\n var diffEntry = entry[j];\n\n if ((0, _primitives.isName)(diffEntry)) {\n diffBuf[j] = diffEntry.name;\n } else if ((0, _util.isNum)(diffEntry) || (0, _primitives.isRef)(diffEntry)) {\n diffBuf[j] = diffEntry.toString();\n }\n }\n\n hash.update(diffBuf.join());\n }\n }\n }\n\n const firstChar = dict.get(\"FirstChar\") || 0;\n const lastChar = dict.get(\"LastChar\") || (composite ? 0xffff : 0xff);\n hash.update(`${firstChar}-${lastChar}`);\n var toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n\n if ((0, _primitives.isStream)(toUnicode)) {\n var stream = toUnicode.str || toUnicode;\n uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : new Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start);\n hash.update(uint8array);\n } else if ((0, _primitives.isName)(toUnicode)) {\n hash.update(toUnicode.name);\n }\n\n var widths = dict.get(\"Widths\") || baseDict.get(\"Widths\");\n\n if (widths) {\n uint8array = new Uint8Array(new Uint32Array(widths).buffer);\n hash.update(uint8array);\n }\n }\n\n return {\n descriptor,\n dict,\n baseDict,\n composite,\n type: type.name,\n hash: hash ? hash.hexdigest() : \"\"\n };\n }\n\n translateFont(preEvaluatedFont) {\n var baseDict = preEvaluatedFont.baseDict;\n var dict = preEvaluatedFont.dict;\n var composite = preEvaluatedFont.composite;\n var descriptor = preEvaluatedFont.descriptor;\n var type = preEvaluatedFont.type;\n var maxCharIndex = composite ? 0xffff : 0xff;\n var properties;\n const firstChar = dict.get(\"FirstChar\") || 0;\n const lastChar = dict.get(\"LastChar\") || maxCharIndex;\n\n if (!descriptor) {\n if (type === \"Type3\") {\n descriptor = new _primitives.Dict(null);\n descriptor.set(\"FontName\", _primitives.Name.get(type));\n descriptor.set(\"FontBBox\", dict.getArray(\"FontBBox\") || [0, 0, 0, 0]);\n } else {\n var baseFontName = dict.get(\"BaseFont\");\n\n if (!(0, _primitives.isName)(baseFontName)) {\n throw new _util.FormatError(\"Base font is not specified\");\n }\n\n baseFontName = baseFontName.name.replace(/[,_]/g, \"-\");\n var metrics = this.getBaseFontMetrics(baseFontName);\n var fontNameWoStyle = baseFontName.split(\"-\")[0];\n var flags = (this.isSerifFont(fontNameWoStyle) ? _fonts.FontFlags.Serif : 0) | (metrics.monospace ? _fonts.FontFlags.FixedPitch : 0) | ((0, _standard_fonts.getSymbolsFonts)()[fontNameWoStyle] ? _fonts.FontFlags.Symbolic : _fonts.FontFlags.Nonsymbolic);\n properties = {\n type,\n name: baseFontName,\n widths: metrics.widths,\n defaultWidth: metrics.defaultWidth,\n flags,\n firstChar,\n lastChar\n };\n const widths = dict.get(\"Widths\");\n return this.extractDataStructures(dict, dict, properties).then(newProperties => {\n if (widths) {\n const glyphWidths = [];\n let j = firstChar;\n\n for (let i = 0, ii = widths.length; i < ii; i++) {\n glyphWidths[j++] = this.xref.fetchIfRef(widths[i]);\n }\n\n newProperties.widths = glyphWidths;\n } else {\n newProperties.widths = this.buildCharCodeToWidth(metrics.widths, newProperties);\n }\n\n return new _fonts.Font(baseFontName, null, newProperties);\n });\n }\n }\n\n var fontName = descriptor.get(\"FontName\");\n var baseFont = dict.get(\"BaseFont\");\n\n if ((0, _util.isString)(fontName)) {\n fontName = _primitives.Name.get(fontName);\n }\n\n if ((0, _util.isString)(baseFont)) {\n baseFont = _primitives.Name.get(baseFont);\n }\n\n if (type !== \"Type3\") {\n var fontNameStr = fontName && fontName.name;\n var baseFontStr = baseFont && baseFont.name;\n\n if (fontNameStr !== baseFontStr) {\n (0, _util.info)(`The FontDescriptor\\'s FontName is \"${fontNameStr}\" but ` + `should be the same as the Font\\'s BaseFont \"${baseFontStr}\".`);\n\n if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) {\n fontName = baseFont;\n }\n }\n }\n\n fontName = fontName || baseFont;\n\n if (!(0, _primitives.isName)(fontName)) {\n throw new _util.FormatError(\"invalid font name\");\n }\n\n var fontFile = descriptor.get(\"FontFile\", \"FontFile2\", \"FontFile3\");\n\n if (fontFile) {\n if (fontFile.dict) {\n var subtype = fontFile.dict.get(\"Subtype\");\n\n if (subtype) {\n subtype = subtype.name;\n }\n\n var length1 = fontFile.dict.get(\"Length1\");\n var length2 = fontFile.dict.get(\"Length2\");\n var length3 = fontFile.dict.get(\"Length3\");\n }\n }\n\n properties = {\n type,\n name: fontName.name,\n subtype,\n file: fontFile,\n length1,\n length2,\n length3,\n loadedName: baseDict.loadedName,\n composite,\n fixedPitch: false,\n fontMatrix: dict.getArray(\"FontMatrix\") || _util.FONT_IDENTITY_MATRIX,\n firstChar: firstChar || 0,\n lastChar: lastChar || maxCharIndex,\n bbox: descriptor.getArray(\"FontBBox\"),\n ascent: descriptor.get(\"Ascent\"),\n descent: descriptor.get(\"Descent\"),\n xHeight: descriptor.get(\"XHeight\"),\n capHeight: descriptor.get(\"CapHeight\"),\n flags: descriptor.get(\"Flags\"),\n italicAngle: descriptor.get(\"ItalicAngle\"),\n isType3Font: false\n };\n var cMapPromise;\n\n if (composite) {\n var cidEncoding = baseDict.get(\"Encoding\");\n\n if ((0, _primitives.isName)(cidEncoding)) {\n properties.cidEncoding = cidEncoding.name;\n }\n\n cMapPromise = _cmap.CMapFactory.create({\n encoding: cidEncoding,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null\n }).then(function (cMap) {\n properties.cMap = cMap;\n properties.vertical = properties.cMap.vertical;\n });\n } else {\n cMapPromise = Promise.resolve(undefined);\n }\n\n return cMapPromise.then(() => {\n return this.extractDataStructures(dict, baseDict, properties);\n }).then(newProperties => {\n this.extractWidths(dict, descriptor, newProperties);\n\n if (type === \"Type3\") {\n newProperties.isType3Font = true;\n }\n\n return new _fonts.Font(fontName.name, fontFile, newProperties);\n });\n }\n\n static buildFontPaths(font, glyphs, handler) {\n function buildPath(fontChar) {\n if (font.renderer.hasBuiltPath(fontChar)) {\n return;\n }\n\n handler.send(\"commonobj\", [`${font.loadedName}_path_${fontChar}`, \"FontPath\", font.renderer.getPathJs(fontChar)]);\n }\n\n for (const glyph of glyphs) {\n buildPath(glyph.fontChar);\n const accent = glyph.accent;\n\n if (accent && accent.fontChar) {\n buildPath(accent.fontChar);\n }\n }\n }\n\n static get fallbackFontDict() {\n const dict = new _primitives.Dict();\n dict.set(\"BaseFont\", _primitives.Name.get(\"PDFJS-FallbackFont\"));\n dict.set(\"Type\", _primitives.Name.get(\"FallbackType\"));\n dict.set(\"Subtype\", _primitives.Name.get(\"FallbackType\"));\n dict.set(\"Encoding\", _primitives.Name.get(\"WinAnsiEncoding\"));\n return (0, _util.shadow)(this, \"fallbackFontDict\", dict);\n }\n\n}\n\nexports.PartialEvaluator = PartialEvaluator;\n\nclass TranslatedFont {\n constructor({\n loadedName,\n font,\n dict,\n extraProperties = false\n }) {\n this.loadedName = loadedName;\n this.font = font;\n this.dict = dict;\n this._extraProperties = extraProperties;\n this.type3Loaded = null;\n this.type3Dependencies = font.isType3Font ? new Set() : null;\n this.sent = false;\n }\n\n send(handler) {\n if (this.sent) {\n return;\n }\n\n this.sent = true;\n handler.send(\"commonobj\", [this.loadedName, \"Font\", this.font.exportData(this._extraProperties)]);\n }\n\n fallback(handler) {\n if (!this.font.data) {\n return;\n }\n\n this.font.disableFontFace = true;\n const glyphs = this.font.glyphCacheValues;\n PartialEvaluator.buildFontPaths(this.font, glyphs, handler);\n }\n\n loadType3Data(evaluator, resources, task) {\n if (this.type3Loaded) {\n return this.type3Loaded;\n }\n\n if (!this.font.isType3Font) {\n throw new Error(\"Must be a Type3 font.\");\n }\n\n var type3Options = Object.create(evaluator.options);\n type3Options.ignoreErrors = false;\n var type3Evaluator = evaluator.clone(type3Options);\n type3Evaluator.parsingType3Font = true;\n const translatedFont = this.font,\n type3Dependencies = this.type3Dependencies;\n var loadCharProcsPromise = Promise.resolve();\n var charProcs = this.dict.get(\"CharProcs\");\n var fontResources = this.dict.get(\"Resources\") || resources;\n var charProcOperatorList = Object.create(null);\n\n for (const key of charProcs.getKeys()) {\n loadCharProcsPromise = loadCharProcsPromise.then(function () {\n var glyphStream = charProcs.get(key);\n var operatorList = new _operator_list.OperatorList();\n return type3Evaluator.getOperatorList({\n stream: glyphStream,\n task,\n resources: fontResources,\n operatorList\n }).then(function () {\n charProcOperatorList[key] = operatorList.getIR();\n\n for (const dependency of operatorList.dependencies) {\n type3Dependencies.add(dependency);\n }\n }).catch(function (reason) {\n (0, _util.warn)(`Type3 font resource \"${key}\" is not available.`);\n const dummyOperatorList = new _operator_list.OperatorList();\n charProcOperatorList[key] = dummyOperatorList.getIR();\n });\n });\n }\n\n this.type3Loaded = loadCharProcsPromise.then(function () {\n translatedFont.charProcOperatorList = charProcOperatorList;\n });\n return this.type3Loaded;\n }\n\n}\n\nclass StateManager {\n constructor(initialState) {\n this.state = initialState;\n this.stateStack = [];\n }\n\n save() {\n var old = this.state;\n this.stateStack.push(this.state);\n this.state = old.clone();\n }\n\n restore() {\n var prev = this.stateStack.pop();\n\n if (prev) {\n this.state = prev;\n }\n }\n\n transform(args) {\n this.state.ctm = _util.Util.transform(this.state.ctm, args);\n }\n\n}\n\nclass TextState {\n constructor() {\n this.ctm = new Float32Array(_util.IDENTITY_MATRIX);\n this.fontName = null;\n this.fontSize = 0;\n this.font = null;\n this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n this.textMatrix = _util.IDENTITY_MATRIX.slice();\n this.textLineMatrix = _util.IDENTITY_MATRIX.slice();\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.leading = 0;\n this.textHScale = 1;\n this.textRise = 0;\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n var m = this.textMatrix;\n m[0] = a;\n m[1] = b;\n m[2] = c;\n m[3] = d;\n m[4] = e;\n m[5] = f;\n }\n\n setTextLineMatrix(a, b, c, d, e, f) {\n var m = this.textLineMatrix;\n m[0] = a;\n m[1] = b;\n m[2] = c;\n m[3] = d;\n m[4] = e;\n m[5] = f;\n }\n\n translateTextMatrix(x, y) {\n var m = this.textMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n }\n\n translateTextLineMatrix(x, y) {\n var m = this.textLineMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n }\n\n calcTextLineMatrixAdvance(a, b, c, d, e, f) {\n var font = this.font;\n\n if (!font) {\n return null;\n }\n\n var m = this.textLineMatrix;\n\n if (!(a === m[0] && b === m[1] && c === m[2] && d === m[3])) {\n return null;\n }\n\n var txDiff = e - m[4],\n tyDiff = f - m[5];\n\n if (font.vertical && txDiff !== 0 || !font.vertical && tyDiff !== 0) {\n return null;\n }\n\n var tx,\n ty,\n denominator = a * d - b * c;\n\n if (font.vertical) {\n tx = -tyDiff * c / denominator;\n ty = tyDiff * a / denominator;\n } else {\n tx = txDiff * d / denominator;\n ty = -txDiff * b / denominator;\n }\n\n return {\n width: tx,\n height: ty,\n value: font.vertical ? ty : tx\n };\n }\n\n calcRenderMatrix(ctm) {\n var tsm = [this.fontSize * this.textHScale, 0, 0, this.fontSize, 0, this.textRise];\n return _util.Util.transform(ctm, _util.Util.transform(this.textMatrix, tsm));\n }\n\n carriageReturn() {\n this.translateTextLineMatrix(0, -this.leading);\n this.textMatrix = this.textLineMatrix.slice();\n }\n\n clone() {\n var clone = Object.create(this);\n clone.textMatrix = this.textMatrix.slice();\n clone.textLineMatrix = this.textLineMatrix.slice();\n clone.fontMatrix = this.fontMatrix.slice();\n return clone;\n }\n\n}\n\nclass EvalState {\n constructor() {\n this.ctm = new Float32Array(_util.IDENTITY_MATRIX);\n this.font = null;\n this.textRenderingMode = _util.TextRenderingMode.FILL;\n this.fillColorSpace = _colorspace.ColorSpace.singletons.gray;\n this.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;\n }\n\n clone() {\n return Object.create(this);\n }\n\n}\n\nclass EvaluatorPreprocessor {\n static get opMap() {\n const getOPMap = (0, _core_utils.getLookupTableFactory)(function (t) {\n t.w = {\n id: _util.OPS.setLineWidth,\n numArgs: 1,\n variableArgs: false\n };\n t.J = {\n id: _util.OPS.setLineCap,\n numArgs: 1,\n variableArgs: false\n };\n t.j = {\n id: _util.OPS.setLineJoin,\n numArgs: 1,\n variableArgs: false\n };\n t.M = {\n id: _util.OPS.setMiterLimit,\n numArgs: 1,\n variableArgs: false\n };\n t.d = {\n id: _util.OPS.setDash,\n numArgs: 2,\n variableArgs: false\n };\n t.ri = {\n id: _util.OPS.setRenderingIntent,\n numArgs: 1,\n variableArgs: false\n };\n t.i = {\n id: _util.OPS.setFlatness,\n numArgs: 1,\n variableArgs: false\n };\n t.gs = {\n id: _util.OPS.setGState,\n numArgs: 1,\n variableArgs: false\n };\n t.q = {\n id: _util.OPS.save,\n numArgs: 0,\n variableArgs: false\n };\n t.Q = {\n id: _util.OPS.restore,\n numArgs: 0,\n variableArgs: false\n };\n t.cm = {\n id: _util.OPS.transform,\n numArgs: 6,\n variableArgs: false\n };\n t.m = {\n id: _util.OPS.moveTo,\n numArgs: 2,\n variableArgs: false\n };\n t.l = {\n id: _util.OPS.lineTo,\n numArgs: 2,\n variableArgs: false\n };\n t.c = {\n id: _util.OPS.curveTo,\n numArgs: 6,\n variableArgs: false\n };\n t.v = {\n id: _util.OPS.curveTo2,\n numArgs: 4,\n variableArgs: false\n };\n t.y = {\n id: _util.OPS.curveTo3,\n numArgs: 4,\n variableArgs: false\n };\n t.h = {\n id: _util.OPS.closePath,\n numArgs: 0,\n variableArgs: false\n };\n t.re = {\n id: _util.OPS.rectangle,\n numArgs: 4,\n variableArgs: false\n };\n t.S = {\n id: _util.OPS.stroke,\n numArgs: 0,\n variableArgs: false\n };\n t.s = {\n id: _util.OPS.closeStroke,\n numArgs: 0,\n variableArgs: false\n };\n t.f = {\n id: _util.OPS.fill,\n numArgs: 0,\n variableArgs: false\n };\n t.F = {\n id: _util.OPS.fill,\n numArgs: 0,\n variableArgs: false\n };\n t[\"f*\"] = {\n id: _util.OPS.eoFill,\n numArgs: 0,\n variableArgs: false\n };\n t.B = {\n id: _util.OPS.fillStroke,\n numArgs: 0,\n variableArgs: false\n };\n t[\"B*\"] = {\n id: _util.OPS.eoFillStroke,\n numArgs: 0,\n variableArgs: false\n };\n t.b = {\n id: _util.OPS.closeFillStroke,\n numArgs: 0,\n variableArgs: false\n };\n t[\"b*\"] = {\n id: _util.OPS.closeEOFillStroke,\n numArgs: 0,\n variableArgs: false\n };\n t.n = {\n id: _util.OPS.endPath,\n numArgs: 0,\n variableArgs: false\n };\n t.W = {\n id: _util.OPS.clip,\n numArgs: 0,\n variableArgs: false\n };\n t[\"W*\"] = {\n id: _util.OPS.eoClip,\n numArgs: 0,\n variableArgs: false\n };\n t.BT = {\n id: _util.OPS.beginText,\n numArgs: 0,\n variableArgs: false\n };\n t.ET = {\n id: _util.OPS.endText,\n numArgs: 0,\n variableArgs: false\n };\n t.Tc = {\n id: _util.OPS.setCharSpacing,\n numArgs: 1,\n variableArgs: false\n };\n t.Tw = {\n id: _util.OPS.setWordSpacing,\n numArgs: 1,\n variableArgs: false\n };\n t.Tz = {\n id: _util.OPS.setHScale,\n numArgs: 1,\n variableArgs: false\n };\n t.TL = {\n id: _util.OPS.setLeading,\n numArgs: 1,\n variableArgs: false\n };\n t.Tf = {\n id: _util.OPS.setFont,\n numArgs: 2,\n variableArgs: false\n };\n t.Tr = {\n id: _util.OPS.setTextRenderingMode,\n numArgs: 1,\n variableArgs: false\n };\n t.Ts = {\n id: _util.OPS.setTextRise,\n numArgs: 1,\n variableArgs: false\n };\n t.Td = {\n id: _util.OPS.moveText,\n numArgs: 2,\n variableArgs: false\n };\n t.TD = {\n id: _util.OPS.setLeadingMoveText,\n numArgs: 2,\n variableArgs: false\n };\n t.Tm = {\n id: _util.OPS.setTextMatrix,\n numArgs: 6,\n variableArgs: false\n };\n t[\"T*\"] = {\n id: _util.OPS.nextLine,\n numArgs: 0,\n variableArgs: false\n };\n t.Tj = {\n id: _util.OPS.showText,\n numArgs: 1,\n variableArgs: false\n };\n t.TJ = {\n id: _util.OPS.showSpacedText,\n numArgs: 1,\n variableArgs: false\n };\n t[\"'\"] = {\n id: _util.OPS.nextLineShowText,\n numArgs: 1,\n variableArgs: false\n };\n t['\"'] = {\n id: _util.OPS.nextLineSetSpacingShowText,\n numArgs: 3,\n variableArgs: false\n };\n t.d0 = {\n id: _util.OPS.setCharWidth,\n numArgs: 2,\n variableArgs: false\n };\n t.d1 = {\n id: _util.OPS.setCharWidthAndBounds,\n numArgs: 6,\n variableArgs: false\n };\n t.CS = {\n id: _util.OPS.setStrokeColorSpace,\n numArgs: 1,\n variableArgs: false\n };\n t.cs = {\n id: _util.OPS.setFillColorSpace,\n numArgs: 1,\n variableArgs: false\n };\n t.SC = {\n id: _util.OPS.setStrokeColor,\n numArgs: 4,\n variableArgs: true\n };\n t.SCN = {\n id: _util.OPS.setStrokeColorN,\n numArgs: 33,\n variableArgs: true\n };\n t.sc = {\n id: _util.OPS.setFillColor,\n numArgs: 4,\n variableArgs: true\n };\n t.scn = {\n id: _util.OPS.setFillColorN,\n numArgs: 33,\n variableArgs: true\n };\n t.G = {\n id: _util.OPS.setStrokeGray,\n numArgs: 1,\n variableArgs: false\n };\n t.g = {\n id: _util.OPS.setFillGray,\n numArgs: 1,\n variableArgs: false\n };\n t.RG = {\n id: _util.OPS.setStrokeRGBColor,\n numArgs: 3,\n variableArgs: false\n };\n t.rg = {\n id: _util.OPS.setFillRGBColor,\n numArgs: 3,\n variableArgs: false\n };\n t.K = {\n id: _util.OPS.setStrokeCMYKColor,\n numArgs: 4,\n variableArgs: false\n };\n t.k = {\n id: _util.OPS.setFillCMYKColor,\n numArgs: 4,\n variableArgs: false\n };\n t.sh = {\n id: _util.OPS.shadingFill,\n numArgs: 1,\n variableArgs: false\n };\n t.BI = {\n id: _util.OPS.beginInlineImage,\n numArgs: 0,\n variableArgs: false\n };\n t.ID = {\n id: _util.OPS.beginImageData,\n numArgs: 0,\n variableArgs: false\n };\n t.EI = {\n id: _util.OPS.endInlineImage,\n numArgs: 1,\n variableArgs: false\n };\n t.Do = {\n id: _util.OPS.paintXObject,\n numArgs: 1,\n variableArgs: false\n };\n t.MP = {\n id: _util.OPS.markPoint,\n numArgs: 1,\n variableArgs: false\n };\n t.DP = {\n id: _util.OPS.markPointProps,\n numArgs: 2,\n variableArgs: false\n };\n t.BMC = {\n id: _util.OPS.beginMarkedContent,\n numArgs: 1,\n variableArgs: false\n };\n t.BDC = {\n id: _util.OPS.beginMarkedContentProps,\n numArgs: 2,\n variableArgs: false\n };\n t.EMC = {\n id: _util.OPS.endMarkedContent,\n numArgs: 0,\n variableArgs: false\n };\n t.BX = {\n id: _util.OPS.beginCompat,\n numArgs: 0,\n variableArgs: false\n };\n t.EX = {\n id: _util.OPS.endCompat,\n numArgs: 0,\n variableArgs: false\n };\n t.BM = null;\n t.BD = null;\n t.true = null;\n t.fa = null;\n t.fal = null;\n t.fals = null;\n t.false = null;\n t.nu = null;\n t.nul = null;\n t.null = null;\n });\n return (0, _util.shadow)(this, \"opMap\", getOPMap());\n }\n\n static get MAX_INVALID_PATH_OPS() {\n return (0, _util.shadow)(this, \"MAX_INVALID_PATH_OPS\", 20);\n }\n\n constructor(stream, xref, stateManager) {\n this.parser = new _parser.Parser({\n lexer: new _parser.Lexer(stream, EvaluatorPreprocessor.opMap),\n xref\n });\n this.stateManager = stateManager;\n this.nonProcessedArgs = [];\n this._numInvalidPathOPS = 0;\n }\n\n get savedStatesDepth() {\n return this.stateManager.stateStack.length;\n }\n\n read(operation) {\n var args = operation.args;\n\n while (true) {\n var obj = this.parser.getObj();\n\n if (obj instanceof _primitives.Cmd) {\n var cmd = obj.cmd;\n var opSpec = EvaluatorPreprocessor.opMap[cmd];\n\n if (!opSpec) {\n (0, _util.warn)(`Unknown command \"${cmd}\".`);\n continue;\n }\n\n var fn = opSpec.id;\n var numArgs = opSpec.numArgs;\n var argsLength = args !== null ? args.length : 0;\n\n if (!opSpec.variableArgs) {\n if (argsLength !== numArgs) {\n var nonProcessedArgs = this.nonProcessedArgs;\n\n while (argsLength > numArgs) {\n nonProcessedArgs.push(args.shift());\n argsLength--;\n }\n\n while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n if (args === null) {\n args = [];\n }\n\n args.unshift(nonProcessedArgs.pop());\n argsLength++;\n }\n }\n\n if (argsLength < numArgs) {\n const partialMsg = `command ${cmd}: expected ${numArgs} args, ` + `but received ${argsLength} args.`;\n\n if (fn >= _util.OPS.moveTo && fn <= _util.OPS.endPath && ++this._numInvalidPathOPS > EvaluatorPreprocessor.MAX_INVALID_PATH_OPS) {\n throw new _util.FormatError(`Invalid ${partialMsg}`);\n }\n\n (0, _util.warn)(`Skipping ${partialMsg}`);\n\n if (args !== null) {\n args.length = 0;\n }\n\n continue;\n }\n } else if (argsLength > numArgs) {\n (0, _util.info)(`Command ${cmd}: expected [0, ${numArgs}] args, ` + `but received ${argsLength} args.`);\n }\n\n this.preprocessCommand(fn, args);\n operation.fn = fn;\n operation.args = args;\n return true;\n }\n\n if (obj === _primitives.EOF) {\n return false;\n }\n\n if (obj !== null) {\n if (args === null) {\n args = [];\n }\n\n args.push(obj);\n\n if (args.length > 33) {\n throw new _util.FormatError(\"Too many arguments\");\n }\n }\n }\n }\n\n preprocessCommand(fn, args) {\n switch (fn | 0) {\n case _util.OPS.save:\n this.stateManager.save();\n break;\n\n case _util.OPS.restore:\n this.stateManager.restore();\n break;\n\n case _util.OPS.transform:\n this.stateManager.transform(args);\n break;\n }\n }\n\n}\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CMapFactory = exports.IdentityCMap = exports.CMap = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _parser = __w_pdfjs_require__(11);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _stream = __w_pdfjs_require__(12);\n\nvar BUILT_IN_CMAPS = [\"Adobe-GB1-UCS2\", \"Adobe-CNS1-UCS2\", \"Adobe-Japan1-UCS2\", \"Adobe-Korea1-UCS2\", \"78-EUC-H\", \"78-EUC-V\", \"78-H\", \"78-RKSJ-H\", \"78-RKSJ-V\", \"78-V\", \"78ms-RKSJ-H\", \"78ms-RKSJ-V\", \"83pv-RKSJ-H\", \"90ms-RKSJ-H\", \"90ms-RKSJ-V\", \"90msp-RKSJ-H\", \"90msp-RKSJ-V\", \"90pv-RKSJ-H\", \"90pv-RKSJ-V\", \"Add-H\", \"Add-RKSJ-H\", \"Add-RKSJ-V\", \"Add-V\", \"Adobe-CNS1-0\", \"Adobe-CNS1-1\", \"Adobe-CNS1-2\", \"Adobe-CNS1-3\", \"Adobe-CNS1-4\", \"Adobe-CNS1-5\", \"Adobe-CNS1-6\", \"Adobe-GB1-0\", \"Adobe-GB1-1\", \"Adobe-GB1-2\", \"Adobe-GB1-3\", \"Adobe-GB1-4\", \"Adobe-GB1-5\", \"Adobe-Japan1-0\", \"Adobe-Japan1-1\", \"Adobe-Japan1-2\", \"Adobe-Japan1-3\", \"Adobe-Japan1-4\", \"Adobe-Japan1-5\", \"Adobe-Japan1-6\", \"Adobe-Korea1-0\", \"Adobe-Korea1-1\", \"Adobe-Korea1-2\", \"B5-H\", \"B5-V\", \"B5pc-H\", \"B5pc-V\", \"CNS-EUC-H\", \"CNS-EUC-V\", \"CNS1-H\", \"CNS1-V\", \"CNS2-H\", \"CNS2-V\", \"ETHK-B5-H\", \"ETHK-B5-V\", \"ETen-B5-H\", \"ETen-B5-V\", \"ETenms-B5-H\", \"ETenms-B5-V\", \"EUC-H\", \"EUC-V\", \"Ext-H\", \"Ext-RKSJ-H\", \"Ext-RKSJ-V\", \"Ext-V\", \"GB-EUC-H\", \"GB-EUC-V\", \"GB-H\", \"GB-V\", \"GBK-EUC-H\", \"GBK-EUC-V\", \"GBK2K-H\", \"GBK2K-V\", \"GBKp-EUC-H\", \"GBKp-EUC-V\", \"GBT-EUC-H\", \"GBT-EUC-V\", \"GBT-H\", \"GBT-V\", \"GBTpc-EUC-H\", \"GBTpc-EUC-V\", \"GBpc-EUC-H\", \"GBpc-EUC-V\", \"H\", \"HKdla-B5-H\", \"HKdla-B5-V\", \"HKdlb-B5-H\", \"HKdlb-B5-V\", \"HKgccs-B5-H\", \"HKgccs-B5-V\", \"HKm314-B5-H\", \"HKm314-B5-V\", \"HKm471-B5-H\", \"HKm471-B5-V\", \"HKscs-B5-H\", \"HKscs-B5-V\", \"Hankaku\", \"Hiragana\", \"KSC-EUC-H\", \"KSC-EUC-V\", \"KSC-H\", \"KSC-Johab-H\", \"KSC-Johab-V\", \"KSC-V\", \"KSCms-UHC-H\", \"KSCms-UHC-HW-H\", \"KSCms-UHC-HW-V\", \"KSCms-UHC-V\", \"KSCpc-EUC-H\", \"KSCpc-EUC-V\", \"Katakana\", \"NWP-H\", \"NWP-V\", \"RKSJ-H\", \"RKSJ-V\", \"Roman\", \"UniCNS-UCS2-H\", \"UniCNS-UCS2-V\", \"UniCNS-UTF16-H\", \"UniCNS-UTF16-V\", \"UniCNS-UTF32-H\", \"UniCNS-UTF32-V\", \"UniCNS-UTF8-H\", \"UniCNS-UTF8-V\", \"UniGB-UCS2-H\", \"UniGB-UCS2-V\", \"UniGB-UTF16-H\", \"UniGB-UTF16-V\", \"UniGB-UTF32-H\", \"UniGB-UTF32-V\", \"UniGB-UTF8-H\", \"UniGB-UTF8-V\", \"UniJIS-UCS2-H\", \"UniJIS-UCS2-HW-H\", \"UniJIS-UCS2-HW-V\", \"UniJIS-UCS2-V\", \"UniJIS-UTF16-H\", \"UniJIS-UTF16-V\", \"UniJIS-UTF32-H\", \"UniJIS-UTF32-V\", \"UniJIS-UTF8-H\", \"UniJIS-UTF8-V\", \"UniJIS2004-UTF16-H\", \"UniJIS2004-UTF16-V\", \"UniJIS2004-UTF32-H\", \"UniJIS2004-UTF32-V\", \"UniJIS2004-UTF8-H\", \"UniJIS2004-UTF8-V\", \"UniJISPro-UCS2-HW-V\", \"UniJISPro-UCS2-V\", \"UniJISPro-UTF8-V\", \"UniJISX0213-UTF32-H\", \"UniJISX0213-UTF32-V\", \"UniJISX02132004-UTF32-H\", \"UniJISX02132004-UTF32-V\", \"UniKS-UCS2-H\", \"UniKS-UCS2-V\", \"UniKS-UTF16-H\", \"UniKS-UTF16-V\", \"UniKS-UTF32-H\", \"UniKS-UTF32-V\", \"UniKS-UTF8-H\", \"UniKS-UTF8-V\", \"V\", \"WP-Symbol\"];\nconst MAX_MAP_RANGE = 2 ** 24 - 1;\n\nclass CMap {\n constructor(builtInCMap = false) {\n this.codespaceRanges = [[], [], [], []];\n this.numCodespaceRanges = 0;\n this._map = [];\n this.name = \"\";\n this.vertical = false;\n this.useCMap = null;\n this.builtInCMap = builtInCMap;\n }\n\n addCodespaceRange(n, low, high) {\n this.codespaceRanges[n - 1].push(low, high);\n this.numCodespaceRanges++;\n }\n\n mapCidRange(low, high, dstLow) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapCidRange - ignoring data above MAX_MAP_RANGE.\");\n }\n\n while (low <= high) {\n this._map[low++] = dstLow++;\n }\n }\n\n mapBfRange(low, high, dstLow) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapBfRange - ignoring data above MAX_MAP_RANGE.\");\n }\n\n var lastByte = dstLow.length - 1;\n\n while (low <= high) {\n this._map[low++] = dstLow;\n dstLow = dstLow.substring(0, lastByte) + String.fromCharCode(dstLow.charCodeAt(lastByte) + 1);\n }\n }\n\n mapBfRangeToArray(low, high, array) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.\");\n }\n\n const ii = array.length;\n let i = 0;\n\n while (low <= high && i < ii) {\n this._map[low] = array[i++];\n ++low;\n }\n }\n\n mapOne(src, dst) {\n this._map[src] = dst;\n }\n\n lookup(code) {\n return this._map[code];\n }\n\n contains(code) {\n return this._map[code] !== undefined;\n }\n\n forEach(callback) {\n const map = this._map;\n const length = map.length;\n\n if (length <= 0x10000) {\n for (let i = 0; i < length; i++) {\n if (map[i] !== undefined) {\n callback(i, map[i]);\n }\n }\n } else {\n for (const i in map) {\n callback(i, map[i]);\n }\n }\n }\n\n charCodeOf(value) {\n const map = this._map;\n\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n\n for (const charCode in map) {\n if (map[charCode] === value) {\n return charCode | 0;\n }\n }\n\n return -1;\n }\n\n getMap() {\n return this._map;\n }\n\n readCharCode(str, offset, out) {\n let c = 0;\n const codespaceRanges = this.codespaceRanges;\n\n for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n c = (c << 8 | str.charCodeAt(offset + n)) >>> 0;\n const codespaceRange = codespaceRanges[n];\n\n for (let k = 0, kk = codespaceRange.length; k < kk;) {\n const low = codespaceRange[k++];\n const high = codespaceRange[k++];\n\n if (c >= low && c <= high) {\n out.charcode = c;\n out.length = n + 1;\n return;\n }\n }\n }\n\n out.charcode = 0;\n out.length = 1;\n }\n\n get length() {\n return this._map.length;\n }\n\n get isIdentityCMap() {\n if (!(this.name === \"Identity-H\" || this.name === \"Identity-V\")) {\n return false;\n }\n\n if (this._map.length !== 0x10000) {\n return false;\n }\n\n for (let i = 0; i < 0x10000; i++) {\n if (this._map[i] !== i) {\n return false;\n }\n }\n\n return true;\n }\n\n}\n\nexports.CMap = CMap;\n\nclass IdentityCMap extends CMap {\n constructor(vertical, n) {\n super();\n this.vertical = vertical;\n this.addCodespaceRange(n, 0, 0xffff);\n }\n\n mapCidRange(low, high, dstLow) {\n (0, _util.unreachable)(\"should not call mapCidRange\");\n }\n\n mapBfRange(low, high, dstLow) {\n (0, _util.unreachable)(\"should not call mapBfRange\");\n }\n\n mapBfRangeToArray(low, high, array) {\n (0, _util.unreachable)(\"should not call mapBfRangeToArray\");\n }\n\n mapOne(src, dst) {\n (0, _util.unreachable)(\"should not call mapCidOne\");\n }\n\n lookup(code) {\n return Number.isInteger(code) && code <= 0xffff ? code : undefined;\n }\n\n contains(code) {\n return Number.isInteger(code) && code <= 0xffff;\n }\n\n forEach(callback) {\n for (let i = 0; i <= 0xffff; i++) {\n callback(i, i);\n }\n }\n\n charCodeOf(value) {\n return Number.isInteger(value) && value <= 0xffff ? value : -1;\n }\n\n getMap() {\n const map = new Array(0x10000);\n\n for (let i = 0; i <= 0xffff; i++) {\n map[i] = i;\n }\n\n return map;\n }\n\n get length() {\n return 0x10000;\n }\n\n get isIdentityCMap() {\n (0, _util.unreachable)(\"should not access .isIdentityCMap\");\n }\n\n}\n\nexports.IdentityCMap = IdentityCMap;\n\nvar BinaryCMapReader = function BinaryCMapReaderClosure() {\n function hexToInt(a, size) {\n var n = 0;\n\n for (var i = 0; i <= size; i++) {\n n = n << 8 | a[i];\n }\n\n return n >>> 0;\n }\n\n function hexToStr(a, size) {\n if (size === 1) {\n return String.fromCharCode(a[0], a[1]);\n }\n\n if (size === 3) {\n return String.fromCharCode(a[0], a[1], a[2], a[3]);\n }\n\n return String.fromCharCode.apply(null, a.subarray(0, size + 1));\n }\n\n function addHex(a, b, size) {\n var c = 0;\n\n for (var i = size; i >= 0; i--) {\n c += a[i] + b[i];\n a[i] = c & 255;\n c >>= 8;\n }\n }\n\n function incHex(a, size) {\n var c = 1;\n\n for (var i = size; i >= 0 && c > 0; i--) {\n c += a[i];\n a[i] = c & 255;\n c >>= 8;\n }\n }\n\n var MAX_NUM_SIZE = 16;\n var MAX_ENCODED_NUM_SIZE = 19;\n\n function BinaryCMapStream(data) {\n this.buffer = data;\n this.pos = 0;\n this.end = data.length;\n this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n }\n\n BinaryCMapStream.prototype = {\n readByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n\n return this.buffer[this.pos++];\n },\n\n readNumber() {\n var n = 0;\n var last;\n\n do {\n var b = this.readByte();\n\n if (b < 0) {\n throw new _util.FormatError(\"unexpected EOF in bcmap\");\n }\n\n last = !(b & 0x80);\n n = n << 7 | b & 0x7f;\n } while (!last);\n\n return n;\n },\n\n readSigned() {\n var n = this.readNumber();\n return n & 1 ? ~(n >>> 1) : n >>> 1;\n },\n\n readHex(num, size) {\n num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\n this.pos += size + 1;\n },\n\n readHexNumber(num, size) {\n var last;\n var stack = this.tmpBuf,\n sp = 0;\n\n do {\n var b = this.readByte();\n\n if (b < 0) {\n throw new _util.FormatError(\"unexpected EOF in bcmap\");\n }\n\n last = !(b & 0x80);\n stack[sp++] = b & 0x7f;\n } while (!last);\n\n var i = size,\n buffer = 0,\n bufferSize = 0;\n\n while (i >= 0) {\n while (bufferSize < 8 && stack.length > 0) {\n buffer = stack[--sp] << bufferSize | buffer;\n bufferSize += 7;\n }\n\n num[i] = buffer & 255;\n i--;\n buffer >>= 8;\n bufferSize -= 8;\n }\n },\n\n readHexSigned(num, size) {\n this.readHexNumber(num, size);\n var sign = num[size] & 1 ? 255 : 0;\n var c = 0;\n\n for (var i = 0; i <= size; i++) {\n c = (c & 1) << 8 | num[i];\n num[i] = c >> 1 ^ sign;\n }\n },\n\n readString() {\n var len = this.readNumber();\n var s = \"\";\n\n for (var i = 0; i < len; i++) {\n s += String.fromCharCode(this.readNumber());\n }\n\n return s;\n }\n\n };\n\n function processBinaryCMap(data, cMap, extend) {\n return new Promise(function (resolve, reject) {\n var stream = new BinaryCMapStream(data);\n var header = stream.readByte();\n cMap.vertical = !!(header & 1);\n var useCMap = null;\n var start = new Uint8Array(MAX_NUM_SIZE);\n var end = new Uint8Array(MAX_NUM_SIZE);\n var char = new Uint8Array(MAX_NUM_SIZE);\n var charCode = new Uint8Array(MAX_NUM_SIZE);\n var tmp = new Uint8Array(MAX_NUM_SIZE);\n var code;\n var b;\n\n while ((b = stream.readByte()) >= 0) {\n var type = b >> 5;\n\n if (type === 7) {\n switch (b & 0x1f) {\n case 0:\n stream.readString();\n break;\n\n case 1:\n useCMap = stream.readString();\n break;\n }\n\n continue;\n }\n\n var sequence = !!(b & 0x10);\n var dataSize = b & 15;\n\n if (dataSize + 1 > MAX_NUM_SIZE) {\n throw new Error(\"processBinaryCMap: Invalid dataSize.\");\n }\n\n var ucs2DataSize = 1;\n var subitemsCount = stream.readNumber();\n var i;\n\n switch (type) {\n case 0:\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));\n\n for (i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));\n }\n\n break;\n\n case 1:\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber();\n\n for (i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber();\n }\n\n break;\n\n case 2:\n stream.readHex(char, dataSize);\n code = stream.readNumber();\n cMap.mapOne(hexToInt(char, dataSize), code);\n\n for (i = 1; i < subitemsCount; i++) {\n incHex(char, dataSize);\n\n if (!sequence) {\n stream.readHexNumber(tmp, dataSize);\n addHex(char, tmp, dataSize);\n }\n\n code = stream.readSigned() + (code + 1);\n cMap.mapOne(hexToInt(char, dataSize), code);\n }\n\n break;\n\n case 3:\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);\n\n for (i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n\n if (!sequence) {\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n } else {\n start.set(end);\n }\n\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);\n }\n\n break;\n\n case 4:\n stream.readHex(char, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));\n\n for (i = 1; i < subitemsCount; i++) {\n incHex(char, ucs2DataSize);\n\n if (!sequence) {\n stream.readHexNumber(tmp, ucs2DataSize);\n addHex(char, tmp, ucs2DataSize);\n }\n\n incHex(charCode, dataSize);\n stream.readHexSigned(tmp, dataSize);\n addHex(charCode, tmp, dataSize);\n cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));\n }\n\n break;\n\n case 5:\n stream.readHex(start, ucs2DataSize);\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));\n\n for (i = 1; i < subitemsCount; i++) {\n incHex(end, ucs2DataSize);\n\n if (!sequence) {\n stream.readHexNumber(start, ucs2DataSize);\n addHex(start, end, ucs2DataSize);\n } else {\n start.set(end);\n }\n\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));\n }\n\n break;\n\n default:\n reject(new Error(\"processBinaryCMap: Unknown type: \" + type));\n return;\n }\n }\n\n if (useCMap) {\n resolve(extend(useCMap));\n return;\n }\n\n resolve(cMap);\n });\n }\n\n function BinaryCMapReader() {}\n\n BinaryCMapReader.prototype = {\n process: processBinaryCMap\n };\n return BinaryCMapReader;\n}();\n\nvar CMapFactory = function CMapFactoryClosure() {\n function strToInt(str) {\n var a = 0;\n\n for (var i = 0; i < str.length; i++) {\n a = a << 8 | str.charCodeAt(i);\n }\n\n return a >>> 0;\n }\n\n function expectString(obj) {\n if (!(0, _util.isString)(obj)) {\n throw new _util.FormatError(\"Malformed CMap: expected string.\");\n }\n }\n\n function expectInt(obj) {\n if (!Number.isInteger(obj)) {\n throw new _util.FormatError(\"Malformed CMap: expected int.\");\n }\n }\n\n function parseBfChar(cMap, lexer) {\n while (true) {\n var obj = lexer.getObj();\n\n if ((0, _primitives.isEOF)(obj)) {\n break;\n }\n\n if ((0, _primitives.isCmd)(obj, \"endbfchar\")) {\n return;\n }\n\n expectString(obj);\n var src = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n var dst = obj;\n cMap.mapOne(src, dst);\n }\n }\n\n function parseBfRange(cMap, lexer) {\n while (true) {\n var obj = lexer.getObj();\n\n if ((0, _primitives.isEOF)(obj)) {\n break;\n }\n\n if ((0, _primitives.isCmd)(obj, \"endbfrange\")) {\n return;\n }\n\n expectString(obj);\n var low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n var high = strToInt(obj);\n obj = lexer.getObj();\n\n if (Number.isInteger(obj) || (0, _util.isString)(obj)) {\n var dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n cMap.mapBfRange(low, high, dstLow);\n } else if ((0, _primitives.isCmd)(obj, \"[\")) {\n obj = lexer.getObj();\n var array = [];\n\n while (!(0, _primitives.isCmd)(obj, \"]\") && !(0, _primitives.isEOF)(obj)) {\n array.push(obj);\n obj = lexer.getObj();\n }\n\n cMap.mapBfRangeToArray(low, high, array);\n } else {\n break;\n }\n }\n\n throw new _util.FormatError(\"Invalid bf range.\");\n }\n\n function parseCidChar(cMap, lexer) {\n while (true) {\n var obj = lexer.getObj();\n\n if ((0, _primitives.isEOF)(obj)) {\n break;\n }\n\n if ((0, _primitives.isCmd)(obj, \"endcidchar\")) {\n return;\n }\n\n expectString(obj);\n var src = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n var dst = obj;\n cMap.mapOne(src, dst);\n }\n }\n\n function parseCidRange(cMap, lexer) {\n while (true) {\n var obj = lexer.getObj();\n\n if ((0, _primitives.isEOF)(obj)) {\n break;\n }\n\n if ((0, _primitives.isCmd)(obj, \"endcidrange\")) {\n return;\n }\n\n expectString(obj);\n var low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n var high = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n var dstLow = obj;\n cMap.mapCidRange(low, high, dstLow);\n }\n }\n\n function parseCodespaceRange(cMap, lexer) {\n while (true) {\n var obj = lexer.getObj();\n\n if ((0, _primitives.isEOF)(obj)) {\n break;\n }\n\n if ((0, _primitives.isCmd)(obj, \"endcodespacerange\")) {\n return;\n }\n\n if (!(0, _util.isString)(obj)) {\n break;\n }\n\n var low = strToInt(obj);\n obj = lexer.getObj();\n\n if (!(0, _util.isString)(obj)) {\n break;\n }\n\n var high = strToInt(obj);\n cMap.addCodespaceRange(obj.length, low, high);\n }\n\n throw new _util.FormatError(\"Invalid codespace range.\");\n }\n\n function parseWMode(cMap, lexer) {\n var obj = lexer.getObj();\n\n if (Number.isInteger(obj)) {\n cMap.vertical = !!obj;\n }\n }\n\n function parseCMapName(cMap, lexer) {\n var obj = lexer.getObj();\n\n if ((0, _primitives.isName)(obj) && (0, _util.isString)(obj.name)) {\n cMap.name = obj.name;\n }\n }\n\n function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n var previous;\n var embeddedUseCMap;\n\n objLoop: while (true) {\n try {\n var obj = lexer.getObj();\n\n if ((0, _primitives.isEOF)(obj)) {\n break;\n } else if ((0, _primitives.isName)(obj)) {\n if (obj.name === \"WMode\") {\n parseWMode(cMap, lexer);\n } else if (obj.name === \"CMapName\") {\n parseCMapName(cMap, lexer);\n }\n\n previous = obj;\n } else if ((0, _primitives.isCmd)(obj)) {\n switch (obj.cmd) {\n case \"endcmap\":\n break objLoop;\n\n case \"usecmap\":\n if ((0, _primitives.isName)(previous)) {\n embeddedUseCMap = previous.name;\n }\n\n break;\n\n case \"begincodespacerange\":\n parseCodespaceRange(cMap, lexer);\n break;\n\n case \"beginbfchar\":\n parseBfChar(cMap, lexer);\n break;\n\n case \"begincidchar\":\n parseCidChar(cMap, lexer);\n break;\n\n case \"beginbfrange\":\n parseBfRange(cMap, lexer);\n break;\n\n case \"begincidrange\":\n parseCidRange(cMap, lexer);\n break;\n }\n }\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n (0, _util.warn)(\"Invalid cMap data: \" + ex);\n continue;\n }\n }\n\n if (!useCMap && embeddedUseCMap) {\n useCMap = embeddedUseCMap;\n }\n\n if (useCMap) {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n }\n\n return Promise.resolve(cMap);\n }\n\n function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n return createBuiltInCMap(useCMap, fetchBuiltInCMap).then(function (newCMap) {\n cMap.useCMap = newCMap;\n\n if (cMap.numCodespaceRanges === 0) {\n var useCodespaceRanges = cMap.useCMap.codespaceRanges;\n\n for (var i = 0; i < useCodespaceRanges.length; i++) {\n cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n }\n\n cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n }\n\n cMap.useCMap.forEach(function (key, value) {\n if (!cMap.contains(key)) {\n cMap.mapOne(key, cMap.useCMap.lookup(key));\n }\n });\n return cMap;\n });\n }\n\n function createBuiltInCMap(name, fetchBuiltInCMap) {\n if (name === \"Identity-H\") {\n return Promise.resolve(new IdentityCMap(false, 2));\n } else if (name === \"Identity-V\") {\n return Promise.resolve(new IdentityCMap(true, 2));\n }\n\n if (!BUILT_IN_CMAPS.includes(name)) {\n return Promise.reject(new Error(\"Unknown CMap name: \" + name));\n }\n\n if (!fetchBuiltInCMap) {\n return Promise.reject(new Error(\"Built-in CMap parameters are not provided.\"));\n }\n\n return fetchBuiltInCMap(name).then(function (data) {\n var cMapData = data.cMapData,\n compressionType = data.compressionType;\n var cMap = new CMap(true);\n\n if (compressionType === _util.CMapCompressionType.BINARY) {\n return new BinaryCMapReader().process(cMapData, cMap, function (useCMap) {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n });\n }\n\n if (compressionType === _util.CMapCompressionType.NONE) {\n var lexer = new _parser.Lexer(new _stream.Stream(cMapData));\n return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n }\n\n return Promise.reject(new Error(\"TODO: Only BINARY/NONE CMap compression is currently supported.\"));\n });\n }\n\n return {\n async create(params) {\n var encoding = params.encoding;\n var fetchBuiltInCMap = params.fetchBuiltInCMap;\n var useCMap = params.useCMap;\n\n if ((0, _primitives.isName)(encoding)) {\n return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n } else if ((0, _primitives.isStream)(encoding)) {\n var cMap = new CMap();\n var lexer = new _parser.Lexer(encoding);\n return parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap).then(function (parsedCMap) {\n if (parsedCMap.isIdentityCMap) {\n return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n }\n\n return parsedCMap;\n });\n }\n\n throw new Error(\"Encoding required.\");\n }\n\n };\n}();\n\nexports.CMapFactory = CMapFactory;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getFontType = getFontType;\nexports.IdentityToUnicodeMap = exports.ToUnicodeMap = exports.FontFlags = exports.Font = exports.ErrorFont = exports.SEAC_ANALYSIS_ENABLED = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _cff_parser = __w_pdfjs_require__(31);\n\nvar _glyphlist = __w_pdfjs_require__(34);\n\nvar _encodings = __w_pdfjs_require__(33);\n\nvar _standard_fonts = __w_pdfjs_require__(35);\n\nvar _unicode = __w_pdfjs_require__(36);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _font_renderer = __w_pdfjs_require__(37);\n\nvar _cmap = __w_pdfjs_require__(29);\n\nvar _stream = __w_pdfjs_require__(12);\n\nvar _type1_parser = __w_pdfjs_require__(38);\n\nconst PRIVATE_USE_AREAS = [[0xe000, 0xf8ff], [0x100000, 0x10fffd]];\nvar PDF_GLYPH_SPACE_UNITS = 1000;\nvar SEAC_ANALYSIS_ENABLED = true;\nexports.SEAC_ANALYSIS_ENABLED = SEAC_ANALYSIS_ENABLED;\nconst EXPORT_DATA_PROPERTIES = [\"ascent\", \"bbox\", \"black\", \"bold\", \"charProcOperatorList\", \"composite\", \"data\", \"defaultVMetrics\", \"defaultWidth\", \"descent\", \"fallbackName\", \"fontMatrix\", \"fontType\", \"isMonospace\", \"isSerifFont\", \"isType3Font\", \"italic\", \"loadedName\", \"mimetype\", \"missingFile\", \"name\", \"remeasure\", \"subtype\", \"type\", \"vertical\"];\nconst EXPORT_DATA_EXTRA_PROPERTIES = [\"cMap\", \"defaultEncoding\", \"differences\", \"isSymbolicFont\", \"seacMap\", \"toFontChar\", \"toUnicode\", \"vmetrics\", \"widths\"];\nvar FontFlags = {\n FixedPitch: 1,\n Serif: 2,\n Symbolic: 4,\n Script: 8,\n Nonsymbolic: 32,\n Italic: 64,\n AllCap: 65536,\n SmallCap: 131072,\n ForceBold: 262144\n};\nexports.FontFlags = FontFlags;\nvar MacStandardGlyphOrdering = [\".notdef\", \".null\", \"nonmarkingreturn\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\", \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\", \"nonbreakingspace\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"Lslash\", \"lslash\", \"Scaron\", \"scaron\", \"Zcaron\", \"zcaron\", \"brokenbar\", \"Eth\", \"eth\", \"Yacute\", \"yacute\", \"Thorn\", \"thorn\", \"minus\", \"multiply\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"onehalf\", \"onequarter\", \"threequarters\", \"franc\", \"Gbreve\", \"gbreve\", \"Idotaccent\", \"Scedilla\", \"scedilla\", \"Cacute\", \"cacute\", \"Ccaron\", \"ccaron\", \"dcroat\"];\n\nfunction adjustWidths(properties) {\n if (!properties.fontMatrix) {\n return;\n }\n\n if (properties.fontMatrix[0] === _util.FONT_IDENTITY_MATRIX[0]) {\n return;\n }\n\n var scale = 0.001 / properties.fontMatrix[0];\n var glyphsWidths = properties.widths;\n\n for (var glyph in glyphsWidths) {\n glyphsWidths[glyph] *= scale;\n }\n\n properties.defaultWidth *= scale;\n}\n\nfunction adjustToUnicode(properties, builtInEncoding) {\n if (properties.hasIncludedToUnicodeMap) {\n return;\n }\n\n if (properties.hasEncoding) {\n return;\n }\n\n if (builtInEncoding === properties.defaultEncoding) {\n return;\n }\n\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n\n var toUnicode = [],\n glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n\n for (var charCode in builtInEncoding) {\n var glyphName = builtInEncoding[charCode];\n var unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);\n\n if (unicode !== -1) {\n toUnicode[charCode] = String.fromCharCode(unicode);\n }\n }\n\n properties.toUnicode.amend(toUnicode);\n}\n\nfunction getFontType(type, subtype) {\n switch (type) {\n case \"Type1\":\n return subtype === \"Type1C\" ? _util.FontType.TYPE1C : _util.FontType.TYPE1;\n\n case \"CIDFontType0\":\n return subtype === \"CIDFontType0C\" ? _util.FontType.CIDFONTTYPE0C : _util.FontType.CIDFONTTYPE0;\n\n case \"OpenType\":\n return _util.FontType.OPENTYPE;\n\n case \"TrueType\":\n return _util.FontType.TRUETYPE;\n\n case \"CIDFontType2\":\n return _util.FontType.CIDFONTTYPE2;\n\n case \"MMType1\":\n return _util.FontType.MMTYPE1;\n\n case \"Type0\":\n return _util.FontType.TYPE0;\n\n default:\n return _util.FontType.UNKNOWN;\n }\n}\n\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n if (glyphsUnicodeMap[name] !== undefined) {\n return name;\n }\n\n var unicode = (0, _unicode.getUnicodeForGlyph)(name, glyphsUnicodeMap);\n\n if (unicode !== -1) {\n for (var key in glyphsUnicodeMap) {\n if (glyphsUnicodeMap[key] === unicode) {\n return key;\n }\n }\n }\n\n (0, _util.info)(\"Unable to recover a standard glyph name for: \" + name);\n return name;\n}\n\nvar Glyph = function GlyphClosure() {\n function Glyph(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) {\n this.fontChar = fontChar;\n this.unicode = unicode;\n this.accent = accent;\n this.width = width;\n this.vmetric = vmetric;\n this.operatorListId = operatorListId;\n this.isSpace = isSpace;\n this.isInFont = isInFont;\n }\n\n Glyph.prototype.matchesForCache = function (fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) {\n return this.fontChar === fontChar && this.unicode === unicode && this.accent === accent && this.width === width && this.vmetric === vmetric && this.operatorListId === operatorListId && this.isSpace === isSpace && this.isInFont === isInFont;\n };\n\n return Glyph;\n}();\n\nvar ToUnicodeMap = function ToUnicodeMapClosure() {\n function ToUnicodeMap(cmap = []) {\n this._map = cmap;\n }\n\n ToUnicodeMap.prototype = {\n get length() {\n return this._map.length;\n },\n\n forEach(callback) {\n for (var charCode in this._map) {\n callback(charCode, this._map[charCode].charCodeAt(0));\n }\n },\n\n has(i) {\n return this._map[i] !== undefined;\n },\n\n get(i) {\n return this._map[i];\n },\n\n charCodeOf(value) {\n const map = this._map;\n\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n\n for (const charCode in map) {\n if (map[charCode] === value) {\n return charCode | 0;\n }\n }\n\n return -1;\n },\n\n amend(map) {\n for (var charCode in map) {\n this._map[charCode] = map[charCode];\n }\n }\n\n };\n return ToUnicodeMap;\n}();\n\nexports.ToUnicodeMap = ToUnicodeMap;\n\nvar IdentityToUnicodeMap = function IdentityToUnicodeMapClosure() {\n function IdentityToUnicodeMap(firstChar, lastChar) {\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n }\n\n IdentityToUnicodeMap.prototype = {\n get length() {\n return this.lastChar + 1 - this.firstChar;\n },\n\n forEach(callback) {\n for (var i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n callback(i, i);\n }\n },\n\n has(i) {\n return this.firstChar <= i && i <= this.lastChar;\n },\n\n get(i) {\n if (this.firstChar <= i && i <= this.lastChar) {\n return String.fromCharCode(i);\n }\n\n return undefined;\n },\n\n charCodeOf(v) {\n return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar ? v : -1;\n },\n\n amend(map) {\n (0, _util.unreachable)(\"Should not call amend()\");\n }\n\n };\n return IdentityToUnicodeMap;\n}();\n\nexports.IdentityToUnicodeMap = IdentityToUnicodeMap;\n\nvar OpenTypeFileBuilder = function OpenTypeFileBuilderClosure() {\n function writeInt16(dest, offset, num) {\n dest[offset] = num >> 8 & 0xff;\n dest[offset + 1] = num & 0xff;\n }\n\n function writeInt32(dest, offset, num) {\n dest[offset] = num >> 24 & 0xff;\n dest[offset + 1] = num >> 16 & 0xff;\n dest[offset + 2] = num >> 8 & 0xff;\n dest[offset + 3] = num & 0xff;\n }\n\n function writeData(dest, offset, data) {\n var i, ii;\n\n if (data instanceof Uint8Array) {\n dest.set(data, offset);\n } else if (typeof data === \"string\") {\n for (i = 0, ii = data.length; i < ii; i++) {\n dest[offset++] = data.charCodeAt(i) & 0xff;\n }\n } else {\n for (i = 0, ii = data.length; i < ii; i++) {\n dest[offset++] = data[i] & 0xff;\n }\n }\n }\n\n function OpenTypeFileBuilder(sfnt) {\n this.sfnt = sfnt;\n this.tables = Object.create(null);\n }\n\n OpenTypeFileBuilder.getSearchParams = function OpenTypeFileBuilder_getSearchParams(entriesCount, entrySize) {\n var maxPower2 = 1,\n log2 = 0;\n\n while ((maxPower2 ^ entriesCount) > maxPower2) {\n maxPower2 <<= 1;\n log2++;\n }\n\n var searchRange = maxPower2 * entrySize;\n return {\n range: searchRange,\n entry: log2,\n rangeShift: entrySize * entriesCount - searchRange\n };\n };\n\n var OTF_HEADER_SIZE = 12;\n var OTF_TABLE_ENTRY_SIZE = 16;\n OpenTypeFileBuilder.prototype = {\n toArray: function OpenTypeFileBuilder_toArray() {\n var sfnt = this.sfnt;\n var tables = this.tables;\n var tablesNames = Object.keys(tables);\n tablesNames.sort();\n var numTables = tablesNames.length;\n var i, j, jj, table, tableName;\n var offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n var tableOffsets = [offset];\n\n for (i = 0; i < numTables; i++) {\n table = tables[tablesNames[i]];\n var paddedLength = (table.length + 3 & ~3) >>> 0;\n offset += paddedLength;\n tableOffsets.push(offset);\n }\n\n var file = new Uint8Array(offset);\n\n for (i = 0; i < numTables; i++) {\n table = tables[tablesNames[i]];\n writeData(file, tableOffsets[i], table);\n }\n\n if (sfnt === \"true\") {\n sfnt = (0, _util.string32)(0x00010000);\n }\n\n file[0] = sfnt.charCodeAt(0) & 0xff;\n file[1] = sfnt.charCodeAt(1) & 0xff;\n file[2] = sfnt.charCodeAt(2) & 0xff;\n file[3] = sfnt.charCodeAt(3) & 0xff;\n writeInt16(file, 4, numTables);\n var searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n writeInt16(file, 6, searchParams.range);\n writeInt16(file, 8, searchParams.entry);\n writeInt16(file, 10, searchParams.rangeShift);\n offset = OTF_HEADER_SIZE;\n\n for (i = 0; i < numTables; i++) {\n tableName = tablesNames[i];\n file[offset] = tableName.charCodeAt(0) & 0xff;\n file[offset + 1] = tableName.charCodeAt(1) & 0xff;\n file[offset + 2] = tableName.charCodeAt(2) & 0xff;\n file[offset + 3] = tableName.charCodeAt(3) & 0xff;\n var checksum = 0;\n\n for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n var quad = (0, _core_utils.readUint32)(file, j);\n checksum = checksum + quad >>> 0;\n }\n\n writeInt32(file, offset + 4, checksum);\n writeInt32(file, offset + 8, tableOffsets[i]);\n writeInt32(file, offset + 12, tables[tableName].length);\n offset += OTF_TABLE_ENTRY_SIZE;\n }\n\n return file;\n },\n addTable: function OpenTypeFileBuilder_addTable(tag, data) {\n if (tag in this.tables) {\n throw new Error(\"Table \" + tag + \" already exists\");\n }\n\n this.tables[tag] = data;\n }\n };\n return OpenTypeFileBuilder;\n}();\n\nvar Font = function FontClosure() {\n function Font(name, file, properties) {\n var charCode;\n this.name = name;\n this.loadedName = properties.loadedName;\n this.isType3Font = properties.isType3Font;\n this.missingFile = false;\n this.glyphCache = Object.create(null);\n this.isSerifFont = !!(properties.flags & FontFlags.Serif);\n this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n var type = properties.type;\n var subtype = properties.subtype;\n this.type = type;\n this.subtype = subtype;\n let fallbackName = \"sans-serif\";\n\n if (this.isMonospace) {\n fallbackName = \"monospace\";\n } else if (this.isSerifFont) {\n fallbackName = \"serif\";\n }\n\n this.fallbackName = fallbackName;\n this.differences = properties.differences;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.composite = properties.composite;\n this.cMap = properties.cMap;\n this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n this.fontMatrix = properties.fontMatrix;\n this.bbox = properties.bbox;\n this.defaultEncoding = properties.defaultEncoding;\n this.toUnicode = properties.toUnicode;\n this.fallbackToUnicode = properties.fallbackToUnicode || new ToUnicodeMap();\n this.toFontChar = [];\n\n if (properties.type === \"Type3\") {\n for (charCode = 0; charCode < 256; charCode++) {\n this.toFontChar[charCode] = this.differences[charCode] || properties.defaultEncoding[charCode];\n }\n\n this.fontType = _util.FontType.TYPE3;\n return;\n }\n\n this.cidEncoding = properties.cidEncoding;\n this.vertical = !!properties.vertical;\n\n if (this.vertical) {\n this.vmetrics = properties.vmetrics;\n this.defaultVMetrics = properties.defaultVMetrics;\n }\n\n if (!file || file.isEmpty) {\n if (file) {\n (0, _util.warn)('Font file is empty in \"' + name + '\" (' + this.loadedName + \")\");\n }\n\n this.fallbackToSystemFont();\n return;\n }\n\n [type, subtype] = getFontFileType(file, properties);\n\n if (type !== this.type || subtype !== this.subtype) {\n (0, _util.info)(\"Inconsistent font file Type/SubType, expected: \" + `${this.type}/${this.subtype} but found: ${type}/${subtype}.`);\n }\n\n try {\n var data;\n\n switch (type) {\n case \"MMType1\":\n (0, _util.info)(\"MMType1 font (\" + name + \"), falling back to Type1.\");\n\n case \"Type1\":\n case \"CIDFontType0\":\n this.mimetype = \"font/opentype\";\n var cff = subtype === \"Type1C\" || subtype === \"CIDFontType0C\" ? new CFFFont(file, properties) : new Type1Font(name, file, properties);\n adjustWidths(properties);\n data = this.convert(name, cff, properties);\n break;\n\n case \"OpenType\":\n case \"TrueType\":\n case \"CIDFontType2\":\n this.mimetype = \"font/opentype\";\n data = this.checkAndRepair(name, file, properties);\n\n if (this.isOpenType) {\n adjustWidths(properties);\n type = \"OpenType\";\n }\n\n break;\n\n default:\n throw new _util.FormatError(`Font ${type} is not supported`);\n }\n } catch (e) {\n (0, _util.warn)(e);\n this.fallbackToSystemFont();\n return;\n }\n\n this.data = data;\n this.fontType = getFontType(type, subtype);\n this.fontMatrix = properties.fontMatrix;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.toUnicode = properties.toUnicode;\n this.seacMap = properties.seacMap;\n }\n\n function int16(b0, b1) {\n return (b0 << 8) + b1;\n }\n\n function writeSignedInt16(bytes, index, value) {\n bytes[index + 1] = value;\n bytes[index] = value >>> 8;\n }\n\n function signedInt16(b0, b1) {\n var value = (b0 << 8) + b1;\n return value & 1 << 15 ? value - 0x10000 : value;\n }\n\n function int32(b0, b1, b2, b3) {\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n }\n\n function string16(value) {\n return String.fromCharCode(value >> 8 & 0xff, value & 0xff);\n }\n\n function safeString16(value) {\n if (value > 0x7fff) {\n value = 0x7fff;\n } else if (value < -0x8000) {\n value = -0x8000;\n }\n\n return String.fromCharCode(value >> 8 & 0xff, value & 0xff);\n }\n\n function isTrueTypeFile(file) {\n var header = file.peekBytes(4);\n return (0, _core_utils.readUint32)(header, 0) === 0x00010000 || (0, _util.bytesToString)(header) === \"true\";\n }\n\n function isTrueTypeCollectionFile(file) {\n const header = file.peekBytes(4);\n return (0, _util.bytesToString)(header) === \"ttcf\";\n }\n\n function isOpenTypeFile(file) {\n var header = file.peekBytes(4);\n return (0, _util.bytesToString)(header) === \"OTTO\";\n }\n\n function isType1File(file) {\n var header = file.peekBytes(2);\n\n if (header[0] === 0x25 && header[1] === 0x21) {\n return true;\n }\n\n if (header[0] === 0x80 && header[1] === 0x01) {\n return true;\n }\n\n return false;\n }\n\n function isCFFFile(file) {\n const header = file.peekBytes(4);\n\n if (header[0] >= 1 && header[3] >= 1 && header[3] <= 4) {\n return true;\n }\n\n return false;\n }\n\n function getFontFileType(file, {\n type,\n subtype,\n composite\n }) {\n let fileType, fileSubtype;\n\n if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\n if (composite) {\n fileType = \"CIDFontType2\";\n } else {\n fileType = \"TrueType\";\n }\n } else if (isOpenTypeFile(file)) {\n if (composite) {\n fileType = \"CIDFontType2\";\n } else {\n fileType = \"OpenType\";\n }\n } else if (isType1File(file)) {\n if (composite) {\n fileType = \"CIDFontType0\";\n } else {\n fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n }\n } else if (isCFFFile(file)) {\n if (composite) {\n fileType = \"CIDFontType0\";\n fileSubtype = \"CIDFontType0C\";\n } else {\n fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n fileSubtype = \"Type1C\";\n }\n } else {\n (0, _util.warn)(\"getFontFileType: Unable to detect correct font file Type/Subtype.\");\n fileType = type;\n fileSubtype = subtype;\n }\n\n return [fileType, fileSubtype];\n }\n\n function buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n var toFontChar = [],\n unicode;\n\n for (var i = 0, ii = encoding.length; i < ii; i++) {\n unicode = (0, _unicode.getUnicodeForGlyph)(encoding[i], glyphsUnicodeMap);\n\n if (unicode !== -1) {\n toFontChar[i] = unicode;\n }\n }\n\n for (var charCode in differences) {\n unicode = (0, _unicode.getUnicodeForGlyph)(differences[charCode], glyphsUnicodeMap);\n\n if (unicode !== -1) {\n toFontChar[+charCode] = unicode;\n }\n }\n\n return toFontChar;\n }\n\n function adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {\n var newMap = Object.create(null);\n var toFontChar = [];\n var privateUseAreaIndex = 0;\n var nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n var privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n\n for (var originalCharCode in charCodeToGlyphId) {\n originalCharCode |= 0;\n var glyphId = charCodeToGlyphId[originalCharCode];\n\n if (!hasGlyph(glyphId)) {\n continue;\n }\n\n if (nextAvailableFontCharCode > privateUseOffetEnd) {\n privateUseAreaIndex++;\n\n if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\n (0, _util.warn)(\"Ran out of space in font private use area.\");\n break;\n }\n\n nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n }\n\n var fontCharCode = nextAvailableFontCharCode++;\n\n if (glyphId === 0) {\n glyphId = newGlyphZeroId;\n }\n\n newMap[fontCharCode] = glyphId;\n toFontChar[originalCharCode] = fontCharCode;\n }\n\n return {\n toFontChar,\n charCodeToGlyphId: newMap,\n nextAvailableFontCharCode\n };\n }\n\n function getRanges(glyphs, numGlyphs) {\n var codes = [];\n\n for (var charCode in glyphs) {\n if (glyphs[charCode] >= numGlyphs) {\n continue;\n }\n\n codes.push({\n fontCharCode: charCode | 0,\n glyphId: glyphs[charCode]\n });\n }\n\n if (codes.length === 0) {\n codes.push({\n fontCharCode: 0,\n glyphId: 0\n });\n }\n\n codes.sort(function fontGetRangesSort(a, b) {\n return a.fontCharCode - b.fontCharCode;\n });\n var ranges = [];\n var length = codes.length;\n\n for (var n = 0; n < length;) {\n var start = codes[n].fontCharCode;\n var codeIndices = [codes[n].glyphId];\n ++n;\n var end = start;\n\n while (n < length && end + 1 === codes[n].fontCharCode) {\n codeIndices.push(codes[n].glyphId);\n ++end;\n ++n;\n\n if (end === 0xffff) {\n break;\n }\n }\n\n ranges.push([start, end, codeIndices]);\n }\n\n return ranges;\n }\n\n function createCmapTable(glyphs, numGlyphs) {\n var ranges = getRanges(glyphs, numGlyphs);\n var numTables = ranges[ranges.length - 1][1] > 0xffff ? 2 : 1;\n var cmap = \"\\x00\\x00\" + string16(numTables) + \"\\x00\\x03\" + \"\\x00\\x01\" + (0, _util.string32)(4 + numTables * 8);\n var i, ii, j, jj;\n\n for (i = ranges.length - 1; i >= 0; --i) {\n if (ranges[i][0] <= 0xffff) {\n break;\n }\n }\n\n var bmpLength = i + 1;\n\n if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {\n ranges[i][1] = 0xfffe;\n }\n\n var trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;\n var segCount = bmpLength + trailingRangesCount;\n var searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n var startCount = \"\";\n var endCount = \"\";\n var idDeltas = \"\";\n var idRangeOffsets = \"\";\n var glyphsIds = \"\";\n var bias = 0;\n var range, start, end, codes;\n\n for (i = 0, ii = bmpLength; i < ii; i++) {\n range = ranges[i];\n start = range[0];\n end = range[1];\n startCount += string16(start);\n endCount += string16(end);\n codes = range[2];\n var contiguous = true;\n\n for (j = 1, jj = codes.length; j < jj; ++j) {\n if (codes[j] !== codes[j - 1] + 1) {\n contiguous = false;\n break;\n }\n }\n\n if (!contiguous) {\n var offset = (segCount - i) * 2 + bias * 2;\n bias += end - start + 1;\n idDeltas += string16(0);\n idRangeOffsets += string16(offset);\n\n for (j = 0, jj = codes.length; j < jj; ++j) {\n glyphsIds += string16(codes[j]);\n }\n } else {\n var startCode = codes[0];\n idDeltas += string16(startCode - start & 0xffff);\n idRangeOffsets += string16(0);\n }\n }\n\n if (trailingRangesCount > 0) {\n endCount += \"\\xFF\\xFF\";\n startCount += \"\\xFF\\xFF\";\n idDeltas += \"\\x00\\x01\";\n idRangeOffsets += \"\\x00\\x00\";\n }\n\n var format314 = \"\\x00\\x00\" + string16(2 * segCount) + string16(searchParams.range) + string16(searchParams.entry) + string16(searchParams.rangeShift) + endCount + \"\\x00\\x00\" + startCount + idDeltas + idRangeOffsets + glyphsIds;\n var format31012 = \"\";\n var header31012 = \"\";\n\n if (numTables > 1) {\n cmap += \"\\x00\\x03\" + \"\\x00\\x0A\" + (0, _util.string32)(4 + numTables * 8 + 4 + format314.length);\n format31012 = \"\";\n\n for (i = 0, ii = ranges.length; i < ii; i++) {\n range = ranges[i];\n start = range[0];\n codes = range[2];\n var code = codes[0];\n\n for (j = 1, jj = codes.length; j < jj; ++j) {\n if (codes[j] !== codes[j - 1] + 1) {\n end = range[0] + j - 1;\n format31012 += (0, _util.string32)(start) + (0, _util.string32)(end) + (0, _util.string32)(code);\n start = end + 1;\n code = codes[j];\n }\n }\n\n format31012 += (0, _util.string32)(start) + (0, _util.string32)(range[1]) + (0, _util.string32)(code);\n }\n\n header31012 = \"\\x00\\x0C\" + \"\\x00\\x00\" + (0, _util.string32)(format31012.length + 16) + \"\\x00\\x00\\x00\\x00\" + (0, _util.string32)(format31012.length / 12);\n }\n\n return cmap + \"\\x00\\x04\" + string16(format314.length + 4) + format314 + header31012 + format31012;\n }\n\n function validateOS2Table(os2, file) {\n file.pos = (file.start || 0) + os2.offset;\n var version = file.getUint16();\n file.skip(60);\n var selection = file.getUint16();\n\n if (version < 4 && selection & 0x0300) {\n return false;\n }\n\n var firstChar = file.getUint16();\n var lastChar = file.getUint16();\n\n if (firstChar > lastChar) {\n return false;\n }\n\n file.skip(6);\n var usWinAscent = file.getUint16();\n\n if (usWinAscent === 0) {\n return false;\n }\n\n os2.data[8] = os2.data[9] = 0;\n return true;\n }\n\n function createOS2Table(properties, charstrings, override) {\n override = override || {\n unitsPerEm: 0,\n yMax: 0,\n yMin: 0,\n ascent: 0,\n descent: 0\n };\n var ulUnicodeRange1 = 0;\n var ulUnicodeRange2 = 0;\n var ulUnicodeRange3 = 0;\n var ulUnicodeRange4 = 0;\n var firstCharIndex = null;\n var lastCharIndex = 0;\n\n if (charstrings) {\n for (var code in charstrings) {\n code |= 0;\n\n if (firstCharIndex > code || !firstCharIndex) {\n firstCharIndex = code;\n }\n\n if (lastCharIndex < code) {\n lastCharIndex = code;\n }\n\n var position = (0, _unicode.getUnicodeRangeFor)(code);\n\n if (position < 32) {\n ulUnicodeRange1 |= 1 << position;\n } else if (position < 64) {\n ulUnicodeRange2 |= 1 << position - 32;\n } else if (position < 96) {\n ulUnicodeRange3 |= 1 << position - 64;\n } else if (position < 123) {\n ulUnicodeRange4 |= 1 << position - 96;\n } else {\n throw new _util.FormatError(\"Unicode ranges Bits > 123 are reserved for internal usage\");\n }\n }\n\n if (lastCharIndex > 0xffff) {\n lastCharIndex = 0xffff;\n }\n } else {\n firstCharIndex = 0;\n lastCharIndex = 255;\n }\n\n var bbox = properties.bbox || [0, 0, 0, 0];\n var unitsPerEm = override.unitsPerEm || 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0];\n var scale = properties.ascentScaled ? 1.0 : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n var typoAscent = override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n var typoDescent = override.descent || Math.round(scale * (properties.descent || bbox[1]));\n\n if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n typoDescent = -typoDescent;\n }\n\n var winAscent = override.yMax || typoAscent;\n var winDescent = -override.yMin || -typoDescent;\n return \"\\x00\\x03\" + \"\\x02\\x24\" + \"\\x01\\xF4\" + \"\\x00\\x05\" + \"\\x00\\x00\" + \"\\x02\\x8A\" + \"\\x02\\xBB\" + \"\\x00\\x00\" + \"\\x00\\x8C\" + \"\\x02\\x8A\" + \"\\x02\\xBB\" + \"\\x00\\x00\" + \"\\x01\\xDF\" + \"\\x00\\x31\" + \"\\x01\\x02\" + \"\\x00\\x00\" + \"\\x00\\x00\\x06\" + String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) + \"\\x00\\x00\\x00\\x00\\x00\\x00\" + (0, _util.string32)(ulUnicodeRange1) + (0, _util.string32)(ulUnicodeRange2) + (0, _util.string32)(ulUnicodeRange3) + (0, _util.string32)(ulUnicodeRange4) + \"\\x2A\\x32\\x31\\x2A\" + string16(properties.italicAngle ? 1 : 0) + string16(firstCharIndex || properties.firstChar) + string16(lastCharIndex || properties.lastChar) + string16(typoAscent) + string16(typoDescent) + \"\\x00\\x64\" + string16(winAscent) + string16(winDescent) + \"\\x00\\x00\\x00\\x00\" + \"\\x00\\x00\\x00\\x00\" + string16(properties.xHeight) + string16(properties.capHeight) + string16(0) + string16(firstCharIndex || properties.firstChar) + \"\\x00\\x03\";\n }\n\n function createPostTable(properties) {\n var angle = Math.floor(properties.italicAngle * 2 ** 16);\n return \"\\x00\\x03\\x00\\x00\" + (0, _util.string32)(angle) + \"\\x00\\x00\" + \"\\x00\\x00\" + (0, _util.string32)(properties.fixedPitch) + \"\\x00\\x00\\x00\\x00\" + \"\\x00\\x00\\x00\\x00\" + \"\\x00\\x00\\x00\\x00\" + \"\\x00\\x00\\x00\\x00\";\n }\n\n function createNameTable(name, proto) {\n if (!proto) {\n proto = [[], []];\n }\n\n var strings = [proto[0][0] || \"Original licence\", proto[0][1] || name, proto[0][2] || \"Unknown\", proto[0][3] || \"uniqueID\", proto[0][4] || name, proto[0][5] || \"Version 0.11\", proto[0][6] || \"\", proto[0][7] || \"Unknown\", proto[0][8] || \"Unknown\", proto[0][9] || \"Unknown\"];\n var stringsUnicode = [];\n var i, ii, j, jj, str;\n\n for (i = 0, ii = strings.length; i < ii; i++) {\n str = proto[1][i] || strings[i];\n var strBufUnicode = [];\n\n for (j = 0, jj = str.length; j < jj; j++) {\n strBufUnicode.push(string16(str.charCodeAt(j)));\n }\n\n stringsUnicode.push(strBufUnicode.join(\"\"));\n }\n\n var names = [strings, stringsUnicode];\n var platforms = [\"\\x00\\x01\", \"\\x00\\x03\"];\n var encodings = [\"\\x00\\x00\", \"\\x00\\x01\"];\n var languages = [\"\\x00\\x00\", \"\\x04\\x09\"];\n var namesRecordCount = strings.length * platforms.length;\n var nameTable = \"\\x00\\x00\" + string16(namesRecordCount) + string16(namesRecordCount * 12 + 6);\n var strOffset = 0;\n\n for (i = 0, ii = platforms.length; i < ii; i++) {\n var strs = names[i];\n\n for (j = 0, jj = strs.length; j < jj; j++) {\n str = strs[j];\n var nameRecord = platforms[i] + encodings[i] + languages[i] + string16(j) + string16(str.length) + string16(strOffset);\n nameTable += nameRecord;\n strOffset += str.length;\n }\n }\n\n nameTable += strings.join(\"\") + stringsUnicode.join(\"\");\n return nameTable;\n }\n\n Font.prototype = {\n name: null,\n font: null,\n mimetype: null,\n disableFontFace: false,\n\n get renderer() {\n var renderer = _font_renderer.FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\n\n return (0, _util.shadow)(this, \"renderer\", renderer);\n },\n\n exportData(extraProperties = false) {\n const exportDataProperties = extraProperties ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES] : EXPORT_DATA_PROPERTIES;\n const data = Object.create(null);\n let property, value;\n\n for (property of exportDataProperties) {\n value = this[property];\n\n if (value !== undefined) {\n data[property] = value;\n }\n }\n\n return data;\n },\n\n fallbackToSystemFont: function Font_fallbackToSystemFont() {\n this.missingFile = true;\n var name = this.name;\n var type = this.type;\n var subtype = this.subtype;\n let fontName = name.replace(/[,_]/g, \"-\").replace(/\\s/g, \"\");\n var stdFontMap = (0, _standard_fonts.getStdFontMap)(),\n nonStdFontMap = (0, _standard_fonts.getNonStdFontMap)();\n var isStandardFont = !!stdFontMap[fontName] || !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);\n fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n this.bold = fontName.search(/bold/gi) !== -1;\n this.italic = fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1;\n this.black = name.search(/Black/g) !== -1;\n this.remeasure = Object.keys(this.widths).length > 0;\n\n if (isStandardFont && type === \"CIDFontType2\" && this.cidEncoding.startsWith(\"Identity-\")) {\n const GlyphMapForStandardFonts = (0, _standard_fonts.getGlyphMapForStandardFonts)();\n const map = [];\n\n for (const charCode in GlyphMapForStandardFonts) {\n map[+charCode] = GlyphMapForStandardFonts[charCode];\n }\n\n if (/Arial-?Black/i.test(name)) {\n var SupplementalGlyphMapForArialBlack = (0, _standard_fonts.getSupplementalGlyphMapForArialBlack)();\n\n for (const charCode in SupplementalGlyphMapForArialBlack) {\n map[+charCode] = SupplementalGlyphMapForArialBlack[charCode];\n }\n } else if (/Calibri/i.test(name)) {\n const SupplementalGlyphMapForCalibri = (0, _standard_fonts.getSupplementalGlyphMapForCalibri)();\n\n for (const charCode in SupplementalGlyphMapForCalibri) {\n map[+charCode] = SupplementalGlyphMapForCalibri[charCode];\n }\n }\n\n var isIdentityUnicode = this.toUnicode instanceof IdentityToUnicodeMap;\n\n if (!isIdentityUnicode) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n map[+charCode] = unicodeCharCode;\n });\n }\n\n this.toFontChar = map;\n this.toUnicode = new ToUnicodeMap(map);\n } else if (/Symbol/i.test(fontName)) {\n this.toFontChar = buildToFontChar(_encodings.SymbolSetEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences);\n } else if (/Dingbats/i.test(fontName)) {\n if (/Wingdings/i.test(name)) {\n (0, _util.warn)(\"Non-embedded Wingdings font, falling back to ZapfDingbats.\");\n }\n\n this.toFontChar = buildToFontChar(_encodings.ZapfDingbatsEncoding, (0, _glyphlist.getDingbatsGlyphsUnicode)(), this.differences);\n } else if (isStandardFont) {\n this.toFontChar = buildToFontChar(this.defaultEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences);\n } else {\n const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n const map = [];\n this.toUnicode.forEach((charCode, unicodeCharCode) => {\n if (!this.composite) {\n var glyphName = this.differences[charCode] || this.defaultEncoding[charCode];\n const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);\n\n if (unicode !== -1) {\n unicodeCharCode = unicode;\n }\n }\n\n map[+charCode] = unicodeCharCode;\n });\n\n if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) {\n if (/Verdana/i.test(name)) {\n const GlyphMapForStandardFonts = (0, _standard_fonts.getGlyphMapForStandardFonts)();\n\n for (const charCode in GlyphMapForStandardFonts) {\n map[+charCode] = GlyphMapForStandardFonts[charCode];\n }\n }\n }\n\n this.toFontChar = map;\n }\n\n this.loadedName = fontName.split(\"-\")[0];\n this.fontType = getFontType(type, subtype);\n },\n checkAndRepair: function Font_checkAndRepair(name, font, properties) {\n const VALID_TABLES = [\"OS/2\", \"cmap\", \"head\", \"hhea\", \"hmtx\", \"maxp\", \"name\", \"post\", \"loca\", \"glyf\", \"fpgm\", \"prep\", \"cvt \", \"CFF \"];\n\n function readTables(file, numTables) {\n const tables = Object.create(null);\n tables[\"OS/2\"] = null;\n tables.cmap = null;\n tables.head = null;\n tables.hhea = null;\n tables.hmtx = null;\n tables.maxp = null;\n tables.name = null;\n tables.post = null;\n\n for (let i = 0; i < numTables; i++) {\n const table = readTableEntry(file);\n\n if (!VALID_TABLES.includes(table.tag)) {\n continue;\n }\n\n if (table.length === 0) {\n continue;\n }\n\n tables[table.tag] = table;\n }\n\n return tables;\n }\n\n function readTableEntry(file) {\n var tag = (0, _util.bytesToString)(file.getBytes(4));\n var checksum = file.getInt32() >>> 0;\n var offset = file.getInt32() >>> 0;\n var length = file.getInt32() >>> 0;\n var previousPosition = file.pos;\n file.pos = file.start ? file.start : 0;\n file.skip(offset);\n var data = file.getBytes(length);\n file.pos = previousPosition;\n\n if (tag === \"head\") {\n data[8] = data[9] = data[10] = data[11] = 0;\n data[17] |= 0x20;\n }\n\n return {\n tag,\n checksum,\n length,\n offset,\n data\n };\n }\n\n function readOpenTypeHeader(ttf) {\n return {\n version: (0, _util.bytesToString)(ttf.getBytes(4)),\n numTables: ttf.getUint16(),\n searchRange: ttf.getUint16(),\n entrySelector: ttf.getUint16(),\n rangeShift: ttf.getUint16()\n };\n }\n\n function readTrueTypeCollectionHeader(ttc) {\n const ttcTag = (0, _util.bytesToString)(ttc.getBytes(4));\n (0, _util.assert)(ttcTag === \"ttcf\", \"Must be a TrueType Collection font.\");\n const majorVersion = ttc.getUint16();\n const minorVersion = ttc.getUint16();\n const numFonts = ttc.getInt32() >>> 0;\n const offsetTable = [];\n\n for (let i = 0; i < numFonts; i++) {\n offsetTable.push(ttc.getInt32() >>> 0);\n }\n\n const header = {\n ttcTag,\n majorVersion,\n minorVersion,\n numFonts,\n offsetTable\n };\n\n switch (majorVersion) {\n case 1:\n return header;\n\n case 2:\n header.dsigTag = ttc.getInt32() >>> 0;\n header.dsigLength = ttc.getInt32() >>> 0;\n header.dsigOffset = ttc.getInt32() >>> 0;\n return header;\n }\n\n throw new _util.FormatError(`Invalid TrueType Collection majorVersion: ${majorVersion}.`);\n }\n\n function readTrueTypeCollectionData(ttc, fontName) {\n const {\n numFonts,\n offsetTable\n } = readTrueTypeCollectionHeader(ttc);\n\n for (let i = 0; i < numFonts; i++) {\n ttc.pos = (ttc.start || 0) + offsetTable[i];\n const potentialHeader = readOpenTypeHeader(ttc);\n const potentialTables = readTables(ttc, potentialHeader.numTables);\n\n if (!potentialTables.name) {\n throw new _util.FormatError('TrueType Collection font must contain a \"name\" table.');\n }\n\n const nameTable = readNameTable(potentialTables.name);\n\n for (let j = 0, jj = nameTable.length; j < jj; j++) {\n for (let k = 0, kk = nameTable[j].length; k < kk; k++) {\n const nameEntry = nameTable[j][k];\n\n if (nameEntry && nameEntry.replace(/\\s/g, \"\") === fontName) {\n return {\n header: potentialHeader,\n tables: potentialTables\n };\n }\n }\n }\n }\n\n throw new _util.FormatError(`TrueType Collection does not contain \"${fontName}\" font.`);\n }\n\n function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {\n if (!cmap) {\n (0, _util.warn)(\"No cmap table available.\");\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false\n };\n }\n\n var segment;\n var start = (file.start ? file.start : 0) + cmap.offset;\n file.pos = start;\n file.skip(2);\n var numTables = file.getUint16();\n var potentialTable;\n var canBreak = false;\n\n for (var i = 0; i < numTables; i++) {\n var platformId = file.getUint16();\n var encodingId = file.getUint16();\n var offset = file.getInt32() >>> 0;\n var useTable = false;\n\n if (potentialTable && potentialTable.platformId === platformId && potentialTable.encodingId === encodingId) {\n continue;\n }\n\n if (platformId === 0 && (encodingId === 0 || encodingId === 1 || encodingId === 3)) {\n useTable = true;\n } else if (platformId === 1 && encodingId === 0) {\n useTable = true;\n } else if (platformId === 3 && encodingId === 1 && (hasEncoding || !potentialTable)) {\n useTable = true;\n\n if (!isSymbolicFont) {\n canBreak = true;\n }\n } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n useTable = true;\n canBreak = true;\n }\n\n if (useTable) {\n potentialTable = {\n platformId,\n encodingId,\n offset\n };\n }\n\n if (canBreak) {\n break;\n }\n }\n\n if (potentialTable) {\n file.pos = start + potentialTable.offset;\n }\n\n if (!potentialTable || file.peekByte() === -1) {\n (0, _util.warn)(\"Could not find a preferred cmap table.\");\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false\n };\n }\n\n var format = file.getUint16();\n file.skip(2 + 2);\n var hasShortCmap = false;\n var mappings = [];\n var j, glyphId;\n\n if (format === 0) {\n for (j = 0; j < 256; j++) {\n var index = file.getByte();\n\n if (!index) {\n continue;\n }\n\n mappings.push({\n charCode: j,\n glyphId: index\n });\n }\n\n hasShortCmap = true;\n } else if (format === 4) {\n var segCount = file.getUint16() >> 1;\n file.skip(6);\n var segIndex,\n segments = [];\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments.push({\n end: file.getUint16()\n });\n }\n\n file.skip(2);\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].start = file.getUint16();\n }\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].delta = file.getUint16();\n }\n\n var offsetsCount = 0;\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n var rangeOffset = file.getUint16();\n\n if (!rangeOffset) {\n segment.offsetIndex = -1;\n continue;\n }\n\n var offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n segment.offsetIndex = offsetIndex;\n offsetsCount = Math.max(offsetsCount, offsetIndex + segment.end - segment.start + 1);\n }\n\n var offsets = [];\n\n for (j = 0; j < offsetsCount; j++) {\n offsets.push(file.getUint16());\n }\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n start = segment.start;\n var end = segment.end;\n var delta = segment.delta;\n offsetIndex = segment.offsetIndex;\n\n for (j = start; j <= end; j++) {\n if (j === 0xffff) {\n continue;\n }\n\n glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];\n glyphId = glyphId + delta & 0xffff;\n mappings.push({\n charCode: j,\n glyphId\n });\n }\n }\n } else if (format === 6) {\n var firstCode = file.getUint16();\n var entryCount = file.getUint16();\n\n for (j = 0; j < entryCount; j++) {\n glyphId = file.getUint16();\n var charCode = firstCode + j;\n mappings.push({\n charCode,\n glyphId\n });\n }\n } else {\n (0, _util.warn)(\"cmap table has unsupported format: \" + format);\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false\n };\n }\n\n mappings.sort(function (a, b) {\n return a.charCode - b.charCode;\n });\n\n for (i = 1; i < mappings.length; i++) {\n if (mappings[i - 1].charCode === mappings[i].charCode) {\n mappings.splice(i, 1);\n i--;\n }\n }\n\n return {\n platformId: potentialTable.platformId,\n encodingId: potentialTable.encodingId,\n mappings,\n hasShortCmap\n };\n }\n\n function sanitizeMetrics(file, header, metrics, numGlyphs, dupFirstEntry) {\n if (!header) {\n if (metrics) {\n metrics.data = null;\n }\n\n return;\n }\n\n file.pos = (file.start ? file.start : 0) + header.offset;\n file.pos += 4;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 8;\n file.pos += 2;\n var numOfMetrics = file.getUint16();\n\n if (numOfMetrics > numGlyphs) {\n (0, _util.info)(\"The numOfMetrics (\" + numOfMetrics + \") should not be \" + \"greater than the numGlyphs (\" + numGlyphs + \")\");\n numOfMetrics = numGlyphs;\n header.data[34] = (numOfMetrics & 0xff00) >> 8;\n header.data[35] = numOfMetrics & 0x00ff;\n }\n\n var numOfSidebearings = numGlyphs - numOfMetrics;\n var numMissing = numOfSidebearings - (metrics.length - numOfMetrics * 4 >> 1);\n\n if (numMissing > 0) {\n var entries = new Uint8Array(metrics.length + numMissing * 2);\n entries.set(metrics.data);\n\n if (dupFirstEntry) {\n entries[metrics.length] = metrics.data[2];\n entries[metrics.length + 1] = metrics.data[3];\n }\n\n metrics.data = entries;\n }\n }\n\n function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart, hintsValid) {\n var glyphProfile = {\n length: 0,\n sizeOfInstructions: 0\n };\n\n if (sourceEnd - sourceStart <= 12) {\n return glyphProfile;\n }\n\n var glyf = source.subarray(sourceStart, sourceEnd);\n var contoursCount = signedInt16(glyf[0], glyf[1]);\n\n if (contoursCount < 0) {\n contoursCount = -1;\n writeSignedInt16(glyf, 0, contoursCount);\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n\n var i,\n j = 10,\n flagsCount = 0;\n\n for (i = 0; i < contoursCount; i++) {\n var endPoint = glyf[j] << 8 | glyf[j + 1];\n flagsCount = endPoint + 1;\n j += 2;\n }\n\n var instructionsStart = j;\n var instructionsLength = glyf[j] << 8 | glyf[j + 1];\n glyphProfile.sizeOfInstructions = instructionsLength;\n j += 2 + instructionsLength;\n var instructionsEnd = j;\n var coordinatesLength = 0;\n\n for (i = 0; i < flagsCount; i++) {\n var flag = glyf[j++];\n\n if (flag & 0xc0) {\n glyf[j - 1] = flag & 0x3f;\n }\n\n let xLength = 2;\n\n if (flag & 2) {\n xLength = 1;\n } else if (flag & 16) {\n xLength = 0;\n }\n\n let yLength = 2;\n\n if (flag & 4) {\n yLength = 1;\n } else if (flag & 32) {\n yLength = 0;\n }\n\n const xyLength = xLength + yLength;\n coordinatesLength += xyLength;\n\n if (flag & 8) {\n var repeat = glyf[j++];\n i += repeat;\n coordinatesLength += repeat * xyLength;\n }\n }\n\n if (coordinatesLength === 0) {\n return glyphProfile;\n }\n\n var glyphDataLength = j + coordinatesLength;\n\n if (glyphDataLength > glyf.length) {\n return glyphProfile;\n }\n\n if (!hintsValid && instructionsLength > 0) {\n dest.set(glyf.subarray(0, instructionsStart), destStart);\n dest.set([0, 0], destStart + instructionsStart);\n dest.set(glyf.subarray(instructionsEnd, glyphDataLength), destStart + instructionsStart + 2);\n glyphDataLength -= instructionsLength;\n\n if (glyf.length - glyphDataLength > 3) {\n glyphDataLength = glyphDataLength + 3 & ~3;\n }\n\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n\n if (glyf.length - glyphDataLength > 3) {\n glyphDataLength = glyphDataLength + 3 & ~3;\n dest.set(glyf.subarray(0, glyphDataLength), destStart);\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n\n function sanitizeHead(head, numGlyphs, locaLength) {\n var data = head.data;\n var version = int32(data[0], data[1], data[2], data[3]);\n\n if (version >> 16 !== 1) {\n (0, _util.info)(\"Attempting to fix invalid version in head table: \" + version);\n data[0] = 0;\n data[1] = 1;\n data[2] = 0;\n data[3] = 0;\n }\n\n var indexToLocFormat = int16(data[50], data[51]);\n\n if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n (0, _util.info)(\"Attempting to fix invalid indexToLocFormat in head table: \" + indexToLocFormat);\n var numGlyphsPlusOne = numGlyphs + 1;\n\n if (locaLength === numGlyphsPlusOne << 1) {\n data[50] = 0;\n data[51] = 0;\n } else if (locaLength === numGlyphsPlusOne << 2) {\n data[50] = 0;\n data[51] = 1;\n } else {\n throw new _util.FormatError(\"Could not fix indexToLocFormat: \" + indexToLocFormat);\n }\n }\n }\n\n function sanitizeGlyphLocations(loca, glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions) {\n var itemSize, itemDecode, itemEncode;\n\n if (isGlyphLocationsLong) {\n itemSize = 4;\n\n itemDecode = function fontItemDecodeLong(data, offset) {\n return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];\n };\n\n itemEncode = function fontItemEncodeLong(data, offset, value) {\n data[offset] = value >>> 24 & 0xff;\n data[offset + 1] = value >> 16 & 0xff;\n data[offset + 2] = value >> 8 & 0xff;\n data[offset + 3] = value & 0xff;\n };\n } else {\n itemSize = 2;\n\n itemDecode = function fontItemDecode(data, offset) {\n return data[offset] << 9 | data[offset + 1] << 1;\n };\n\n itemEncode = function fontItemEncode(data, offset, value) {\n data[offset] = value >> 9 & 0xff;\n data[offset + 1] = value >> 1 & 0xff;\n };\n }\n\n var numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n var locaDataSize = itemSize * (1 + numGlyphsOut);\n var locaData = new Uint8Array(locaDataSize);\n locaData.set(loca.data.subarray(0, locaDataSize));\n loca.data = locaData;\n var oldGlyfData = glyf.data;\n var oldGlyfDataLength = oldGlyfData.length;\n var newGlyfData = new Uint8Array(oldGlyfDataLength);\n var i, j;\n const locaEntries = [];\n\n for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) {\n let offset = itemDecode(locaData, j);\n\n if (offset > oldGlyfDataLength) {\n offset = oldGlyfDataLength;\n }\n\n locaEntries.push({\n index: i,\n offset,\n endOffset: 0\n });\n }\n\n locaEntries.sort((a, b) => {\n return a.offset - b.offset;\n });\n\n for (i = 0; i < numGlyphs; i++) {\n locaEntries[i].endOffset = locaEntries[i + 1].offset;\n }\n\n locaEntries.sort((a, b) => {\n return a.index - b.index;\n });\n var missingGlyphs = Object.create(null);\n var writeOffset = 0;\n itemEncode(locaData, 0, writeOffset);\n\n for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n var glyphProfile = sanitizeGlyph(oldGlyfData, locaEntries[i].offset, locaEntries[i].endOffset, newGlyfData, writeOffset, hintsValid);\n var newLength = glyphProfile.length;\n\n if (newLength === 0) {\n missingGlyphs[i] = true;\n }\n\n if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\n maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\n }\n\n writeOffset += newLength;\n itemEncode(locaData, j, writeOffset);\n }\n\n if (writeOffset === 0) {\n var simpleGlyph = new Uint8Array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]);\n\n for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {\n itemEncode(locaData, j, simpleGlyph.length);\n }\n\n glyf.data = simpleGlyph;\n } else if (dupFirstEntry) {\n var firstEntryLength = itemDecode(locaData, itemSize);\n\n if (newGlyfData.length > firstEntryLength + writeOffset) {\n glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\n } else {\n glyf.data = new Uint8Array(firstEntryLength + writeOffset);\n glyf.data.set(newGlyfData.subarray(0, writeOffset));\n }\n\n glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n itemEncode(loca.data, locaData.length - itemSize, writeOffset + firstEntryLength);\n } else {\n glyf.data = newGlyfData.subarray(0, writeOffset);\n }\n\n return {\n missingGlyphs,\n maxSizeOfInstructions\n };\n }\n\n function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {\n var start = (font.start ? font.start : 0) + post.offset;\n font.pos = start;\n var length = post.length,\n end = start + length;\n var version = font.getInt32();\n font.skip(28);\n var glyphNames;\n var valid = true;\n var i;\n\n switch (version) {\n case 0x00010000:\n glyphNames = MacStandardGlyphOrdering;\n break;\n\n case 0x00020000:\n var numGlyphs = font.getUint16();\n\n if (numGlyphs !== maxpNumGlyphs) {\n valid = false;\n break;\n }\n\n var glyphNameIndexes = [];\n\n for (i = 0; i < numGlyphs; ++i) {\n var index = font.getUint16();\n\n if (index >= 32768) {\n valid = false;\n break;\n }\n\n glyphNameIndexes.push(index);\n }\n\n if (!valid) {\n break;\n }\n\n var customNames = [];\n var strBuf = [];\n\n while (font.pos < end) {\n var stringLength = font.getByte();\n strBuf.length = stringLength;\n\n for (i = 0; i < stringLength; ++i) {\n strBuf[i] = String.fromCharCode(font.getByte());\n }\n\n customNames.push(strBuf.join(\"\"));\n }\n\n glyphNames = [];\n\n for (i = 0; i < numGlyphs; ++i) {\n var j = glyphNameIndexes[i];\n\n if (j < 258) {\n glyphNames.push(MacStandardGlyphOrdering[j]);\n continue;\n }\n\n glyphNames.push(customNames[j - 258]);\n }\n\n break;\n\n case 0x00030000:\n break;\n\n default:\n (0, _util.warn)(\"Unknown/unsupported post table version \" + version);\n valid = false;\n\n if (propertiesObj.defaultEncoding) {\n glyphNames = propertiesObj.defaultEncoding;\n }\n\n break;\n }\n\n propertiesObj.glyphNames = glyphNames;\n return valid;\n }\n\n function readNameTable(nameTable) {\n var start = (font.start ? font.start : 0) + nameTable.offset;\n font.pos = start;\n var names = [[], []];\n var length = nameTable.length,\n end = start + length;\n var format = font.getUint16();\n var FORMAT_0_HEADER_LENGTH = 6;\n\n if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n return names;\n }\n\n var numRecords = font.getUint16();\n var stringsStart = font.getUint16();\n var records = [];\n var NAME_RECORD_LENGTH = 12;\n var i, ii;\n\n for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) {\n var r = {\n platform: font.getUint16(),\n encoding: font.getUint16(),\n language: font.getUint16(),\n name: font.getUint16(),\n length: font.getUint16(),\n offset: font.getUint16()\n };\n\n if (r.platform === 1 && r.encoding === 0 && r.language === 0 || r.platform === 3 && r.encoding === 1 && r.language === 0x409) {\n records.push(r);\n }\n }\n\n for (i = 0, ii = records.length; i < ii; i++) {\n var record = records[i];\n\n if (record.length <= 0) {\n continue;\n }\n\n var pos = start + stringsStart + record.offset;\n\n if (pos + record.length > end) {\n continue;\n }\n\n font.pos = pos;\n var nameIndex = record.name;\n\n if (record.encoding) {\n var str = \"\";\n\n for (var j = 0, jj = record.length; j < jj; j += 2) {\n str += String.fromCharCode(font.getUint16());\n }\n\n names[1][nameIndex] = str;\n } else {\n names[0][nameIndex] = (0, _util.bytesToString)(font.getBytes(record.length));\n }\n }\n\n return names;\n }\n\n var TTOpsStackDeltas = [0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\n\n function sanitizeTTProgram(table, ttContext) {\n var data = table.data;\n var i = 0,\n j,\n n,\n b,\n funcId,\n pc,\n lastEndf = 0,\n lastDeff = 0;\n var stack = [];\n var callstack = [];\n var functionsCalled = [];\n var tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\n var inFDEF = false,\n ifLevel = 0,\n inELSE = 0;\n\n for (var ii = data.length; i < ii;) {\n var op = data[i++];\n\n if (op === 0x40) {\n n = data[i++];\n\n if (inFDEF || inELSE) {\n i += n;\n } else {\n for (j = 0; j < n; j++) {\n stack.push(data[i++]);\n }\n }\n } else if (op === 0x41) {\n n = data[i++];\n\n if (inFDEF || inELSE) {\n i += n * 2;\n } else {\n for (j = 0; j < n; j++) {\n b = data[i++];\n stack.push(b << 8 | data[i++]);\n }\n }\n } else if ((op & 0xf8) === 0xb0) {\n n = op - 0xb0 + 1;\n\n if (inFDEF || inELSE) {\n i += n;\n } else {\n for (j = 0; j < n; j++) {\n stack.push(data[i++]);\n }\n }\n } else if ((op & 0xf8) === 0xb8) {\n n = op - 0xb8 + 1;\n\n if (inFDEF || inELSE) {\n i += n * 2;\n } else {\n for (j = 0; j < n; j++) {\n b = data[i++];\n stack.push(b << 8 | data[i++]);\n }\n }\n } else if (op === 0x2b && !tooComplexToFollowFunctions) {\n if (!inFDEF && !inELSE) {\n funcId = stack[stack.length - 1];\n\n if (isNaN(funcId)) {\n (0, _util.info)(\"TT: CALL empty stack (or invalid entry).\");\n } else {\n ttContext.functionsUsed[funcId] = true;\n\n if (funcId in ttContext.functionsStackDeltas) {\n const newStackLength = stack.length + ttContext.functionsStackDeltas[funcId];\n\n if (newStackLength < 0) {\n (0, _util.warn)(\"TT: CALL invalid functions stack delta.\");\n ttContext.hintsValid = false;\n return;\n }\n\n stack.length = newStackLength;\n } else if (funcId in ttContext.functionsDefined && !functionsCalled.includes(funcId)) {\n callstack.push({\n data,\n i,\n stackTop: stack.length - 1\n });\n functionsCalled.push(funcId);\n pc = ttContext.functionsDefined[funcId];\n\n if (!pc) {\n (0, _util.warn)(\"TT: CALL non-existent function\");\n ttContext.hintsValid = false;\n return;\n }\n\n data = pc.data;\n i = pc.i;\n }\n }\n }\n } else if (op === 0x2c && !tooComplexToFollowFunctions) {\n if (inFDEF || inELSE) {\n (0, _util.warn)(\"TT: nested FDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n\n inFDEF = true;\n lastDeff = i;\n funcId = stack.pop();\n ttContext.functionsDefined[funcId] = {\n data,\n i\n };\n } else if (op === 0x2d) {\n if (inFDEF) {\n inFDEF = false;\n lastEndf = i;\n } else {\n pc = callstack.pop();\n\n if (!pc) {\n (0, _util.warn)(\"TT: ENDF bad stack\");\n ttContext.hintsValid = false;\n return;\n }\n\n funcId = functionsCalled.pop();\n data = pc.data;\n i = pc.i;\n ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop;\n }\n } else if (op === 0x89) {\n if (inFDEF || inELSE) {\n (0, _util.warn)(\"TT: nested IDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n\n inFDEF = true;\n lastDeff = i;\n } else if (op === 0x58) {\n ++ifLevel;\n } else if (op === 0x1b) {\n inELSE = ifLevel;\n } else if (op === 0x59) {\n if (inELSE === ifLevel) {\n inELSE = 0;\n }\n\n --ifLevel;\n } else if (op === 0x1c) {\n if (!inFDEF && !inELSE) {\n var offset = stack[stack.length - 1];\n\n if (offset > 0) {\n i += offset - 1;\n }\n }\n }\n\n if (!inFDEF && !inELSE) {\n let stackDelta = 0;\n\n if (op <= 0x8e) {\n stackDelta = TTOpsStackDeltas[op];\n } else if (op >= 0xc0 && op <= 0xdf) {\n stackDelta = -1;\n } else if (op >= 0xe0) {\n stackDelta = -2;\n }\n\n if (op >= 0x71 && op <= 0x75) {\n n = stack.pop();\n\n if (!isNaN(n)) {\n stackDelta = -n * 2;\n }\n }\n\n while (stackDelta < 0 && stack.length > 0) {\n stack.pop();\n stackDelta++;\n }\n\n while (stackDelta > 0) {\n stack.push(NaN);\n stackDelta--;\n }\n }\n }\n\n ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n var content = [data];\n\n if (i > data.length) {\n content.push(new Uint8Array(i - data.length));\n }\n\n if (lastDeff > lastEndf) {\n (0, _util.warn)(\"TT: complementing a missing function tail\");\n content.push(new Uint8Array([0x22, 0x2d]));\n }\n\n foldTTTable(table, content);\n }\n\n function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n if (ttContext.tooComplexToFollowFunctions) {\n return;\n }\n\n if (ttContext.functionsDefined.length > maxFunctionDefs) {\n (0, _util.warn)(\"TT: more functions defined than expected\");\n ttContext.hintsValid = false;\n return;\n }\n\n for (var j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n if (j > maxFunctionDefs) {\n (0, _util.warn)(\"TT: invalid function id: \" + j);\n ttContext.hintsValid = false;\n return;\n }\n\n if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n (0, _util.warn)(\"TT: undefined function: \" + j);\n ttContext.hintsValid = false;\n return;\n }\n }\n }\n\n function foldTTTable(table, content) {\n if (content.length > 1) {\n var newLength = 0;\n var j, jj;\n\n for (j = 0, jj = content.length; j < jj; j++) {\n newLength += content[j].length;\n }\n\n newLength = newLength + 3 & ~3;\n var result = new Uint8Array(newLength);\n var pos = 0;\n\n for (j = 0, jj = content.length; j < jj; j++) {\n result.set(content[j], pos);\n pos += content[j].length;\n }\n\n table.data = result;\n table.length = newLength;\n }\n }\n\n function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n var ttContext = {\n functionsDefined: [],\n functionsUsed: [],\n functionsStackDeltas: [],\n tooComplexToFollowFunctions: false,\n hintsValid: true\n };\n\n if (fpgm) {\n sanitizeTTProgram(fpgm, ttContext);\n }\n\n if (prep) {\n sanitizeTTProgram(prep, ttContext);\n }\n\n if (fpgm) {\n checkInvalidFunctions(ttContext, maxFunctionDefs);\n }\n\n if (cvt && cvt.length & 1) {\n var cvtData = new Uint8Array(cvt.length + 1);\n cvtData.set(cvt.data);\n cvt.data = cvtData;\n }\n\n return ttContext.hintsValid;\n }\n\n font = new _stream.Stream(new Uint8Array(font.getBytes()));\n let header, tables;\n\n if (isTrueTypeCollectionFile(font)) {\n const ttcData = readTrueTypeCollectionData(font, this.name);\n header = ttcData.header;\n tables = ttcData.tables;\n } else {\n header = readOpenTypeHeader(font);\n tables = readTables(font, header.numTables);\n }\n\n let cff, cffFile;\n var isTrueType = !tables[\"CFF \"];\n\n if (!isTrueType) {\n const isComposite = properties.composite && ((properties.cidToGidMap || []).length > 0 || !(properties.cMap instanceof _cmap.IdentityCMap));\n\n if (header.version === \"OTTO\" && !isComposite || !tables.head || !tables.hhea || !tables.maxp || !tables.post) {\n cffFile = new _stream.Stream(tables[\"CFF \"].data);\n cff = new CFFFont(cffFile, properties);\n adjustWidths(properties);\n return this.convert(name, cff, properties);\n }\n\n delete tables.glyf;\n delete tables.loca;\n delete tables.fpgm;\n delete tables.prep;\n delete tables[\"cvt \"];\n this.isOpenType = true;\n } else {\n if (!tables.loca) {\n throw new _util.FormatError('Required \"loca\" table is not found');\n }\n\n if (!tables.glyf) {\n (0, _util.warn)('Required \"glyf\" table is not found -- trying to recover.');\n tables.glyf = {\n tag: \"glyf\",\n data: new Uint8Array(0)\n };\n }\n\n this.isOpenType = false;\n }\n\n if (!tables.maxp) {\n throw new _util.FormatError('Required \"maxp\" table is not found');\n }\n\n font.pos = (font.start || 0) + tables.maxp.offset;\n var version = font.getInt32();\n const numGlyphs = font.getUint16();\n let numGlyphsOut = numGlyphs + 1;\n let dupFirstEntry = true;\n\n if (numGlyphsOut > 0xffff) {\n dupFirstEntry = false;\n numGlyphsOut = numGlyphs;\n (0, _util.warn)(\"Not enough space in glyfs to duplicate first glyph.\");\n }\n\n var maxFunctionDefs = 0;\n var maxSizeOfInstructions = 0;\n\n if (version >= 0x00010000 && tables.maxp.length >= 22) {\n font.pos += 8;\n var maxZones = font.getUint16();\n\n if (maxZones > 2) {\n tables.maxp.data[14] = 0;\n tables.maxp.data[15] = 2;\n }\n\n font.pos += 4;\n maxFunctionDefs = font.getUint16();\n font.pos += 4;\n maxSizeOfInstructions = font.getUint16();\n }\n\n tables.maxp.data[4] = numGlyphsOut >> 8;\n tables.maxp.data[5] = numGlyphsOut & 255;\n var hintsValid = sanitizeTTPrograms(tables.fpgm, tables.prep, tables[\"cvt \"], maxFunctionDefs);\n\n if (!hintsValid) {\n delete tables.fpgm;\n delete tables.prep;\n delete tables[\"cvt \"];\n }\n\n sanitizeMetrics(font, tables.hhea, tables.hmtx, numGlyphsOut, dupFirstEntry);\n\n if (!tables.head) {\n throw new _util.FormatError('Required \"head\" table is not found');\n }\n\n sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);\n var missingGlyphs = Object.create(null);\n\n if (isTrueType) {\n var isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]);\n var glyphsInfo = sanitizeGlyphLocations(tables.loca, tables.glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions);\n missingGlyphs = glyphsInfo.missingGlyphs;\n\n if (version >= 0x00010000 && tables.maxp.length >= 22) {\n tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\n tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255;\n }\n }\n\n if (!tables.hhea) {\n throw new _util.FormatError('Required \"hhea\" table is not found');\n }\n\n if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {\n tables.hhea.data[10] = 0xff;\n tables.hhea.data[11] = 0xff;\n }\n\n var metricsOverride = {\n unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),\n yMax: int16(tables.head.data[42], tables.head.data[43]),\n yMin: signedInt16(tables.head.data[38], tables.head.data[39]),\n ascent: int16(tables.hhea.data[4], tables.hhea.data[5]),\n descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7])\n };\n this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n\n if (tables.post) {\n readPostScriptTable(tables.post, properties, numGlyphs);\n }\n\n tables.post = {\n tag: \"post\",\n data: createPostTable(properties)\n };\n const charCodeToGlyphId = [];\n\n function hasGlyph(glyphId) {\n return !missingGlyphs[glyphId];\n }\n\n if (properties.composite) {\n var cidToGidMap = properties.cidToGidMap || [];\n var isCidToGidMapEmpty = cidToGidMap.length === 0;\n properties.cMap.forEach(function (charCode, cid) {\n if (cid > 0xffff) {\n throw new _util.FormatError(\"Max size of CID is 65,535\");\n }\n\n var glyphId = -1;\n\n if (isCidToGidMapEmpty) {\n glyphId = cid;\n } else if (cidToGidMap[cid] !== undefined) {\n glyphId = cidToGidMap[cid];\n }\n\n if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n charCodeToGlyphId[charCode] = glyphId;\n }\n });\n } else {\n var cmapTable = readCmapTable(tables.cmap, font, this.isSymbolicFont, properties.hasEncoding);\n var cmapPlatformId = cmapTable.platformId;\n var cmapEncodingId = cmapTable.encodingId;\n var cmapMappings = cmapTable.mappings;\n var cmapMappingsLength = cmapMappings.length;\n let baseEncoding = [];\n\n if (properties.hasEncoding && (properties.baseEncodingName === \"MacRomanEncoding\" || properties.baseEncodingName === \"WinAnsiEncoding\")) {\n baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName);\n }\n\n if (properties.hasEncoding && !this.isSymbolicFont && (cmapPlatformId === 3 && cmapEncodingId === 1 || cmapPlatformId === 1 && cmapEncodingId === 0)) {\n var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n\n for (let charCode = 0; charCode < 256; charCode++) {\n var glyphName, standardGlyphName;\n\n if (this.differences && charCode in this.differences) {\n glyphName = this.differences[charCode];\n } else if (charCode in baseEncoding && baseEncoding[charCode] !== \"\") {\n glyphName = baseEncoding[charCode];\n } else {\n glyphName = _encodings.StandardEncoding[charCode];\n }\n\n if (!glyphName) {\n continue;\n }\n\n standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n var unicodeOrCharCode;\n\n if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n unicodeOrCharCode = _encodings.MacRomanEncoding.indexOf(standardGlyphName);\n }\n\n for (let i = 0; i < cmapMappingsLength; ++i) {\n if (cmapMappings[i].charCode !== unicodeOrCharCode) {\n continue;\n }\n\n charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n break;\n }\n }\n } else if (cmapPlatformId === 0) {\n for (let i = 0; i < cmapMappingsLength; ++i) {\n charCodeToGlyphId[cmapMappings[i].charCode] = cmapMappings[i].glyphId;\n }\n } else {\n for (let i = 0; i < cmapMappingsLength; ++i) {\n let charCode = cmapMappings[i].charCode;\n\n if (cmapPlatformId === 3 && charCode >= 0xf000 && charCode <= 0xf0ff) {\n charCode &= 0xff;\n }\n\n charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n }\n }\n\n if (properties.glyphNames && baseEncoding.length) {\n for (let i = 0; i < 256; ++i) {\n if (charCodeToGlyphId[i] === undefined && baseEncoding[i]) {\n glyphName = baseEncoding[i];\n const glyphId = properties.glyphNames.indexOf(glyphName);\n\n if (glyphId > 0 && hasGlyph(glyphId)) {\n charCodeToGlyphId[i] = glyphId;\n }\n }\n }\n }\n }\n\n if (charCodeToGlyphId.length === 0) {\n charCodeToGlyphId[0] = 0;\n }\n\n let glyphZeroId = numGlyphsOut - 1;\n\n if (!dupFirstEntry) {\n glyphZeroId = 0;\n }\n\n var newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId);\n this.toFontChar = newMapping.toFontChar;\n tables.cmap = {\n tag: \"cmap\",\n data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut)\n };\n\n if (!tables[\"OS/2\"] || !validateOS2Table(tables[\"OS/2\"], font)) {\n tables[\"OS/2\"] = {\n tag: \"OS/2\",\n data: createOS2Table(properties, newMapping.charCodeToGlyphId, metricsOverride)\n };\n }\n\n if (!isTrueType) {\n try {\n cffFile = new _stream.Stream(tables[\"CFF \"].data);\n var parser = new _cff_parser.CFFParser(cffFile, properties, SEAC_ANALYSIS_ENABLED);\n cff = parser.parse();\n cff.duplicateFirstGlyph();\n var compiler = new _cff_parser.CFFCompiler(cff);\n tables[\"CFF \"].data = compiler.compile();\n } catch (e) {\n (0, _util.warn)(\"Failed to compile font \" + properties.loadedName);\n }\n }\n\n if (!tables.name) {\n tables.name = {\n tag: \"name\",\n data: createNameTable(this.name)\n };\n } else {\n var namePrototype = readNameTable(tables.name);\n tables.name.data = createNameTable(name, namePrototype);\n }\n\n var builder = new OpenTypeFileBuilder(header.version);\n\n for (var tableTag in tables) {\n builder.addTable(tableTag, tables[tableTag].data);\n }\n\n return builder.toArray();\n },\n convert: function Font_convert(fontName, font, properties) {\n properties.fixedPitch = false;\n\n if (properties.builtInEncoding) {\n adjustToUnicode(properties, properties.builtInEncoding);\n }\n\n let glyphZeroId = 1;\n\n if (font instanceof CFFFont) {\n glyphZeroId = font.numGlyphs - 1;\n }\n\n var mapping = font.getGlyphMapping(properties);\n var newMapping = adjustMapping(mapping, font.hasGlyphId.bind(font), glyphZeroId);\n this.toFontChar = newMapping.toFontChar;\n var numGlyphs = font.numGlyphs;\n\n function getCharCodes(charCodeToGlyphId, glyphId) {\n var charCodes = null;\n\n for (var charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n if (!charCodes) {\n charCodes = [];\n }\n\n charCodes.push(charCode | 0);\n }\n }\n\n return charCodes;\n }\n\n function createCharCode(charCodeToGlyphId, glyphId) {\n for (var charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n return charCode | 0;\n }\n }\n\n newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] = glyphId;\n return newMapping.nextAvailableFontCharCode++;\n }\n\n var seacs = font.seacs;\n\n if (SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {\n var matrix = properties.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n var charset = font.getCharset();\n var seacMap = Object.create(null);\n\n for (var glyphId in seacs) {\n glyphId |= 0;\n var seac = seacs[glyphId];\n var baseGlyphName = _encodings.StandardEncoding[seac[2]];\n var accentGlyphName = _encodings.StandardEncoding[seac[3]];\n var baseGlyphId = charset.indexOf(baseGlyphName);\n var accentGlyphId = charset.indexOf(accentGlyphName);\n\n if (baseGlyphId < 0 || accentGlyphId < 0) {\n continue;\n }\n\n var accentOffset = {\n x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5]\n };\n var charCodes = getCharCodes(mapping, glyphId);\n\n if (!charCodes) {\n continue;\n }\n\n for (let i = 0, ii = charCodes.length; i < ii; i++) {\n var charCode = charCodes[i];\n var charCodeToGlyphId = newMapping.charCodeToGlyphId;\n var baseFontCharCode = createCharCode(charCodeToGlyphId, baseGlyphId);\n var accentFontCharCode = createCharCode(charCodeToGlyphId, accentGlyphId);\n seacMap[charCode] = {\n baseFontCharCode,\n accentFontCharCode,\n accentOffset\n };\n }\n }\n\n properties.seacMap = seacMap;\n }\n\n var unitsPerEm = 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0];\n var builder = new OpenTypeFileBuilder(\"\\x4F\\x54\\x54\\x4F\");\n builder.addTable(\"CFF \", font.data);\n builder.addTable(\"OS/2\", createOS2Table(properties, newMapping.charCodeToGlyphId));\n builder.addTable(\"cmap\", createCmapTable(newMapping.charCodeToGlyphId, numGlyphs));\n builder.addTable(\"head\", \"\\x00\\x01\\x00\\x00\" + \"\\x00\\x00\\x10\\x00\" + \"\\x00\\x00\\x00\\x00\" + \"\\x5F\\x0F\\x3C\\xF5\" + \"\\x00\\x00\" + safeString16(unitsPerEm) + \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + \"\\x00\\x00\" + safeString16(properties.descent) + \"\\x0F\\xFF\" + safeString16(properties.ascent) + string16(properties.italicAngle ? 2 : 0) + \"\\x00\\x11\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\");\n builder.addTable(\"hhea\", \"\\x00\\x01\\x00\\x00\" + safeString16(properties.ascent) + safeString16(properties.descent) + \"\\x00\\x00\" + \"\\xFF\\xFF\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + safeString16(properties.capHeight) + safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + string16(numGlyphs));\n builder.addTable(\"hmtx\", function fontFieldsHmtx() {\n var charstrings = font.charstrings;\n var cffWidths = font.cff ? font.cff.widths : null;\n var hmtx = \"\\x00\\x00\\x00\\x00\";\n\n for (let i = 1, ii = numGlyphs; i < ii; i++) {\n var width = 0;\n\n if (charstrings) {\n var charstring = charstrings[i - 1];\n width = \"width\" in charstring ? charstring.width : 0;\n } else if (cffWidths) {\n width = Math.ceil(cffWidths[i] || 0);\n }\n\n hmtx += string16(width) + string16(0);\n }\n\n return hmtx;\n }());\n builder.addTable(\"maxp\", \"\\x00\\x00\\x50\\x00\" + string16(numGlyphs));\n builder.addTable(\"name\", createNameTable(fontName));\n builder.addTable(\"post\", createPostTable(properties));\n return builder.toArray();\n },\n\n get spaceWidth() {\n var possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n var width;\n\n for (var i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {\n var glyphName = possibleSpaceReplacements[i];\n\n if (glyphName in this.widths) {\n width = this.widths[glyphName];\n break;\n }\n\n var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n var glyphUnicode = glyphsUnicodeMap[glyphName];\n var charcode = 0;\n\n if (this.composite && this.cMap.contains(glyphUnicode)) {\n charcode = this.cMap.lookup(glyphUnicode);\n }\n\n if (!charcode && this.toUnicode) {\n charcode = this.toUnicode.charCodeOf(glyphUnicode);\n }\n\n if (charcode <= 0) {\n charcode = glyphUnicode;\n }\n\n width = this.widths[charcode];\n\n if (width) {\n break;\n }\n }\n\n width = width || this.defaultWidth;\n return (0, _util.shadow)(this, \"spaceWidth\", width);\n },\n\n charToGlyph: function Font_charToGlyph(charcode, isSpace) {\n var fontCharCode, width, operatorListId;\n var widthCode = charcode;\n\n if (this.cMap && this.cMap.contains(charcode)) {\n widthCode = this.cMap.lookup(charcode);\n }\n\n width = this.widths[widthCode];\n width = (0, _util.isNum)(width) ? width : this.defaultWidth;\n var vmetric = this.vmetrics && this.vmetrics[widthCode];\n let unicode = this.toUnicode.get(charcode) || this.fallbackToUnicode.get(charcode) || charcode;\n\n if (typeof unicode === \"number\") {\n unicode = String.fromCharCode(unicode);\n }\n\n var isInFont = (charcode in this.toFontChar);\n fontCharCode = this.toFontChar[charcode] || charcode;\n\n if (this.missingFile) {\n const glyphName = this.differences[charcode] || this.defaultEncoding[charcode];\n\n if ((glyphName === \".notdef\" || glyphName === \"\") && this.type === \"Type1\") {\n fontCharCode = 0x20;\n }\n\n fontCharCode = (0, _unicode.mapSpecialUnicodeValues)(fontCharCode);\n }\n\n if (this.isType3Font) {\n operatorListId = fontCharCode;\n }\n\n var accent = null;\n\n if (this.seacMap && this.seacMap[charcode]) {\n isInFont = true;\n var seac = this.seacMap[charcode];\n fontCharCode = seac.baseFontCharCode;\n accent = {\n fontChar: String.fromCodePoint(seac.accentFontCharCode),\n offset: seac.accentOffset\n };\n }\n\n let fontChar = \"\";\n\n if (typeof fontCharCode === \"number\") {\n if (fontCharCode <= 0x10ffff) {\n fontChar = String.fromCodePoint(fontCharCode);\n } else {\n (0, _util.warn)(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);\n }\n }\n\n var glyph = this.glyphCache[charcode];\n\n if (!glyph || !glyph.matchesForCache(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont)) {\n glyph = new Glyph(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont);\n this.glyphCache[charcode] = glyph;\n }\n\n return glyph;\n },\n charsToGlyphs: function Font_charsToGlyphs(chars) {\n var charsCache = this.charsCache;\n var glyphs, glyph, charcode;\n\n if (charsCache) {\n glyphs = charsCache[chars];\n\n if (glyphs) {\n return glyphs;\n }\n }\n\n if (!charsCache) {\n charsCache = this.charsCache = Object.create(null);\n }\n\n glyphs = [];\n var charsCacheKey = chars;\n var i = 0,\n ii;\n\n if (this.cMap) {\n var c = Object.create(null);\n\n while (i < chars.length) {\n this.cMap.readCharCode(chars, i, c);\n charcode = c.charcode;\n var length = c.length;\n i += length;\n var isSpace = length === 1 && chars.charCodeAt(i - 1) === 0x20;\n glyph = this.charToGlyph(charcode, isSpace);\n glyphs.push(glyph);\n }\n } else {\n for (i = 0, ii = chars.length; i < ii; ++i) {\n charcode = chars.charCodeAt(i);\n glyph = this.charToGlyph(charcode, charcode === 0x20);\n glyphs.push(glyph);\n }\n }\n\n return charsCache[charsCacheKey] = glyphs;\n },\n\n get glyphCacheValues() {\n return Object.values(this.glyphCache);\n }\n\n };\n return Font;\n}();\n\nexports.Font = Font;\n\nvar ErrorFont = function ErrorFontClosure() {\n function ErrorFont(error) {\n this.error = error;\n this.loadedName = \"g_font_error\";\n this.missingFile = true;\n }\n\n ErrorFont.prototype = {\n charsToGlyphs: function ErrorFont_charsToGlyphs() {\n return [];\n },\n\n exportData(extraProperties = false) {\n return {\n error: this.error\n };\n }\n\n };\n return ErrorFont;\n}();\n\nexports.ErrorFont = ErrorFont;\n\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n var charCodeToGlyphId = Object.create(null);\n var glyphId, charCode, baseEncoding;\n var isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n\n if (properties.baseEncodingName) {\n baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName);\n\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0;\n }\n }\n } else if (isSymbolicFont) {\n for (charCode in builtInEncoding) {\n charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n }\n } else {\n baseEncoding = _encodings.StandardEncoding;\n\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0;\n }\n }\n }\n\n var differences = properties.differences,\n glyphsUnicodeMap;\n\n if (differences) {\n for (charCode in differences) {\n var glyphName = differences[charCode];\n glyphId = glyphNames.indexOf(glyphName);\n\n if (glyphId === -1) {\n if (!glyphsUnicodeMap) {\n glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n }\n\n var standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n\n if (standardGlyphName !== glyphName) {\n glyphId = glyphNames.indexOf(standardGlyphName);\n }\n }\n\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0;\n }\n }\n }\n\n return charCodeToGlyphId;\n}\n\nvar Type1Font = function Type1FontClosure() {\n function findBlock(streamBytes, signature, startIndex) {\n var streamBytesLength = streamBytes.length;\n var signatureLength = signature.length;\n var scanLength = streamBytesLength - signatureLength;\n var i = startIndex,\n j,\n found = false;\n\n while (i < scanLength) {\n j = 0;\n\n while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n j++;\n }\n\n if (j >= signatureLength) {\n i += j;\n\n while (i < streamBytesLength && (0, _core_utils.isWhiteSpace)(streamBytes[i])) {\n i++;\n }\n\n found = true;\n break;\n }\n\n i++;\n }\n\n return {\n found,\n length: i\n };\n }\n\n function getHeaderBlock(stream, suggestedLength) {\n var EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n var streamStartPos = stream.pos;\n var headerBytes, headerBytesLength, block;\n\n try {\n headerBytes = stream.getBytes(suggestedLength);\n headerBytesLength = headerBytes.length;\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n }\n\n if (headerBytesLength === suggestedLength) {\n block = findBlock(headerBytes, EEXEC_SIGNATURE, suggestedLength - 2 * EEXEC_SIGNATURE.length);\n\n if (block.found && block.length === suggestedLength) {\n return {\n stream: new _stream.Stream(headerBytes),\n length: suggestedLength\n };\n }\n }\n\n (0, _util.warn)('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n stream.pos = streamStartPos;\n var SCAN_BLOCK_LENGTH = 2048;\n var actualLength;\n\n while (true) {\n var scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n\n if (block.length === 0) {\n break;\n }\n\n stream.pos += block.length;\n\n if (block.found) {\n actualLength = stream.pos - streamStartPos;\n break;\n }\n }\n\n stream.pos = streamStartPos;\n\n if (actualLength) {\n return {\n stream: new _stream.Stream(stream.getBytes(actualLength)),\n length: actualLength\n };\n }\n\n (0, _util.warn)('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n return {\n stream: new _stream.Stream(stream.getBytes(suggestedLength)),\n length: suggestedLength\n };\n }\n\n function getEexecBlock(stream, suggestedLength) {\n var eexecBytes = stream.getBytes();\n return {\n stream: new _stream.Stream(eexecBytes),\n length: eexecBytes.length\n };\n }\n\n function Type1Font(name, file, properties) {\n var PFB_HEADER_SIZE = 6;\n var headerBlockLength = properties.length1;\n var eexecBlockLength = properties.length2;\n var pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n var pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n\n if (pfbHeaderPresent) {\n file.skip(PFB_HEADER_SIZE);\n headerBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2];\n }\n\n var headerBlock = getHeaderBlock(file, headerBlockLength);\n var headerBlockParser = new _type1_parser.Type1Parser(headerBlock.stream, false, SEAC_ANALYSIS_ENABLED);\n headerBlockParser.extractFontHeader(properties);\n\n if (pfbHeaderPresent) {\n pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n eexecBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2];\n }\n\n var eexecBlock = getEexecBlock(file, eexecBlockLength);\n var eexecBlockParser = new _type1_parser.Type1Parser(eexecBlock.stream, true, SEAC_ANALYSIS_ENABLED);\n var data = eexecBlockParser.extractFontProgram(properties);\n\n for (const key in data.properties) {\n properties[key] = data.properties[key];\n }\n\n var charstrings = data.charstrings;\n var type2Charstrings = this.getType2Charstrings(charstrings);\n var subrs = this.getType2Subrs(data.subrs);\n this.charstrings = charstrings;\n this.data = this.wrap(name, type2Charstrings, this.charstrings, subrs, properties);\n this.seacs = this.getSeacs(data.charstrings);\n }\n\n Type1Font.prototype = {\n get numGlyphs() {\n return this.charstrings.length + 1;\n },\n\n getCharset: function Type1Font_getCharset() {\n var charset = [\".notdef\"];\n var charstrings = this.charstrings;\n\n for (var glyphId = 0; glyphId < charstrings.length; glyphId++) {\n charset.push(charstrings[glyphId].glyphName);\n }\n\n return charset;\n },\n getGlyphMapping: function Type1Font_getGlyphMapping(properties) {\n var charstrings = this.charstrings;\n\n if (properties.composite) {\n const charCodeToGlyphId = Object.create(null);\n\n for (let glyphId = 0, charstringsLen = charstrings.length; glyphId < charstringsLen; glyphId++) {\n const charCode = properties.cMap.charCodeOf(glyphId);\n charCodeToGlyphId[charCode] = glyphId + 1;\n }\n\n return charCodeToGlyphId;\n }\n\n var glyphNames = [\".notdef\"],\n glyphId;\n\n for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n glyphNames.push(charstrings[glyphId].glyphName);\n }\n\n var encoding = properties.builtInEncoding;\n\n if (encoding) {\n var builtInEncoding = Object.create(null);\n\n for (var charCode in encoding) {\n glyphId = glyphNames.indexOf(encoding[charCode]);\n\n if (glyphId >= 0) {\n builtInEncoding[charCode] = glyphId;\n }\n }\n }\n\n return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n },\n hasGlyphId: function Type1Font_hasGlyphID(id) {\n if (id < 0 || id >= this.numGlyphs) {\n return false;\n }\n\n if (id === 0) {\n return true;\n }\n\n var glyph = this.charstrings[id - 1];\n return glyph.charstring.length > 0;\n },\n getSeacs: function Type1Font_getSeacs(charstrings) {\n var i, ii;\n var seacMap = [];\n\n for (i = 0, ii = charstrings.length; i < ii; i++) {\n var charstring = charstrings[i];\n\n if (charstring.seac) {\n seacMap[i + 1] = charstring.seac;\n }\n }\n\n return seacMap;\n },\n getType2Charstrings: function Type1Font_getType2Charstrings(type1Charstrings) {\n var type2Charstrings = [];\n\n for (var i = 0, ii = type1Charstrings.length; i < ii; i++) {\n type2Charstrings.push(type1Charstrings[i].charstring);\n }\n\n return type2Charstrings;\n },\n getType2Subrs: function Type1Font_getType2Subrs(type1Subrs) {\n var bias = 0;\n var count = type1Subrs.length;\n\n if (count < 1133) {\n bias = 107;\n } else if (count < 33769) {\n bias = 1131;\n } else {\n bias = 32768;\n }\n\n var type2Subrs = [];\n var i;\n\n for (i = 0; i < bias; i++) {\n type2Subrs.push([0x0b]);\n }\n\n for (i = 0; i < count; i++) {\n type2Subrs.push(type1Subrs[i]);\n }\n\n return type2Subrs;\n },\n wrap: function Type1Font_wrap(name, glyphs, charstrings, subrs, properties) {\n var cff = new _cff_parser.CFF();\n cff.header = new _cff_parser.CFFHeader(1, 0, 4, 4);\n cff.names = [name];\n var topDict = new _cff_parser.CFFTopDict();\n topDict.setByName(\"version\", 391);\n topDict.setByName(\"Notice\", 392);\n topDict.setByName(\"FullName\", 393);\n topDict.setByName(\"FamilyName\", 394);\n topDict.setByName(\"Weight\", 395);\n topDict.setByName(\"Encoding\", null);\n topDict.setByName(\"FontMatrix\", properties.fontMatrix);\n topDict.setByName(\"FontBBox\", properties.bbox);\n topDict.setByName(\"charset\", null);\n topDict.setByName(\"CharStrings\", null);\n topDict.setByName(\"Private\", null);\n cff.topDict = topDict;\n var strings = new _cff_parser.CFFStrings();\n strings.add(\"Version 0.11\");\n strings.add(\"See original notice\");\n strings.add(name);\n strings.add(name);\n strings.add(\"Medium\");\n cff.strings = strings;\n cff.globalSubrIndex = new _cff_parser.CFFIndex();\n var count = glyphs.length;\n var charsetArray = [\".notdef\"];\n var i, ii;\n\n for (i = 0; i < count; i++) {\n const glyphName = charstrings[i].glyphName;\n\n const index = _cff_parser.CFFStandardStrings.indexOf(glyphName);\n\n if (index === -1) {\n strings.add(glyphName);\n }\n\n charsetArray.push(glyphName);\n }\n\n cff.charset = new _cff_parser.CFFCharset(false, 0, charsetArray);\n var charStringsIndex = new _cff_parser.CFFIndex();\n charStringsIndex.add([0x8b, 0x0e]);\n\n for (i = 0; i < count; i++) {\n charStringsIndex.add(glyphs[i]);\n }\n\n cff.charStrings = charStringsIndex;\n var privateDict = new _cff_parser.CFFPrivateDict();\n privateDict.setByName(\"Subrs\", null);\n var fields = [\"BlueValues\", \"OtherBlues\", \"FamilyBlues\", \"FamilyOtherBlues\", \"StemSnapH\", \"StemSnapV\", \"BlueShift\", \"BlueFuzz\", \"BlueScale\", \"LanguageGroup\", \"ExpansionFactor\", \"ForceBold\", \"StdHW\", \"StdVW\"];\n\n for (i = 0, ii = fields.length; i < ii; i++) {\n var field = fields[i];\n\n if (!(field in properties.privateData)) {\n continue;\n }\n\n var value = properties.privateData[field];\n\n if (Array.isArray(value)) {\n for (var j = value.length - 1; j > 0; j--) {\n value[j] -= value[j - 1];\n }\n }\n\n privateDict.setByName(field, value);\n }\n\n cff.topDict.privateDict = privateDict;\n var subrIndex = new _cff_parser.CFFIndex();\n\n for (i = 0, ii = subrs.length; i < ii; i++) {\n subrIndex.add(subrs[i]);\n }\n\n privateDict.subrsIndex = subrIndex;\n var compiler = new _cff_parser.CFFCompiler(cff);\n return compiler.compile();\n }\n };\n return Type1Font;\n}();\n\nvar CFFFont = function CFFFontClosure() {\n function CFFFont(file, properties) {\n this.properties = properties;\n var parser = new _cff_parser.CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\n this.cff = parser.parse();\n this.cff.duplicateFirstGlyph();\n var compiler = new _cff_parser.CFFCompiler(this.cff);\n this.seacs = this.cff.seacs;\n\n try {\n this.data = compiler.compile();\n } catch (e) {\n (0, _util.warn)(\"Failed to compile font \" + properties.loadedName);\n this.data = file;\n }\n }\n\n CFFFont.prototype = {\n get numGlyphs() {\n return this.cff.charStrings.count;\n },\n\n getCharset: function CFFFont_getCharset() {\n return this.cff.charset.charset;\n },\n getGlyphMapping: function CFFFont_getGlyphMapping() {\n var cff = this.cff;\n var properties = this.properties;\n var charsets = cff.charset.charset;\n var charCodeToGlyphId;\n var glyphId;\n\n if (properties.composite) {\n charCodeToGlyphId = Object.create(null);\n let charCode;\n\n if (cff.isCIDFont) {\n for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n var cid = charsets[glyphId];\n charCode = properties.cMap.charCodeOf(cid);\n charCodeToGlyphId[charCode] = glyphId;\n }\n } else {\n for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n charCode = properties.cMap.charCodeOf(glyphId);\n charCodeToGlyphId[charCode] = glyphId;\n }\n }\n\n return charCodeToGlyphId;\n }\n\n var encoding = cff.encoding ? cff.encoding.encoding : null;\n charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n return charCodeToGlyphId;\n },\n hasGlyphId: function CFFFont_hasGlyphID(id) {\n return this.cff.hasGlyphId(id);\n }\n };\n return CFFFont;\n}();\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CFFFDSelect = exports.CFFCompiler = exports.CFFPrivateDict = exports.CFFTopDict = exports.CFFCharset = exports.CFFIndex = exports.CFFStrings = exports.CFFHeader = exports.CFF = exports.CFFParser = exports.CFFStandardStrings = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _charsets = __w_pdfjs_require__(32);\n\nvar _encodings = __w_pdfjs_require__(33);\n\nvar MAX_SUBR_NESTING = 10;\nvar CFFStandardStrings = [\".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\", \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\", \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\", \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"];\nexports.CFFStandardStrings = CFFStandardStrings;\nconst NUM_STANDARD_CFF_STRINGS = 391;\n\nvar CFFParser = function CFFParserClosure() {\n var CharstringValidationData = [null, {\n id: \"hstem\",\n min: 2,\n stackClearing: true,\n stem: true\n }, null, {\n id: \"vstem\",\n min: 2,\n stackClearing: true,\n stem: true\n }, {\n id: \"vmoveto\",\n min: 1,\n stackClearing: true\n }, {\n id: \"rlineto\",\n min: 2,\n resetStack: true\n }, {\n id: \"hlineto\",\n min: 1,\n resetStack: true\n }, {\n id: \"vlineto\",\n min: 1,\n resetStack: true\n }, {\n id: \"rrcurveto\",\n min: 6,\n resetStack: true\n }, null, {\n id: \"callsubr\",\n min: 1,\n undefStack: true\n }, {\n id: \"return\",\n min: 0,\n undefStack: true\n }, null, null, {\n id: \"endchar\",\n min: 0,\n stackClearing: true\n }, null, null, null, {\n id: \"hstemhm\",\n min: 2,\n stackClearing: true,\n stem: true\n }, {\n id: \"hintmask\",\n min: 0,\n stackClearing: true\n }, {\n id: \"cntrmask\",\n min: 0,\n stackClearing: true\n }, {\n id: \"rmoveto\",\n min: 2,\n stackClearing: true\n }, {\n id: \"hmoveto\",\n min: 1,\n stackClearing: true\n }, {\n id: \"vstemhm\",\n min: 2,\n stackClearing: true,\n stem: true\n }, {\n id: \"rcurveline\",\n min: 8,\n resetStack: true\n }, {\n id: \"rlinecurve\",\n min: 8,\n resetStack: true\n }, {\n id: \"vvcurveto\",\n min: 4,\n resetStack: true\n }, {\n id: \"hhcurveto\",\n min: 4,\n resetStack: true\n }, null, {\n id: \"callgsubr\",\n min: 1,\n undefStack: true\n }, {\n id: \"vhcurveto\",\n min: 4,\n resetStack: true\n }, {\n id: \"hvcurveto\",\n min: 4,\n resetStack: true\n }];\n var CharstringValidationData12 = [null, null, null, {\n id: \"and\",\n min: 2,\n stackDelta: -1\n }, {\n id: \"or\",\n min: 2,\n stackDelta: -1\n }, {\n id: \"not\",\n min: 1,\n stackDelta: 0\n }, null, null, null, {\n id: \"abs\",\n min: 1,\n stackDelta: 0\n }, {\n id: \"add\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] + stack[index - 1];\n }\n }, {\n id: \"sub\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] - stack[index - 1];\n }\n }, {\n id: \"div\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] / stack[index - 1];\n }\n }, null, {\n id: \"neg\",\n min: 1,\n stackDelta: 0,\n stackFn: function stack_div(stack, index) {\n stack[index - 1] = -stack[index - 1];\n }\n }, {\n id: \"eq\",\n min: 2,\n stackDelta: -1\n }, null, null, {\n id: \"drop\",\n min: 1,\n stackDelta: -1\n }, null, {\n id: \"put\",\n min: 2,\n stackDelta: -2\n }, {\n id: \"get\",\n min: 1,\n stackDelta: 0\n }, {\n id: \"ifelse\",\n min: 4,\n stackDelta: -3\n }, {\n id: \"random\",\n min: 0,\n stackDelta: 1\n }, {\n id: \"mul\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] * stack[index - 1];\n }\n }, null, {\n id: \"sqrt\",\n min: 1,\n stackDelta: 0\n }, {\n id: \"dup\",\n min: 1,\n stackDelta: 1\n }, {\n id: \"exch\",\n min: 2,\n stackDelta: 0\n }, {\n id: \"index\",\n min: 2,\n stackDelta: 0\n }, {\n id: \"roll\",\n min: 3,\n stackDelta: -2\n }, null, null, null, {\n id: \"hflex\",\n min: 7,\n resetStack: true\n }, {\n id: \"flex\",\n min: 13,\n resetStack: true\n }, {\n id: \"hflex1\",\n min: 9,\n resetStack: true\n }, {\n id: \"flex1\",\n min: 11,\n resetStack: true\n }];\n\n class CFFParser {\n constructor(file, properties, seacAnalysisEnabled) {\n this.bytes = file.getBytes();\n this.properties = properties;\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n }\n\n parse() {\n var properties = this.properties;\n var cff = new CFF();\n this.cff = cff;\n var header = this.parseHeader();\n var nameIndex = this.parseIndex(header.endPos);\n var topDictIndex = this.parseIndex(nameIndex.endPos);\n var stringIndex = this.parseIndex(topDictIndex.endPos);\n var globalSubrIndex = this.parseIndex(stringIndex.endPos);\n var topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n var topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n cff.header = header.obj;\n cff.names = this.parseNameIndex(nameIndex.obj);\n cff.strings = this.parseStringIndex(stringIndex.obj);\n cff.topDict = topDict;\n cff.globalSubrIndex = globalSubrIndex.obj;\n this.parsePrivateDict(cff.topDict);\n cff.isCIDFont = topDict.hasName(\"ROS\");\n var charStringOffset = topDict.getByName(\"CharStrings\");\n var charStringIndex = this.parseIndex(charStringOffset).obj;\n var fontMatrix = topDict.getByName(\"FontMatrix\");\n\n if (fontMatrix) {\n properties.fontMatrix = fontMatrix;\n }\n\n var fontBBox = topDict.getByName(\"FontBBox\");\n\n if (fontBBox) {\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n }\n\n var charset, encoding;\n\n if (cff.isCIDFont) {\n var fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n\n for (var i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n var dictRaw = fdArrayIndex.get(i);\n var fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), cff.strings);\n this.parsePrivateDict(fontDict);\n cff.fdArray.push(fontDict);\n }\n\n encoding = null;\n charset = this.parseCharsets(topDict.getByName(\"charset\"), charStringIndex.count, cff.strings, true);\n cff.fdSelect = this.parseFDSelect(topDict.getByName(\"FDSelect\"), charStringIndex.count);\n } else {\n charset = this.parseCharsets(topDict.getByName(\"charset\"), charStringIndex.count, cff.strings, false);\n encoding = this.parseEncoding(topDict.getByName(\"Encoding\"), properties, cff.strings, charset.charset);\n }\n\n cff.charset = charset;\n cff.encoding = encoding;\n var charStringsAndSeacs = this.parseCharStrings({\n charStrings: charStringIndex,\n localSubrIndex: topDict.privateDict.subrsIndex,\n globalSubrIndex: globalSubrIndex.obj,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray,\n privateDict: topDict.privateDict\n });\n cff.charStrings = charStringsAndSeacs.charStrings;\n cff.seacs = charStringsAndSeacs.seacs;\n cff.widths = charStringsAndSeacs.widths;\n return cff;\n }\n\n parseHeader() {\n var bytes = this.bytes;\n var bytesLength = bytes.length;\n var offset = 0;\n\n while (offset < bytesLength && bytes[offset] !== 1) {\n ++offset;\n }\n\n if (offset >= bytesLength) {\n throw new _util.FormatError(\"Invalid CFF header\");\n }\n\n if (offset !== 0) {\n (0, _util.info)(\"cff data is shifted\");\n bytes = bytes.subarray(offset);\n this.bytes = bytes;\n }\n\n var major = bytes[0];\n var minor = bytes[1];\n var hdrSize = bytes[2];\n var offSize = bytes[3];\n var header = new CFFHeader(major, minor, hdrSize, offSize);\n return {\n obj: header,\n endPos: hdrSize\n };\n }\n\n parseDict(dict) {\n var pos = 0;\n\n function parseOperand() {\n var value = dict[pos++];\n\n if (value === 30) {\n return parseFloatOperand();\n } else if (value === 28) {\n value = dict[pos++];\n value = (value << 24 | dict[pos++] << 16) >> 16;\n return value;\n } else if (value === 29) {\n value = dict[pos++];\n value = value << 8 | dict[pos++];\n value = value << 8 | dict[pos++];\n value = value << 8 | dict[pos++];\n return value;\n } else if (value >= 32 && value <= 246) {\n return value - 139;\n } else if (value >= 247 && value <= 250) {\n return (value - 247) * 256 + dict[pos++] + 108;\n } else if (value >= 251 && value <= 254) {\n return -((value - 251) * 256) - dict[pos++] - 108;\n }\n\n (0, _util.warn)('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n return NaN;\n }\n\n function parseFloatOperand() {\n var str = \"\";\n var eof = 15;\n const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n var length = dict.length;\n\n while (pos < length) {\n var b = dict[pos++];\n var b1 = b >> 4;\n var b2 = b & 15;\n\n if (b1 === eof) {\n break;\n }\n\n str += lookup[b1];\n\n if (b2 === eof) {\n break;\n }\n\n str += lookup[b2];\n }\n\n return parseFloat(str);\n }\n\n var operands = [];\n var entries = [];\n pos = 0;\n var end = dict.length;\n\n while (pos < end) {\n var b = dict[pos];\n\n if (b <= 21) {\n if (b === 12) {\n b = b << 8 | dict[++pos];\n }\n\n entries.push([b, operands]);\n operands = [];\n ++pos;\n } else {\n operands.push(parseOperand());\n }\n }\n\n return entries;\n }\n\n parseIndex(pos) {\n var cffIndex = new CFFIndex();\n var bytes = this.bytes;\n var count = bytes[pos++] << 8 | bytes[pos++];\n var offsets = [];\n var end = pos;\n var i, ii;\n\n if (count !== 0) {\n var offsetSize = bytes[pos++];\n var startPos = pos + (count + 1) * offsetSize - 1;\n\n for (i = 0, ii = count + 1; i < ii; ++i) {\n var offset = 0;\n\n for (var j = 0; j < offsetSize; ++j) {\n offset <<= 8;\n offset += bytes[pos++];\n }\n\n offsets.push(startPos + offset);\n }\n\n end = offsets[count];\n }\n\n for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n var offsetStart = offsets[i];\n var offsetEnd = offsets[i + 1];\n cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n }\n\n return {\n obj: cffIndex,\n endPos: end\n };\n }\n\n parseNameIndex(index) {\n var names = [];\n\n for (var i = 0, ii = index.count; i < ii; ++i) {\n var name = index.get(i);\n names.push((0, _util.bytesToString)(name));\n }\n\n return names;\n }\n\n parseStringIndex(index) {\n var strings = new CFFStrings();\n\n for (var i = 0, ii = index.count; i < ii; ++i) {\n var data = index.get(i);\n strings.add((0, _util.bytesToString)(data));\n }\n\n return strings;\n }\n\n createDict(Type, dict, strings) {\n var cffDict = new Type(strings);\n\n for (var i = 0, ii = dict.length; i < ii; ++i) {\n var pair = dict[i];\n var key = pair[0];\n var value = pair[1];\n cffDict.setByKey(key, value);\n }\n\n return cffDict;\n }\n\n parseCharString(state, data, localSubrIndex, globalSubrIndex) {\n if (!data || state.callDepth > MAX_SUBR_NESTING) {\n return false;\n }\n\n var stackSize = state.stackSize;\n var stack = state.stack;\n var length = data.length;\n\n for (var j = 0; j < length;) {\n var value = data[j++];\n var validationCommand = null;\n\n if (value === 12) {\n var q = data[j++];\n\n if (q === 0) {\n data[j - 2] = 139;\n data[j - 1] = 22;\n stackSize = 0;\n } else {\n validationCommand = CharstringValidationData12[q];\n }\n } else if (value === 28) {\n stack[stackSize] = (data[j] << 24 | data[j + 1] << 16) >> 16;\n j += 2;\n stackSize++;\n } else if (value === 14) {\n if (stackSize >= 4) {\n stackSize -= 4;\n\n if (this.seacAnalysisEnabled) {\n state.seac = stack.slice(stackSize, stackSize + 4);\n return false;\n }\n }\n\n validationCommand = CharstringValidationData[value];\n } else if (value >= 32 && value <= 246) {\n stack[stackSize] = value - 139;\n stackSize++;\n } else if (value >= 247 && value <= 254) {\n stack[stackSize] = value < 251 ? (value - 247 << 8) + data[j] + 108 : -(value - 251 << 8) - data[j] - 108;\n j++;\n stackSize++;\n } else if (value === 255) {\n stack[stackSize] = (data[j] << 24 | data[j + 1] << 16 | data[j + 2] << 8 | data[j + 3]) / 65536;\n j += 4;\n stackSize++;\n } else if (value === 19 || value === 20) {\n state.hints += stackSize >> 1;\n j += state.hints + 7 >> 3;\n stackSize %= 2;\n validationCommand = CharstringValidationData[value];\n } else if (value === 10 || value === 29) {\n var subrsIndex;\n\n if (value === 10) {\n subrsIndex = localSubrIndex;\n } else {\n subrsIndex = globalSubrIndex;\n }\n\n if (!subrsIndex) {\n validationCommand = CharstringValidationData[value];\n (0, _util.warn)(\"Missing subrsIndex for \" + validationCommand.id);\n return false;\n }\n\n var bias = 32768;\n\n if (subrsIndex.count < 1240) {\n bias = 107;\n } else if (subrsIndex.count < 33900) {\n bias = 1131;\n }\n\n var subrNumber = stack[--stackSize] + bias;\n\n if (subrNumber < 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) {\n validationCommand = CharstringValidationData[value];\n (0, _util.warn)(\"Out of bounds subrIndex for \" + validationCommand.id);\n return false;\n }\n\n state.stackSize = stackSize;\n state.callDepth++;\n var valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, globalSubrIndex);\n\n if (!valid) {\n return false;\n }\n\n state.callDepth--;\n stackSize = state.stackSize;\n continue;\n } else if (value === 11) {\n state.stackSize = stackSize;\n return true;\n } else {\n validationCommand = CharstringValidationData[value];\n }\n\n if (validationCommand) {\n if (validationCommand.stem) {\n state.hints += stackSize >> 1;\n\n if (value === 3 || value === 23) {\n state.hasVStems = true;\n } else if (state.hasVStems && (value === 1 || value === 18)) {\n (0, _util.warn)(\"CFF stem hints are in wrong order\");\n data[j - 1] = value === 1 ? 3 : 23;\n }\n }\n\n if (\"min\" in validationCommand) {\n if (!state.undefStack && stackSize < validationCommand.min) {\n (0, _util.warn)(\"Not enough parameters for \" + validationCommand.id + \"; actual: \" + stackSize + \", expected: \" + validationCommand.min);\n return false;\n }\n }\n\n if (state.firstStackClearing && validationCommand.stackClearing) {\n state.firstStackClearing = false;\n stackSize -= validationCommand.min;\n\n if (stackSize >= 2 && validationCommand.stem) {\n stackSize %= 2;\n } else if (stackSize > 1) {\n (0, _util.warn)(\"Found too many parameters for stack-clearing command\");\n }\n\n if (stackSize > 0 && stack[stackSize - 1] >= 0) {\n state.width = stack[stackSize - 1];\n }\n }\n\n if (\"stackDelta\" in validationCommand) {\n if (\"stackFn\" in validationCommand) {\n validationCommand.stackFn(stack, stackSize);\n }\n\n stackSize += validationCommand.stackDelta;\n } else if (validationCommand.stackClearing) {\n stackSize = 0;\n } else if (validationCommand.resetStack) {\n stackSize = 0;\n state.undefStack = false;\n } else if (validationCommand.undefStack) {\n stackSize = 0;\n state.undefStack = true;\n state.firstStackClearing = false;\n }\n }\n }\n\n state.stackSize = stackSize;\n return true;\n }\n\n parseCharStrings({\n charStrings,\n localSubrIndex,\n globalSubrIndex,\n fdSelect,\n fdArray,\n privateDict\n }) {\n var seacs = [];\n var widths = [];\n var count = charStrings.count;\n\n for (var i = 0; i < count; i++) {\n var charstring = charStrings.get(i);\n var state = {\n callDepth: 0,\n stackSize: 0,\n stack: [],\n undefStack: true,\n hints: 0,\n firstStackClearing: true,\n seac: null,\n width: null,\n hasVStems: false\n };\n var valid = true;\n var localSubrToUse = null;\n var privateDictToUse = privateDict;\n\n if (fdSelect && fdArray.length) {\n var fdIndex = fdSelect.getFDIndex(i);\n\n if (fdIndex === -1) {\n (0, _util.warn)(\"Glyph index is not in fd select.\");\n valid = false;\n }\n\n if (fdIndex >= fdArray.length) {\n (0, _util.warn)(\"Invalid fd index for glyph index.\");\n valid = false;\n }\n\n if (valid) {\n privateDictToUse = fdArray[fdIndex].privateDict;\n localSubrToUse = privateDictToUse.subrsIndex;\n }\n } else if (localSubrIndex) {\n localSubrToUse = localSubrIndex;\n }\n\n if (valid) {\n valid = this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex);\n }\n\n if (state.width !== null) {\n const nominalWidth = privateDictToUse.getByName(\"nominalWidthX\");\n widths[i] = nominalWidth + state.width;\n } else {\n const defaultWidth = privateDictToUse.getByName(\"defaultWidthX\");\n widths[i] = defaultWidth;\n }\n\n if (state.seac !== null) {\n seacs[i] = state.seac;\n }\n\n if (!valid) {\n charStrings.set(i, new Uint8Array([14]));\n }\n }\n\n return {\n charStrings,\n seacs,\n widths\n };\n }\n\n emptyPrivateDictionary(parentDict) {\n var privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);\n parentDict.setByKey(18, [0, 0]);\n parentDict.privateDict = privateDict;\n }\n\n parsePrivateDict(parentDict) {\n if (!parentDict.hasName(\"Private\")) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n\n var privateOffset = parentDict.getByName(\"Private\");\n\n if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n parentDict.removeByName(\"Private\");\n return;\n }\n\n var size = privateOffset[0];\n var offset = privateOffset[1];\n\n if (size === 0 || offset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n\n var privateDictEnd = offset + size;\n var dictData = this.bytes.subarray(offset, privateDictEnd);\n var dict = this.parseDict(dictData);\n var privateDict = this.createDict(CFFPrivateDict, dict, parentDict.strings);\n parentDict.privateDict = privateDict;\n\n if (!privateDict.getByName(\"Subrs\")) {\n return;\n }\n\n var subrsOffset = privateDict.getByName(\"Subrs\");\n var relativeOffset = offset + subrsOffset;\n\n if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n\n var subrsIndex = this.parseIndex(relativeOffset);\n privateDict.subrsIndex = subrsIndex.obj;\n }\n\n parseCharsets(pos, length, strings, cid) {\n if (pos === 0) {\n return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, _charsets.ISOAdobeCharset);\n } else if (pos === 1) {\n return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, _charsets.ExpertCharset);\n } else if (pos === 2) {\n return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, _charsets.ExpertSubsetCharset);\n }\n\n var bytes = this.bytes;\n var start = pos;\n var format = bytes[pos++];\n const charset = [cid ? 0 : \".notdef\"];\n var id, count, i;\n length -= 1;\n\n switch (format) {\n case 0:\n for (i = 0; i < length; i++) {\n id = bytes[pos++] << 8 | bytes[pos++];\n charset.push(cid ? id : strings.get(id));\n }\n\n break;\n\n case 1:\n while (charset.length <= length) {\n id = bytes[pos++] << 8 | bytes[pos++];\n count = bytes[pos++];\n\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n\n break;\n\n case 2:\n while (charset.length <= length) {\n id = bytes[pos++] << 8 | bytes[pos++];\n count = bytes[pos++] << 8 | bytes[pos++];\n\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n\n break;\n\n default:\n throw new _util.FormatError(\"Unknown charset format\");\n }\n\n var end = pos;\n var raw = bytes.subarray(start, end);\n return new CFFCharset(false, format, charset, raw);\n }\n\n parseEncoding(pos, properties, strings, charset) {\n var encoding = Object.create(null);\n var bytes = this.bytes;\n var predefined = false;\n var format, i, ii;\n var raw = null;\n\n function readSupplement() {\n var supplementsCount = bytes[pos++];\n\n for (i = 0; i < supplementsCount; i++) {\n var code = bytes[pos++];\n var sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n encoding[code] = charset.indexOf(strings.get(sid));\n }\n }\n\n if (pos === 0 || pos === 1) {\n predefined = true;\n format = pos;\n var baseEncoding = pos ? _encodings.ExpertEncoding : _encodings.StandardEncoding;\n\n for (i = 0, ii = charset.length; i < ii; i++) {\n var index = baseEncoding.indexOf(charset[i]);\n\n if (index !== -1) {\n encoding[index] = i;\n }\n }\n } else {\n var dataStart = pos;\n format = bytes[pos++];\n\n switch (format & 0x7f) {\n case 0:\n var glyphsCount = bytes[pos++];\n\n for (i = 1; i <= glyphsCount; i++) {\n encoding[bytes[pos++]] = i;\n }\n\n break;\n\n case 1:\n var rangesCount = bytes[pos++];\n var gid = 1;\n\n for (i = 0; i < rangesCount; i++) {\n var start = bytes[pos++];\n var left = bytes[pos++];\n\n for (var j = start; j <= start + left; j++) {\n encoding[j] = gid++;\n }\n }\n\n break;\n\n default:\n throw new _util.FormatError(`Unknown encoding format: ${format} in CFF`);\n }\n\n var dataEnd = pos;\n\n if (format & 0x80) {\n bytes[dataStart] &= 0x7f;\n readSupplement();\n }\n\n raw = bytes.subarray(dataStart, dataEnd);\n }\n\n format = format & 0x7f;\n return new CFFEncoding(predefined, format, encoding, raw);\n }\n\n parseFDSelect(pos, length) {\n var bytes = this.bytes;\n var format = bytes[pos++];\n var fdSelect = [];\n var i;\n\n switch (format) {\n case 0:\n for (i = 0; i < length; ++i) {\n var id = bytes[pos++];\n fdSelect.push(id);\n }\n\n break;\n\n case 3:\n var rangesCount = bytes[pos++] << 8 | bytes[pos++];\n\n for (i = 0; i < rangesCount; ++i) {\n var first = bytes[pos++] << 8 | bytes[pos++];\n\n if (i === 0 && first !== 0) {\n (0, _util.warn)(\"parseFDSelect: The first range must have a first GID of 0\" + \" -- trying to recover.\");\n first = 0;\n }\n\n var fdIndex = bytes[pos++];\n var next = bytes[pos] << 8 | bytes[pos + 1];\n\n for (var j = first; j < next; ++j) {\n fdSelect.push(fdIndex);\n }\n }\n\n pos += 2;\n break;\n\n default:\n throw new _util.FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n }\n\n if (fdSelect.length !== length) {\n throw new _util.FormatError(\"parseFDSelect: Invalid font data.\");\n }\n\n return new CFFFDSelect(format, fdSelect);\n }\n\n }\n\n return CFFParser;\n}();\n\nexports.CFFParser = CFFParser;\n\nclass CFF {\n constructor() {\n this.header = null;\n this.names = [];\n this.topDict = null;\n this.strings = new CFFStrings();\n this.globalSubrIndex = null;\n this.encoding = null;\n this.charset = null;\n this.charStrings = null;\n this.fdArray = [];\n this.fdSelect = null;\n this.isCIDFont = false;\n }\n\n duplicateFirstGlyph() {\n if (this.charStrings.count >= 65535) {\n (0, _util.warn)(\"Not enough space in charstrings to duplicate first glyph.\");\n return;\n }\n\n var glyphZero = this.charStrings.get(0);\n this.charStrings.add(glyphZero);\n\n if (this.isCIDFont) {\n this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n }\n }\n\n hasGlyphId(id) {\n if (id < 0 || id >= this.charStrings.count) {\n return false;\n }\n\n var glyph = this.charStrings.get(id);\n return glyph.length > 0;\n }\n\n}\n\nexports.CFF = CFF;\n\nclass CFFHeader {\n constructor(major, minor, hdrSize, offSize) {\n this.major = major;\n this.minor = minor;\n this.hdrSize = hdrSize;\n this.offSize = offSize;\n }\n\n}\n\nexports.CFFHeader = CFFHeader;\n\nclass CFFStrings {\n constructor() {\n this.strings = [];\n }\n\n get(index) {\n if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {\n return CFFStandardStrings[index];\n }\n\n if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {\n return this.strings[index - NUM_STANDARD_CFF_STRINGS];\n }\n\n return CFFStandardStrings[0];\n }\n\n getSID(str) {\n let index = CFFStandardStrings.indexOf(str);\n\n if (index !== -1) {\n return index;\n }\n\n index = this.strings.indexOf(str);\n\n if (index !== -1) {\n return index + NUM_STANDARD_CFF_STRINGS;\n }\n\n return -1;\n }\n\n add(value) {\n this.strings.push(value);\n }\n\n get count() {\n return this.strings.length;\n }\n\n}\n\nexports.CFFStrings = CFFStrings;\n\nclass CFFIndex {\n constructor() {\n this.objects = [];\n this.length = 0;\n }\n\n add(data) {\n this.length += data.length;\n this.objects.push(data);\n }\n\n set(index, data) {\n this.length += data.length - this.objects[index].length;\n this.objects[index] = data;\n }\n\n get(index) {\n return this.objects[index];\n }\n\n get count() {\n return this.objects.length;\n }\n\n}\n\nexports.CFFIndex = CFFIndex;\n\nclass CFFDict {\n constructor(tables, strings) {\n this.keyToNameMap = tables.keyToNameMap;\n this.nameToKeyMap = tables.nameToKeyMap;\n this.defaults = tables.defaults;\n this.types = tables.types;\n this.opcodes = tables.opcodes;\n this.order = tables.order;\n this.strings = strings;\n this.values = Object.create(null);\n }\n\n setByKey(key, value) {\n if (!(key in this.keyToNameMap)) {\n return false;\n }\n\n var valueLength = value.length;\n\n if (valueLength === 0) {\n return true;\n }\n\n for (var i = 0; i < valueLength; i++) {\n if (isNaN(value[i])) {\n (0, _util.warn)('Invalid CFFDict value: \"' + value + '\" for key \"' + key + '\".');\n return true;\n }\n }\n\n var type = this.types[key];\n\n if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n value = value[0];\n }\n\n this.values[key] = value;\n return true;\n }\n\n setByName(name, value) {\n if (!(name in this.nameToKeyMap)) {\n throw new _util.FormatError(`Invalid dictionary name \"${name}\"`);\n }\n\n this.values[this.nameToKeyMap[name]] = value;\n }\n\n hasName(name) {\n return this.nameToKeyMap[name] in this.values;\n }\n\n getByName(name) {\n if (!(name in this.nameToKeyMap)) {\n throw new _util.FormatError(`Invalid dictionary name ${name}\"`);\n }\n\n var key = this.nameToKeyMap[name];\n\n if (!(key in this.values)) {\n return this.defaults[key];\n }\n\n return this.values[key];\n }\n\n removeByName(name) {\n delete this.values[this.nameToKeyMap[name]];\n }\n\n static createTables(layout) {\n var tables = {\n keyToNameMap: {},\n nameToKeyMap: {},\n defaults: {},\n types: {},\n opcodes: {},\n order: []\n };\n\n for (var i = 0, ii = layout.length; i < ii; ++i) {\n var entry = layout[i];\n var key = Array.isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0];\n tables.keyToNameMap[key] = entry[1];\n tables.nameToKeyMap[entry[1]] = key;\n tables.types[key] = entry[2];\n tables.defaults[key] = entry[3];\n tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n tables.order.push(key);\n }\n\n return tables;\n }\n\n}\n\nvar CFFTopDict = function CFFTopDictClosure() {\n var layout = [[[12, 30], \"ROS\", [\"sid\", \"sid\", \"num\"], null], [[12, 20], \"SyntheticBase\", \"num\", null], [0, \"version\", \"sid\", null], [1, \"Notice\", \"sid\", null], [[12, 0], \"Copyright\", \"sid\", null], [2, \"FullName\", \"sid\", null], [3, \"FamilyName\", \"sid\", null], [4, \"Weight\", \"sid\", null], [[12, 1], \"isFixedPitch\", \"num\", 0], [[12, 2], \"ItalicAngle\", \"num\", 0], [[12, 3], \"UnderlinePosition\", \"num\", -100], [[12, 4], \"UnderlineThickness\", \"num\", 50], [[12, 5], \"PaintType\", \"num\", 0], [[12, 6], \"CharstringType\", \"num\", 2], [[12, 7], \"FontMatrix\", [\"num\", \"num\", \"num\", \"num\", \"num\", \"num\"], [0.001, 0, 0, 0.001, 0, 0]], [13, \"UniqueID\", \"num\", null], [5, \"FontBBox\", [\"num\", \"num\", \"num\", \"num\"], [0, 0, 0, 0]], [[12, 8], \"StrokeWidth\", \"num\", 0], [14, \"XUID\", \"array\", null], [15, \"charset\", \"offset\", 0], [16, \"Encoding\", \"offset\", 0], [17, \"CharStrings\", \"offset\", 0], [18, \"Private\", [\"offset\", \"offset\"], null], [[12, 21], \"PostScript\", \"sid\", null], [[12, 22], \"BaseFontName\", \"sid\", null], [[12, 23], \"BaseFontBlend\", \"delta\", null], [[12, 31], \"CIDFontVersion\", \"num\", 0], [[12, 32], \"CIDFontRevision\", \"num\", 0], [[12, 33], \"CIDFontType\", \"num\", 0], [[12, 34], \"CIDCount\", \"num\", 8720], [[12, 35], \"UIDBase\", \"num\", null], [[12, 37], \"FDSelect\", \"offset\", null], [[12, 36], \"FDArray\", \"offset\", null], [[12, 38], \"FontName\", \"sid\", null]];\n var tables = null;\n\n class CFFTopDict extends CFFDict {\n constructor(strings) {\n if (tables === null) {\n tables = CFFDict.createTables(layout);\n }\n\n super(tables, strings);\n this.privateDict = null;\n }\n\n }\n\n return CFFTopDict;\n}();\n\nexports.CFFTopDict = CFFTopDict;\n\nvar CFFPrivateDict = function CFFPrivateDictClosure() {\n var layout = [[6, \"BlueValues\", \"delta\", null], [7, \"OtherBlues\", \"delta\", null], [8, \"FamilyBlues\", \"delta\", null], [9, \"FamilyOtherBlues\", \"delta\", null], [[12, 9], \"BlueScale\", \"num\", 0.039625], [[12, 10], \"BlueShift\", \"num\", 7], [[12, 11], \"BlueFuzz\", \"num\", 1], [10, \"StdHW\", \"num\", null], [11, \"StdVW\", \"num\", null], [[12, 12], \"StemSnapH\", \"delta\", null], [[12, 13], \"StemSnapV\", \"delta\", null], [[12, 14], \"ForceBold\", \"num\", 0], [[12, 17], \"LanguageGroup\", \"num\", 0], [[12, 18], \"ExpansionFactor\", \"num\", 0.06], [[12, 19], \"initialRandomSeed\", \"num\", 0], [20, \"defaultWidthX\", \"num\", 0], [21, \"nominalWidthX\", \"num\", 0], [19, \"Subrs\", \"offset\", null]];\n var tables = null;\n\n class CFFPrivateDict extends CFFDict {\n constructor(strings) {\n if (tables === null) {\n tables = CFFDict.createTables(layout);\n }\n\n super(tables, strings);\n this.subrsIndex = null;\n }\n\n }\n\n return CFFPrivateDict;\n}();\n\nexports.CFFPrivateDict = CFFPrivateDict;\nvar CFFCharsetPredefinedTypes = {\n ISO_ADOBE: 0,\n EXPERT: 1,\n EXPERT_SUBSET: 2\n};\n\nclass CFFCharset {\n constructor(predefined, format, charset, raw) {\n this.predefined = predefined;\n this.format = format;\n this.charset = charset;\n this.raw = raw;\n }\n\n}\n\nexports.CFFCharset = CFFCharset;\n\nclass CFFEncoding {\n constructor(predefined, format, encoding, raw) {\n this.predefined = predefined;\n this.format = format;\n this.encoding = encoding;\n this.raw = raw;\n }\n\n}\n\nclass CFFFDSelect {\n constructor(format, fdSelect) {\n this.format = format;\n this.fdSelect = fdSelect;\n }\n\n getFDIndex(glyphIndex) {\n if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {\n return -1;\n }\n\n return this.fdSelect[glyphIndex];\n }\n\n}\n\nexports.CFFFDSelect = CFFFDSelect;\n\nclass CFFOffsetTracker {\n constructor() {\n this.offsets = Object.create(null);\n }\n\n isTracking(key) {\n return key in this.offsets;\n }\n\n track(key, location) {\n if (key in this.offsets) {\n throw new _util.FormatError(`Already tracking location of ${key}`);\n }\n\n this.offsets[key] = location;\n }\n\n offset(value) {\n for (var key in this.offsets) {\n this.offsets[key] += value;\n }\n }\n\n setEntryLocation(key, values, output) {\n if (!(key in this.offsets)) {\n throw new _util.FormatError(`Not tracking location of ${key}`);\n }\n\n var data = output.data;\n var dataOffset = this.offsets[key];\n var size = 5;\n\n for (var i = 0, ii = values.length; i < ii; ++i) {\n var offset0 = i * size + dataOffset;\n var offset1 = offset0 + 1;\n var offset2 = offset0 + 2;\n var offset3 = offset0 + 3;\n var offset4 = offset0 + 4;\n\n if (data[offset0] !== 0x1d || data[offset1] !== 0 || data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) {\n throw new _util.FormatError(\"writing to an offset that is not empty\");\n }\n\n var value = values[i];\n data[offset0] = 0x1d;\n data[offset1] = value >> 24 & 0xff;\n data[offset2] = value >> 16 & 0xff;\n data[offset3] = value >> 8 & 0xff;\n data[offset4] = value & 0xff;\n }\n }\n\n}\n\nclass CFFCompiler {\n constructor(cff) {\n this.cff = cff;\n }\n\n compile() {\n var cff = this.cff;\n var output = {\n data: [],\n length: 0,\n add: function CFFCompiler_add(data) {\n this.data = this.data.concat(data);\n this.length = this.data.length;\n }\n };\n var header = this.compileHeader(cff.header);\n output.add(header);\n var nameIndex = this.compileNameIndex(cff.names);\n output.add(nameIndex);\n\n if (cff.isCIDFont) {\n if (cff.topDict.hasName(\"FontMatrix\")) {\n var base = cff.topDict.getByName(\"FontMatrix\");\n cff.topDict.removeByName(\"FontMatrix\");\n\n for (var i = 0, ii = cff.fdArray.length; i < ii; i++) {\n var subDict = cff.fdArray[i];\n var matrix = base.slice(0);\n\n if (subDict.hasName(\"FontMatrix\")) {\n matrix = _util.Util.transform(matrix, subDict.getByName(\"FontMatrix\"));\n }\n\n subDict.setByName(\"FontMatrix\", matrix);\n }\n }\n }\n\n cff.topDict.setByName(\"charset\", 0);\n var compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont);\n output.add(compiled.output);\n var topDictTracker = compiled.trackers[0];\n var stringIndex = this.compileStringIndex(cff.strings.strings);\n output.add(stringIndex);\n var globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n output.add(globalSubrIndex);\n\n if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n if (cff.encoding.predefined) {\n topDictTracker.setEntryLocation(\"Encoding\", [cff.encoding.format], output);\n } else {\n var encoding = this.compileEncoding(cff.encoding);\n topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n output.add(encoding);\n }\n }\n\n var charset = this.compileCharset(cff.charset, cff.charStrings.count, cff.strings, cff.isCIDFont);\n topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n output.add(charset);\n var charStrings = this.compileCharStrings(cff.charStrings);\n topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n output.add(charStrings);\n\n if (cff.isCIDFont) {\n topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n var fdSelect = this.compileFDSelect(cff.fdSelect);\n output.add(fdSelect);\n compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n topDictTracker.setEntryLocation(\"FDArray\", [output.length], output);\n output.add(compiled.output);\n var fontDictTrackers = compiled.trackers;\n this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n }\n\n this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n output.add([0]);\n return output.data;\n }\n\n encodeNumber(value) {\n if (Number.isInteger(value)) {\n return this.encodeInteger(value);\n }\n\n return this.encodeFloat(value);\n }\n\n static get EncodeFloatRegExp() {\n return (0, _util.shadow)(this, \"EncodeFloatRegExp\", /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/);\n }\n\n encodeFloat(num) {\n var value = num.toString();\n var m = CFFCompiler.EncodeFloatRegExp.exec(value);\n\n if (m) {\n var epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n value = (Math.round(num * epsilon) / epsilon).toString();\n }\n\n var nibbles = \"\";\n var i, ii;\n\n for (i = 0, ii = value.length; i < ii; ++i) {\n var a = value[i];\n\n if (a === \"e\") {\n nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n } else if (a === \".\") {\n nibbles += \"a\";\n } else if (a === \"-\") {\n nibbles += \"e\";\n } else {\n nibbles += a;\n }\n }\n\n nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n var out = [30];\n\n for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n out.push(parseInt(nibbles.substring(i, i + 2), 16));\n }\n\n return out;\n }\n\n encodeInteger(value) {\n var code;\n\n if (value >= -107 && value <= 107) {\n code = [value + 139];\n } else if (value >= 108 && value <= 1131) {\n value = value - 108;\n code = [(value >> 8) + 247, value & 0xff];\n } else if (value >= -1131 && value <= -108) {\n value = -value - 108;\n code = [(value >> 8) + 251, value & 0xff];\n } else if (value >= -32768 && value <= 32767) {\n code = [0x1c, value >> 8 & 0xff, value & 0xff];\n } else {\n code = [0x1d, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff];\n }\n\n return code;\n }\n\n compileHeader(header) {\n return [header.major, header.minor, header.hdrSize, header.offSize];\n }\n\n compileNameIndex(names) {\n var nameIndex = new CFFIndex();\n\n for (var i = 0, ii = names.length; i < ii; ++i) {\n var name = names[i];\n var length = Math.min(name.length, 127);\n var sanitizedName = new Array(length);\n\n for (var j = 0; j < length; j++) {\n var char = name[j];\n\n if (char < \"!\" || char > \"~\" || char === \"[\" || char === \"]\" || char === \"(\" || char === \")\" || char === \"{\" || char === \"}\" || char === \"<\" || char === \">\" || char === \"/\" || char === \"%\") {\n char = \"_\";\n }\n\n sanitizedName[j] = char;\n }\n\n sanitizedName = sanitizedName.join(\"\");\n\n if (sanitizedName === \"\") {\n sanitizedName = \"Bad_Font_Name\";\n }\n\n nameIndex.add((0, _util.stringToBytes)(sanitizedName));\n }\n\n return this.compileIndex(nameIndex);\n }\n\n compileTopDicts(dicts, length, removeCidKeys) {\n var fontDictTrackers = [];\n var fdArrayIndex = new CFFIndex();\n\n for (var i = 0, ii = dicts.length; i < ii; ++i) {\n var fontDict = dicts[i];\n\n if (removeCidKeys) {\n fontDict.removeByName(\"CIDFontVersion\");\n fontDict.removeByName(\"CIDFontRevision\");\n fontDict.removeByName(\"CIDFontType\");\n fontDict.removeByName(\"CIDCount\");\n fontDict.removeByName(\"UIDBase\");\n }\n\n var fontDictTracker = new CFFOffsetTracker();\n var fontDictData = this.compileDict(fontDict, fontDictTracker);\n fontDictTrackers.push(fontDictTracker);\n fdArrayIndex.add(fontDictData);\n fontDictTracker.offset(length);\n }\n\n fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n return {\n trackers: fontDictTrackers,\n output: fdArrayIndex\n };\n }\n\n compilePrivateDicts(dicts, trackers, output) {\n for (var i = 0, ii = dicts.length; i < ii; ++i) {\n var fontDict = dicts[i];\n var privateDict = fontDict.privateDict;\n\n if (!privateDict || !fontDict.hasName(\"Private\")) {\n throw new _util.FormatError(\"There must be a private dictionary.\");\n }\n\n var privateDictTracker = new CFFOffsetTracker();\n var privateDictData = this.compileDict(privateDict, privateDictTracker);\n var outputLength = output.length;\n privateDictTracker.offset(outputLength);\n\n if (!privateDictData.length) {\n outputLength = 0;\n }\n\n trackers[i].setEntryLocation(\"Private\", [privateDictData.length, outputLength], output);\n output.add(privateDictData);\n\n if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n var subrs = this.compileIndex(privateDict.subrsIndex);\n privateDictTracker.setEntryLocation(\"Subrs\", [privateDictData.length], output);\n output.add(subrs);\n }\n }\n }\n\n compileDict(dict, offsetTracker) {\n var out = [];\n var order = dict.order;\n\n for (var i = 0; i < order.length; ++i) {\n var key = order[i];\n\n if (!(key in dict.values)) {\n continue;\n }\n\n var values = dict.values[key];\n var types = dict.types[key];\n\n if (!Array.isArray(types)) {\n types = [types];\n }\n\n if (!Array.isArray(values)) {\n values = [values];\n }\n\n if (values.length === 0) {\n continue;\n }\n\n for (var j = 0, jj = types.length; j < jj; ++j) {\n var type = types[j];\n var value = values[j];\n\n switch (type) {\n case \"num\":\n case \"sid\":\n out = out.concat(this.encodeNumber(value));\n break;\n\n case \"offset\":\n var name = dict.keyToNameMap[key];\n\n if (!offsetTracker.isTracking(name)) {\n offsetTracker.track(name, out.length);\n }\n\n out = out.concat([0x1d, 0, 0, 0, 0]);\n break;\n\n case \"array\":\n case \"delta\":\n out = out.concat(this.encodeNumber(value));\n\n for (var k = 1, kk = values.length; k < kk; ++k) {\n out = out.concat(this.encodeNumber(values[k]));\n }\n\n break;\n\n default:\n throw new _util.FormatError(`Unknown data type of ${type}`);\n }\n }\n\n out = out.concat(dict.opcodes[key]);\n }\n\n return out;\n }\n\n compileStringIndex(strings) {\n var stringIndex = new CFFIndex();\n\n for (var i = 0, ii = strings.length; i < ii; ++i) {\n stringIndex.add((0, _util.stringToBytes)(strings[i]));\n }\n\n return this.compileIndex(stringIndex);\n }\n\n compileGlobalSubrIndex() {\n var globalSubrIndex = this.cff.globalSubrIndex;\n this.out.writeByteArray(this.compileIndex(globalSubrIndex));\n }\n\n compileCharStrings(charStrings) {\n var charStringsIndex = new CFFIndex();\n\n for (var i = 0; i < charStrings.count; i++) {\n var glyph = charStrings.get(i);\n\n if (glyph.length === 0) {\n charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\n continue;\n }\n\n charStringsIndex.add(glyph);\n }\n\n return this.compileIndex(charStringsIndex);\n }\n\n compileCharset(charset, numGlyphs, strings, isCIDFont) {\n let out;\n const numGlyphsLessNotDef = numGlyphs - 1;\n\n if (isCIDFont) {\n out = new Uint8Array([2, 0, 0, numGlyphsLessNotDef >> 8 & 0xff, numGlyphsLessNotDef & 0xff]);\n } else {\n const length = 1 + numGlyphsLessNotDef * 2;\n out = new Uint8Array(length);\n out[0] = 0;\n let charsetIndex = 0;\n const numCharsets = charset.charset.length;\n let warned = false;\n\n for (let i = 1; i < out.length; i += 2) {\n let sid = 0;\n\n if (charsetIndex < numCharsets) {\n const name = charset.charset[charsetIndex++];\n sid = strings.getSID(name);\n\n if (sid === -1) {\n sid = 0;\n\n if (!warned) {\n warned = true;\n (0, _util.warn)(`Couldn't find ${name} in CFF strings`);\n }\n }\n }\n\n out[i] = sid >> 8 & 0xff;\n out[i + 1] = sid & 0xff;\n }\n }\n\n return this.compileTypedArray(out);\n }\n\n compileEncoding(encoding) {\n return this.compileTypedArray(encoding.raw);\n }\n\n compileFDSelect(fdSelect) {\n const format = fdSelect.format;\n let out, i;\n\n switch (format) {\n case 0:\n out = new Uint8Array(1 + fdSelect.fdSelect.length);\n out[0] = format;\n\n for (i = 0; i < fdSelect.fdSelect.length; i++) {\n out[i + 1] = fdSelect.fdSelect[i];\n }\n\n break;\n\n case 3:\n const start = 0;\n let lastFD = fdSelect.fdSelect[0];\n const ranges = [format, 0, 0, start >> 8 & 0xff, start & 0xff, lastFD];\n\n for (i = 1; i < fdSelect.fdSelect.length; i++) {\n const currentFD = fdSelect.fdSelect[i];\n\n if (currentFD !== lastFD) {\n ranges.push(i >> 8 & 0xff, i & 0xff, currentFD);\n lastFD = currentFD;\n }\n }\n\n const numRanges = (ranges.length - 3) / 3;\n ranges[1] = numRanges >> 8 & 0xff;\n ranges[2] = numRanges & 0xff;\n ranges.push(i >> 8 & 0xff, i & 0xff);\n out = new Uint8Array(ranges);\n break;\n }\n\n return this.compileTypedArray(out);\n }\n\n compileTypedArray(data) {\n var out = [];\n\n for (var i = 0, ii = data.length; i < ii; ++i) {\n out[i] = data[i];\n }\n\n return out;\n }\n\n compileIndex(index, trackers = []) {\n var objects = index.objects;\n var count = objects.length;\n\n if (count === 0) {\n return [0, 0, 0];\n }\n\n var data = [count >> 8 & 0xff, count & 0xff];\n var lastOffset = 1,\n i;\n\n for (i = 0; i < count; ++i) {\n lastOffset += objects[i].length;\n }\n\n var offsetSize;\n\n if (lastOffset < 0x100) {\n offsetSize = 1;\n } else if (lastOffset < 0x10000) {\n offsetSize = 2;\n } else if (lastOffset < 0x1000000) {\n offsetSize = 3;\n } else {\n offsetSize = 4;\n }\n\n data.push(offsetSize);\n var relativeOffset = 1;\n\n for (i = 0; i < count + 1; i++) {\n if (offsetSize === 1) {\n data.push(relativeOffset & 0xff);\n } else if (offsetSize === 2) {\n data.push(relativeOffset >> 8 & 0xff, relativeOffset & 0xff);\n } else if (offsetSize === 3) {\n data.push(relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff);\n } else {\n data.push(relativeOffset >>> 24 & 0xff, relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff);\n }\n\n if (objects[i]) {\n relativeOffset += objects[i].length;\n }\n }\n\n for (i = 0; i < count; i++) {\n if (trackers[i]) {\n trackers[i].offset(data.length);\n }\n\n for (var j = 0, jj = objects[i].length; j < jj; j++) {\n data.push(objects[i][j]);\n }\n }\n\n return data;\n }\n\n}\n\nexports.CFFCompiler = CFFCompiler;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ExpertSubsetCharset = exports.ExpertCharset = exports.ISOAdobeCharset = void 0;\nconst ISOAdobeCharset = [\".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\", \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\", \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\"];\nexports.ISOAdobeCharset = ISOAdobeCharset;\nconst ExpertCharset = [\".notdef\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"onequarter\", \"onehalf\", \"threequarters\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\"];\nexports.ExpertCharset = ExpertCharset;\nconst ExpertSubsetCharset = [\".notdef\", \"space\", \"dollaroldstyle\", \"dollarsuperior\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"hyphensuperior\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"centoldstyle\", \"figuredash\", \"hypheninferior\", \"onequarter\", \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\"];\nexports.ExpertSubsetCharset = ExpertSubsetCharset;\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getEncoding = getEncoding;\nexports.ExpertEncoding = exports.ZapfDingbatsEncoding = exports.SymbolSetEncoding = exports.MacRomanEncoding = exports.StandardEncoding = exports.WinAnsiEncoding = void 0;\nconst ExpertEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"\", \"\", \"\", \"isuperior\", \"\", \"\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"\", \"\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"\", \"\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"\", \"Dotaccentsmall\", \"\", \"\", \"Macronsmall\", \"\", \"\", \"figuredash\", \"hypheninferior\", \"\", \"\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"zerosuperior\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\"];\nexports.ExpertEncoding = ExpertEncoding;\nconst MacExpertEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"centoldstyle\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"\", \"threequartersemdash\", \"\", \"questionsmall\", \"\", \"\", \"\", \"\", \"Ethsmall\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"\", \"\", \"\", \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\", \"Circumflexsmall\", \"hypheninferior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"asuperior\", \"centsuperior\", \"\", \"\", \"\", \"\", \"Aacutesmall\", \"Agravesmall\", \"Acircumflexsmall\", \"Adieresissmall\", \"Atildesmall\", \"Aringsmall\", \"Ccedillasmall\", \"Eacutesmall\", \"Egravesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Iacutesmall\", \"Igravesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ntildesmall\", \"Oacutesmall\", \"Ogravesmall\", \"Ocircumflexsmall\", \"Odieresissmall\", \"Otildesmall\", \"Uacutesmall\", \"Ugravesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"\", \"eightsuperior\", \"fourinferior\", \"threeinferior\", \"sixinferior\", \"eightinferior\", \"seveninferior\", \"Scaronsmall\", \"\", \"centinferior\", \"twoinferior\", \"\", \"Dieresissmall\", \"\", \"Caronsmall\", \"osuperior\", \"fiveinferior\", \"\", \"commainferior\", \"periodinferior\", \"Yacutesmall\", \"\", \"dollarinferior\", \"\", \"\", \"Thornsmall\", \"\", \"nineinferior\", \"zeroinferior\", \"Zcaronsmall\", \"AEsmall\", \"Oslashsmall\", \"questiondownsmall\", \"oneinferior\", \"Lslashsmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"Cedillasmall\", \"\", \"\", \"\", \"\", \"\", \"OEsmall\", \"figuredash\", \"hyphensuperior\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"\", \"Ydieresissmall\", \"\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"ninesuperior\", \"zerosuperior\", \"\", \"esuperior\", \"rsuperior\", \"tsuperior\", \"\", \"\", \"isuperior\", \"ssuperior\", \"dsuperior\", \"\", \"\", \"\", \"\", \"\", \"lsuperior\", \"Ogoneksmall\", \"Brevesmall\", \"Macronsmall\", \"bsuperior\", \"nsuperior\", \"msuperior\", \"commasuperior\", \"periodsuperior\", \"Dotaccentsmall\", \"Ringsmall\", \"\", \"\", \"\", \"\"];\nconst MacRomanEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\", \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\", \"space\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\"];\nexports.MacRomanEncoding = MacRomanEncoding;\nconst StandardEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdown\", \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\", \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"\", \"endash\", \"dagger\", \"daggerdbl\", \"periodcentered\", \"\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"\", \"questiondown\", \"\", \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"\", \"ring\", \"cedilla\", \"\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"AE\", \"\", \"ordfeminine\", \"\", \"\", \"\", \"\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"\", \"\", \"\", \"\", \"\", \"ae\", \"\", \"\", \"\", \"dotlessi\", \"\", \"\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"\", \"\", \"\", \"\"];\nexports.StandardEncoding = StandardEncoding;\nconst WinAnsiEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"bullet\", \"Euro\", \"bullet\", \"quotesinglbase\", \"florin\", \"quotedblbase\", \"ellipsis\", \"dagger\", \"daggerdbl\", \"circumflex\", \"perthousand\", \"Scaron\", \"guilsinglleft\", \"OE\", \"bullet\", \"Zcaron\", \"bullet\", \"bullet\", \"quoteleft\", \"quoteright\", \"quotedblleft\", \"quotedblright\", \"bullet\", \"endash\", \"emdash\", \"tilde\", \"trademark\", \"scaron\", \"guilsinglright\", \"oe\", \"bullet\", \"zcaron\", \"Ydieresis\", \"space\", \"exclamdown\", \"cent\", \"sterling\", \"currency\", \"yen\", \"brokenbar\", \"section\", \"dieresis\", \"copyright\", \"ordfeminine\", \"guillemotleft\", \"logicalnot\", \"hyphen\", \"registered\", \"macron\", \"degree\", \"plusminus\", \"twosuperior\", \"threesuperior\", \"acute\", \"mu\", \"paragraph\", \"periodcentered\", \"cedilla\", \"onesuperior\", \"ordmasculine\", \"guillemotright\", \"onequarter\", \"onehalf\", \"threequarters\", \"questiondown\", \"Agrave\", \"Aacute\", \"Acircumflex\", \"Atilde\", \"Adieresis\", \"Aring\", \"AE\", \"Ccedilla\", \"Egrave\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Igrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Eth\", \"Ntilde\", \"Ograve\", \"Oacute\", \"Ocircumflex\", \"Otilde\", \"Odieresis\", \"multiply\", \"Oslash\", \"Ugrave\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Yacute\", \"Thorn\", \"germandbls\", \"agrave\", \"aacute\", \"acircumflex\", \"atilde\", \"adieresis\", \"aring\", \"ae\", \"ccedilla\", \"egrave\", \"eacute\", \"ecircumflex\", \"edieresis\", \"igrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"eth\", \"ntilde\", \"ograve\", \"oacute\", \"ocircumflex\", \"otilde\", \"odieresis\", \"divide\", \"oslash\", \"ugrave\", \"uacute\", \"ucircumflex\", \"udieresis\", \"yacute\", \"thorn\", \"ydieresis\"];\nexports.WinAnsiEncoding = WinAnsiEncoding;\nconst SymbolSetEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclam\", \"universal\", \"numbersign\", \"existential\", \"percent\", \"ampersand\", \"suchthat\", \"parenleft\", \"parenright\", \"asteriskmath\", \"plus\", \"comma\", \"minus\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"congruent\", \"Alpha\", \"Beta\", \"Chi\", \"Delta\", \"Epsilon\", \"Phi\", \"Gamma\", \"Eta\", \"Iota\", \"theta1\", \"Kappa\", \"Lambda\", \"Mu\", \"Nu\", \"Omicron\", \"Pi\", \"Theta\", \"Rho\", \"Sigma\", \"Tau\", \"Upsilon\", \"sigma1\", \"Omega\", \"Xi\", \"Psi\", \"Zeta\", \"bracketleft\", \"therefore\", \"bracketright\", \"perpendicular\", \"underscore\", \"radicalex\", \"alpha\", \"beta\", \"chi\", \"delta\", \"epsilon\", \"phi\", \"gamma\", \"eta\", \"iota\", \"phi1\", \"kappa\", \"lambda\", \"mu\", \"nu\", \"omicron\", \"pi\", \"theta\", \"rho\", \"sigma\", \"tau\", \"upsilon\", \"omega1\", \"omega\", \"xi\", \"psi\", \"zeta\", \"braceleft\", \"bar\", \"braceright\", \"similar\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"Euro\", \"Upsilon1\", \"minute\", \"lessequal\", \"fraction\", \"infinity\", \"florin\", \"club\", \"diamond\", \"heart\", \"spade\", \"arrowboth\", \"arrowleft\", \"arrowup\", \"arrowright\", \"arrowdown\", \"degree\", \"plusminus\", \"second\", \"greaterequal\", \"multiply\", \"proportional\", \"partialdiff\", \"bullet\", \"divide\", \"notequal\", \"equivalence\", \"approxequal\", \"ellipsis\", \"arrowvertex\", \"arrowhorizex\", \"carriagereturn\", \"aleph\", \"Ifraktur\", \"Rfraktur\", \"weierstrass\", \"circlemultiply\", \"circleplus\", \"emptyset\", \"intersection\", \"union\", \"propersuperset\", \"reflexsuperset\", \"notsubset\", \"propersubset\", \"reflexsubset\", \"element\", \"notelement\", \"angle\", \"gradient\", \"registerserif\", \"copyrightserif\", \"trademarkserif\", \"product\", \"radical\", \"dotmath\", \"logicalnot\", \"logicaland\", \"logicalor\", \"arrowdblboth\", \"arrowdblleft\", \"arrowdblup\", \"arrowdblright\", \"arrowdbldown\", \"lozenge\", \"angleleft\", \"registersans\", \"copyrightsans\", \"trademarksans\", \"summation\", \"parenlefttp\", \"parenleftex\", \"parenleftbt\", \"bracketlefttp\", \"bracketleftex\", \"bracketleftbt\", \"bracelefttp\", \"braceleftmid\", \"braceleftbt\", \"braceex\", \"\", \"angleright\", \"integral\", \"integraltp\", \"integralex\", \"integralbt\", \"parenrighttp\", \"parenrightex\", \"parenrightbt\", \"bracketrighttp\", \"bracketrightex\", \"bracketrightbt\", \"bracerighttp\", \"bracerightmid\", \"bracerightbt\", \"\"];\nexports.SymbolSetEncoding = SymbolSetEncoding;\nconst ZapfDingbatsEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"a1\", \"a2\", \"a202\", \"a3\", \"a4\", \"a5\", \"a119\", \"a118\", \"a117\", \"a11\", \"a12\", \"a13\", \"a14\", \"a15\", \"a16\", \"a105\", \"a17\", \"a18\", \"a19\", \"a20\", \"a21\", \"a22\", \"a23\", \"a24\", \"a25\", \"a26\", \"a27\", \"a28\", \"a6\", \"a7\", \"a8\", \"a9\", \"a10\", \"a29\", \"a30\", \"a31\", \"a32\", \"a33\", \"a34\", \"a35\", \"a36\", \"a37\", \"a38\", \"a39\", \"a40\", \"a41\", \"a42\", \"a43\", \"a44\", \"a45\", \"a46\", \"a47\", \"a48\", \"a49\", \"a50\", \"a51\", \"a52\", \"a53\", \"a54\", \"a55\", \"a56\", \"a57\", \"a58\", \"a59\", \"a60\", \"a61\", \"a62\", \"a63\", \"a64\", \"a65\", \"a66\", \"a67\", \"a68\", \"a69\", \"a70\", \"a71\", \"a72\", \"a73\", \"a74\", \"a203\", \"a75\", \"a204\", \"a76\", \"a77\", \"a78\", \"a79\", \"a81\", \"a82\", \"a83\", \"a84\", \"a97\", \"a98\", \"a99\", \"a100\", \"\", \"a89\", \"a90\", \"a93\", \"a94\", \"a91\", \"a92\", \"a205\", \"a85\", \"a206\", \"a86\", \"a87\", \"a88\", \"a95\", \"a96\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"a101\", \"a102\", \"a103\", \"a104\", \"a106\", \"a107\", \"a108\", \"a112\", \"a111\", \"a110\", \"a109\", \"a120\", \"a121\", \"a122\", \"a123\", \"a124\", \"a125\", \"a126\", \"a127\", \"a128\", \"a129\", \"a130\", \"a131\", \"a132\", \"a133\", \"a134\", \"a135\", \"a136\", \"a137\", \"a138\", \"a139\", \"a140\", \"a141\", \"a142\", \"a143\", \"a144\", \"a145\", \"a146\", \"a147\", \"a148\", \"a149\", \"a150\", \"a151\", \"a152\", \"a153\", \"a154\", \"a155\", \"a156\", \"a157\", \"a158\", \"a159\", \"a160\", \"a161\", \"a163\", \"a164\", \"a196\", \"a165\", \"a192\", \"a166\", \"a167\", \"a168\", \"a169\", \"a170\", \"a171\", \"a172\", \"a173\", \"a162\", \"a174\", \"a175\", \"a176\", \"a177\", \"a178\", \"a179\", \"a193\", \"a180\", \"a199\", \"a181\", \"a200\", \"a182\", \"\", \"a201\", \"a183\", \"a184\", \"a197\", \"a185\", \"a194\", \"a198\", \"a186\", \"a195\", \"a187\", \"a188\", \"a189\", \"a190\", \"a191\", \"\"];\nexports.ZapfDingbatsEncoding = ZapfDingbatsEncoding;\n\nfunction getEncoding(encodingName) {\n switch (encodingName) {\n case \"WinAnsiEncoding\":\n return WinAnsiEncoding;\n\n case \"StandardEncoding\":\n return StandardEncoding;\n\n case \"MacRomanEncoding\":\n return MacRomanEncoding;\n\n case \"SymbolSetEncoding\":\n return SymbolSetEncoding;\n\n case \"ZapfDingbatsEncoding\":\n return ZapfDingbatsEncoding;\n\n case \"ExpertEncoding\":\n return ExpertEncoding;\n\n case \"MacExpertEncoding\":\n return MacExpertEncoding;\n\n default:\n return null;\n }\n}\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar getLookupTableFactory = __w_pdfjs_require__(8).getLookupTableFactory;\nvar getGlyphsUnicode = getLookupTableFactory(function (t) {\n t.A = 0x0041;\n t.AE = 0x00c6;\n t.AEacute = 0x01fc;\n t.AEmacron = 0x01e2;\n t.AEsmall = 0xf7e6;\n t.Aacute = 0x00c1;\n t.Aacutesmall = 0xf7e1;\n t.Abreve = 0x0102;\n t.Abreveacute = 0x1eae;\n t.Abrevecyrillic = 0x04d0;\n t.Abrevedotbelow = 0x1eb6;\n t.Abrevegrave = 0x1eb0;\n t.Abrevehookabove = 0x1eb2;\n t.Abrevetilde = 0x1eb4;\n t.Acaron = 0x01cd;\n t.Acircle = 0x24b6;\n t.Acircumflex = 0x00c2;\n t.Acircumflexacute = 0x1ea4;\n t.Acircumflexdotbelow = 0x1eac;\n t.Acircumflexgrave = 0x1ea6;\n t.Acircumflexhookabove = 0x1ea8;\n t.Acircumflexsmall = 0xf7e2;\n t.Acircumflextilde = 0x1eaa;\n t.Acute = 0xf6c9;\n t.Acutesmall = 0xf7b4;\n t.Acyrillic = 0x0410;\n t.Adblgrave = 0x0200;\n t.Adieresis = 0x00c4;\n t.Adieresiscyrillic = 0x04d2;\n t.Adieresismacron = 0x01de;\n t.Adieresissmall = 0xf7e4;\n t.Adotbelow = 0x1ea0;\n t.Adotmacron = 0x01e0;\n t.Agrave = 0x00c0;\n t.Agravesmall = 0xf7e0;\n t.Ahookabove = 0x1ea2;\n t.Aiecyrillic = 0x04d4;\n t.Ainvertedbreve = 0x0202;\n t.Alpha = 0x0391;\n t.Alphatonos = 0x0386;\n t.Amacron = 0x0100;\n t.Amonospace = 0xff21;\n t.Aogonek = 0x0104;\n t.Aring = 0x00c5;\n t.Aringacute = 0x01fa;\n t.Aringbelow = 0x1e00;\n t.Aringsmall = 0xf7e5;\n t.Asmall = 0xf761;\n t.Atilde = 0x00c3;\n t.Atildesmall = 0xf7e3;\n t.Aybarmenian = 0x0531;\n t.B = 0x0042;\n t.Bcircle = 0x24b7;\n t.Bdotaccent = 0x1e02;\n t.Bdotbelow = 0x1e04;\n t.Becyrillic = 0x0411;\n t.Benarmenian = 0x0532;\n t.Beta = 0x0392;\n t.Bhook = 0x0181;\n t.Blinebelow = 0x1e06;\n t.Bmonospace = 0xff22;\n t.Brevesmall = 0xf6f4;\n t.Bsmall = 0xf762;\n t.Btopbar = 0x0182;\n t.C = 0x0043;\n t.Caarmenian = 0x053e;\n t.Cacute = 0x0106;\n t.Caron = 0xf6ca;\n t.Caronsmall = 0xf6f5;\n t.Ccaron = 0x010c;\n t.Ccedilla = 0x00c7;\n t.Ccedillaacute = 0x1e08;\n t.Ccedillasmall = 0xf7e7;\n t.Ccircle = 0x24b8;\n t.Ccircumflex = 0x0108;\n t.Cdot = 0x010a;\n t.Cdotaccent = 0x010a;\n t.Cedillasmall = 0xf7b8;\n t.Chaarmenian = 0x0549;\n t.Cheabkhasiancyrillic = 0x04bc;\n t.Checyrillic = 0x0427;\n t.Chedescenderabkhasiancyrillic = 0x04be;\n t.Chedescendercyrillic = 0x04b6;\n t.Chedieresiscyrillic = 0x04f4;\n t.Cheharmenian = 0x0543;\n t.Chekhakassiancyrillic = 0x04cb;\n t.Cheverticalstrokecyrillic = 0x04b8;\n t.Chi = 0x03a7;\n t.Chook = 0x0187;\n t.Circumflexsmall = 0xf6f6;\n t.Cmonospace = 0xff23;\n t.Coarmenian = 0x0551;\n t.Csmall = 0xf763;\n t.D = 0x0044;\n t.DZ = 0x01f1;\n t.DZcaron = 0x01c4;\n t.Daarmenian = 0x0534;\n t.Dafrican = 0x0189;\n t.Dcaron = 0x010e;\n t.Dcedilla = 0x1e10;\n t.Dcircle = 0x24b9;\n t.Dcircumflexbelow = 0x1e12;\n t.Dcroat = 0x0110;\n t.Ddotaccent = 0x1e0a;\n t.Ddotbelow = 0x1e0c;\n t.Decyrillic = 0x0414;\n t.Deicoptic = 0x03ee;\n t.Delta = 0x2206;\n t.Deltagreek = 0x0394;\n t.Dhook = 0x018a;\n t.Dieresis = 0xf6cb;\n t.DieresisAcute = 0xf6cc;\n t.DieresisGrave = 0xf6cd;\n t.Dieresissmall = 0xf7a8;\n t.Digammagreek = 0x03dc;\n t.Djecyrillic = 0x0402;\n t.Dlinebelow = 0x1e0e;\n t.Dmonospace = 0xff24;\n t.Dotaccentsmall = 0xf6f7;\n t.Dslash = 0x0110;\n t.Dsmall = 0xf764;\n t.Dtopbar = 0x018b;\n t.Dz = 0x01f2;\n t.Dzcaron = 0x01c5;\n t.Dzeabkhasiancyrillic = 0x04e0;\n t.Dzecyrillic = 0x0405;\n t.Dzhecyrillic = 0x040f;\n t.E = 0x0045;\n t.Eacute = 0x00c9;\n t.Eacutesmall = 0xf7e9;\n t.Ebreve = 0x0114;\n t.Ecaron = 0x011a;\n t.Ecedillabreve = 0x1e1c;\n t.Echarmenian = 0x0535;\n t.Ecircle = 0x24ba;\n t.Ecircumflex = 0x00ca;\n t.Ecircumflexacute = 0x1ebe;\n t.Ecircumflexbelow = 0x1e18;\n t.Ecircumflexdotbelow = 0x1ec6;\n t.Ecircumflexgrave = 0x1ec0;\n t.Ecircumflexhookabove = 0x1ec2;\n t.Ecircumflexsmall = 0xf7ea;\n t.Ecircumflextilde = 0x1ec4;\n t.Ecyrillic = 0x0404;\n t.Edblgrave = 0x0204;\n t.Edieresis = 0x00cb;\n t.Edieresissmall = 0xf7eb;\n t.Edot = 0x0116;\n t.Edotaccent = 0x0116;\n t.Edotbelow = 0x1eb8;\n t.Efcyrillic = 0x0424;\n t.Egrave = 0x00c8;\n t.Egravesmall = 0xf7e8;\n t.Eharmenian = 0x0537;\n t.Ehookabove = 0x1eba;\n t.Eightroman = 0x2167;\n t.Einvertedbreve = 0x0206;\n t.Eiotifiedcyrillic = 0x0464;\n t.Elcyrillic = 0x041b;\n t.Elevenroman = 0x216a;\n t.Emacron = 0x0112;\n t.Emacronacute = 0x1e16;\n t.Emacrongrave = 0x1e14;\n t.Emcyrillic = 0x041c;\n t.Emonospace = 0xff25;\n t.Encyrillic = 0x041d;\n t.Endescendercyrillic = 0x04a2;\n t.Eng = 0x014a;\n t.Enghecyrillic = 0x04a4;\n t.Enhookcyrillic = 0x04c7;\n t.Eogonek = 0x0118;\n t.Eopen = 0x0190;\n t.Epsilon = 0x0395;\n t.Epsilontonos = 0x0388;\n t.Ercyrillic = 0x0420;\n t.Ereversed = 0x018e;\n t.Ereversedcyrillic = 0x042d;\n t.Escyrillic = 0x0421;\n t.Esdescendercyrillic = 0x04aa;\n t.Esh = 0x01a9;\n t.Esmall = 0xf765;\n t.Eta = 0x0397;\n t.Etarmenian = 0x0538;\n t.Etatonos = 0x0389;\n t.Eth = 0x00d0;\n t.Ethsmall = 0xf7f0;\n t.Etilde = 0x1ebc;\n t.Etildebelow = 0x1e1a;\n t.Euro = 0x20ac;\n t.Ezh = 0x01b7;\n t.Ezhcaron = 0x01ee;\n t.Ezhreversed = 0x01b8;\n t.F = 0x0046;\n t.Fcircle = 0x24bb;\n t.Fdotaccent = 0x1e1e;\n t.Feharmenian = 0x0556;\n t.Feicoptic = 0x03e4;\n t.Fhook = 0x0191;\n t.Fitacyrillic = 0x0472;\n t.Fiveroman = 0x2164;\n t.Fmonospace = 0xff26;\n t.Fourroman = 0x2163;\n t.Fsmall = 0xf766;\n t.G = 0x0047;\n t.GBsquare = 0x3387;\n t.Gacute = 0x01f4;\n t.Gamma = 0x0393;\n t.Gammaafrican = 0x0194;\n t.Gangiacoptic = 0x03ea;\n t.Gbreve = 0x011e;\n t.Gcaron = 0x01e6;\n t.Gcedilla = 0x0122;\n t.Gcircle = 0x24bc;\n t.Gcircumflex = 0x011c;\n t.Gcommaaccent = 0x0122;\n t.Gdot = 0x0120;\n t.Gdotaccent = 0x0120;\n t.Gecyrillic = 0x0413;\n t.Ghadarmenian = 0x0542;\n t.Ghemiddlehookcyrillic = 0x0494;\n t.Ghestrokecyrillic = 0x0492;\n t.Gheupturncyrillic = 0x0490;\n t.Ghook = 0x0193;\n t.Gimarmenian = 0x0533;\n t.Gjecyrillic = 0x0403;\n t.Gmacron = 0x1e20;\n t.Gmonospace = 0xff27;\n t.Grave = 0xf6ce;\n t.Gravesmall = 0xf760;\n t.Gsmall = 0xf767;\n t.Gsmallhook = 0x029b;\n t.Gstroke = 0x01e4;\n t.H = 0x0048;\n t.H18533 = 0x25cf;\n t.H18543 = 0x25aa;\n t.H18551 = 0x25ab;\n t.H22073 = 0x25a1;\n t.HPsquare = 0x33cb;\n t.Haabkhasiancyrillic = 0x04a8;\n t.Hadescendercyrillic = 0x04b2;\n t.Hardsigncyrillic = 0x042a;\n t.Hbar = 0x0126;\n t.Hbrevebelow = 0x1e2a;\n t.Hcedilla = 0x1e28;\n t.Hcircle = 0x24bd;\n t.Hcircumflex = 0x0124;\n t.Hdieresis = 0x1e26;\n t.Hdotaccent = 0x1e22;\n t.Hdotbelow = 0x1e24;\n t.Hmonospace = 0xff28;\n t.Hoarmenian = 0x0540;\n t.Horicoptic = 0x03e8;\n t.Hsmall = 0xf768;\n t.Hungarumlaut = 0xf6cf;\n t.Hungarumlautsmall = 0xf6f8;\n t.Hzsquare = 0x3390;\n t.I = 0x0049;\n t.IAcyrillic = 0x042f;\n t.IJ = 0x0132;\n t.IUcyrillic = 0x042e;\n t.Iacute = 0x00cd;\n t.Iacutesmall = 0xf7ed;\n t.Ibreve = 0x012c;\n t.Icaron = 0x01cf;\n t.Icircle = 0x24be;\n t.Icircumflex = 0x00ce;\n t.Icircumflexsmall = 0xf7ee;\n t.Icyrillic = 0x0406;\n t.Idblgrave = 0x0208;\n t.Idieresis = 0x00cf;\n t.Idieresisacute = 0x1e2e;\n t.Idieresiscyrillic = 0x04e4;\n t.Idieresissmall = 0xf7ef;\n t.Idot = 0x0130;\n t.Idotaccent = 0x0130;\n t.Idotbelow = 0x1eca;\n t.Iebrevecyrillic = 0x04d6;\n t.Iecyrillic = 0x0415;\n t.Ifraktur = 0x2111;\n t.Igrave = 0x00cc;\n t.Igravesmall = 0xf7ec;\n t.Ihookabove = 0x1ec8;\n t.Iicyrillic = 0x0418;\n t.Iinvertedbreve = 0x020a;\n t.Iishortcyrillic = 0x0419;\n t.Imacron = 0x012a;\n t.Imacroncyrillic = 0x04e2;\n t.Imonospace = 0xff29;\n t.Iniarmenian = 0x053b;\n t.Iocyrillic = 0x0401;\n t.Iogonek = 0x012e;\n t.Iota = 0x0399;\n t.Iotaafrican = 0x0196;\n t.Iotadieresis = 0x03aa;\n t.Iotatonos = 0x038a;\n t.Ismall = 0xf769;\n t.Istroke = 0x0197;\n t.Itilde = 0x0128;\n t.Itildebelow = 0x1e2c;\n t.Izhitsacyrillic = 0x0474;\n t.Izhitsadblgravecyrillic = 0x0476;\n t.J = 0x004a;\n t.Jaarmenian = 0x0541;\n t.Jcircle = 0x24bf;\n t.Jcircumflex = 0x0134;\n t.Jecyrillic = 0x0408;\n t.Jheharmenian = 0x054b;\n t.Jmonospace = 0xff2a;\n t.Jsmall = 0xf76a;\n t.K = 0x004b;\n t.KBsquare = 0x3385;\n t.KKsquare = 0x33cd;\n t.Kabashkircyrillic = 0x04a0;\n t.Kacute = 0x1e30;\n t.Kacyrillic = 0x041a;\n t.Kadescendercyrillic = 0x049a;\n t.Kahookcyrillic = 0x04c3;\n t.Kappa = 0x039a;\n t.Kastrokecyrillic = 0x049e;\n t.Kaverticalstrokecyrillic = 0x049c;\n t.Kcaron = 0x01e8;\n t.Kcedilla = 0x0136;\n t.Kcircle = 0x24c0;\n t.Kcommaaccent = 0x0136;\n t.Kdotbelow = 0x1e32;\n t.Keharmenian = 0x0554;\n t.Kenarmenian = 0x053f;\n t.Khacyrillic = 0x0425;\n t.Kheicoptic = 0x03e6;\n t.Khook = 0x0198;\n t.Kjecyrillic = 0x040c;\n t.Klinebelow = 0x1e34;\n t.Kmonospace = 0xff2b;\n t.Koppacyrillic = 0x0480;\n t.Koppagreek = 0x03de;\n t.Ksicyrillic = 0x046e;\n t.Ksmall = 0xf76b;\n t.L = 0x004c;\n t.LJ = 0x01c7;\n t.LL = 0xf6bf;\n t.Lacute = 0x0139;\n t.Lambda = 0x039b;\n t.Lcaron = 0x013d;\n t.Lcedilla = 0x013b;\n t.Lcircle = 0x24c1;\n t.Lcircumflexbelow = 0x1e3c;\n t.Lcommaaccent = 0x013b;\n t.Ldot = 0x013f;\n t.Ldotaccent = 0x013f;\n t.Ldotbelow = 0x1e36;\n t.Ldotbelowmacron = 0x1e38;\n t.Liwnarmenian = 0x053c;\n t.Lj = 0x01c8;\n t.Ljecyrillic = 0x0409;\n t.Llinebelow = 0x1e3a;\n t.Lmonospace = 0xff2c;\n t.Lslash = 0x0141;\n t.Lslashsmall = 0xf6f9;\n t.Lsmall = 0xf76c;\n t.M = 0x004d;\n t.MBsquare = 0x3386;\n t.Macron = 0xf6d0;\n t.Macronsmall = 0xf7af;\n t.Macute = 0x1e3e;\n t.Mcircle = 0x24c2;\n t.Mdotaccent = 0x1e40;\n t.Mdotbelow = 0x1e42;\n t.Menarmenian = 0x0544;\n t.Mmonospace = 0xff2d;\n t.Msmall = 0xf76d;\n t.Mturned = 0x019c;\n t.Mu = 0x039c;\n t.N = 0x004e;\n t.NJ = 0x01ca;\n t.Nacute = 0x0143;\n t.Ncaron = 0x0147;\n t.Ncedilla = 0x0145;\n t.Ncircle = 0x24c3;\n t.Ncircumflexbelow = 0x1e4a;\n t.Ncommaaccent = 0x0145;\n t.Ndotaccent = 0x1e44;\n t.Ndotbelow = 0x1e46;\n t.Nhookleft = 0x019d;\n t.Nineroman = 0x2168;\n t.Nj = 0x01cb;\n t.Njecyrillic = 0x040a;\n t.Nlinebelow = 0x1e48;\n t.Nmonospace = 0xff2e;\n t.Nowarmenian = 0x0546;\n t.Nsmall = 0xf76e;\n t.Ntilde = 0x00d1;\n t.Ntildesmall = 0xf7f1;\n t.Nu = 0x039d;\n t.O = 0x004f;\n t.OE = 0x0152;\n t.OEsmall = 0xf6fa;\n t.Oacute = 0x00d3;\n t.Oacutesmall = 0xf7f3;\n t.Obarredcyrillic = 0x04e8;\n t.Obarreddieresiscyrillic = 0x04ea;\n t.Obreve = 0x014e;\n t.Ocaron = 0x01d1;\n t.Ocenteredtilde = 0x019f;\n t.Ocircle = 0x24c4;\n t.Ocircumflex = 0x00d4;\n t.Ocircumflexacute = 0x1ed0;\n t.Ocircumflexdotbelow = 0x1ed8;\n t.Ocircumflexgrave = 0x1ed2;\n t.Ocircumflexhookabove = 0x1ed4;\n t.Ocircumflexsmall = 0xf7f4;\n t.Ocircumflextilde = 0x1ed6;\n t.Ocyrillic = 0x041e;\n t.Odblacute = 0x0150;\n t.Odblgrave = 0x020c;\n t.Odieresis = 0x00d6;\n t.Odieresiscyrillic = 0x04e6;\n t.Odieresissmall = 0xf7f6;\n t.Odotbelow = 0x1ecc;\n t.Ogoneksmall = 0xf6fb;\n t.Ograve = 0x00d2;\n t.Ogravesmall = 0xf7f2;\n t.Oharmenian = 0x0555;\n t.Ohm = 0x2126;\n t.Ohookabove = 0x1ece;\n t.Ohorn = 0x01a0;\n t.Ohornacute = 0x1eda;\n t.Ohorndotbelow = 0x1ee2;\n t.Ohorngrave = 0x1edc;\n t.Ohornhookabove = 0x1ede;\n t.Ohorntilde = 0x1ee0;\n t.Ohungarumlaut = 0x0150;\n t.Oi = 0x01a2;\n t.Oinvertedbreve = 0x020e;\n t.Omacron = 0x014c;\n t.Omacronacute = 0x1e52;\n t.Omacrongrave = 0x1e50;\n t.Omega = 0x2126;\n t.Omegacyrillic = 0x0460;\n t.Omegagreek = 0x03a9;\n t.Omegaroundcyrillic = 0x047a;\n t.Omegatitlocyrillic = 0x047c;\n t.Omegatonos = 0x038f;\n t.Omicron = 0x039f;\n t.Omicrontonos = 0x038c;\n t.Omonospace = 0xff2f;\n t.Oneroman = 0x2160;\n t.Oogonek = 0x01ea;\n t.Oogonekmacron = 0x01ec;\n t.Oopen = 0x0186;\n t.Oslash = 0x00d8;\n t.Oslashacute = 0x01fe;\n t.Oslashsmall = 0xf7f8;\n t.Osmall = 0xf76f;\n t.Ostrokeacute = 0x01fe;\n t.Otcyrillic = 0x047e;\n t.Otilde = 0x00d5;\n t.Otildeacute = 0x1e4c;\n t.Otildedieresis = 0x1e4e;\n t.Otildesmall = 0xf7f5;\n t.P = 0x0050;\n t.Pacute = 0x1e54;\n t.Pcircle = 0x24c5;\n t.Pdotaccent = 0x1e56;\n t.Pecyrillic = 0x041f;\n t.Peharmenian = 0x054a;\n t.Pemiddlehookcyrillic = 0x04a6;\n t.Phi = 0x03a6;\n t.Phook = 0x01a4;\n t.Pi = 0x03a0;\n t.Piwrarmenian = 0x0553;\n t.Pmonospace = 0xff30;\n t.Psi = 0x03a8;\n t.Psicyrillic = 0x0470;\n t.Psmall = 0xf770;\n t.Q = 0x0051;\n t.Qcircle = 0x24c6;\n t.Qmonospace = 0xff31;\n t.Qsmall = 0xf771;\n t.R = 0x0052;\n t.Raarmenian = 0x054c;\n t.Racute = 0x0154;\n t.Rcaron = 0x0158;\n t.Rcedilla = 0x0156;\n t.Rcircle = 0x24c7;\n t.Rcommaaccent = 0x0156;\n t.Rdblgrave = 0x0210;\n t.Rdotaccent = 0x1e58;\n t.Rdotbelow = 0x1e5a;\n t.Rdotbelowmacron = 0x1e5c;\n t.Reharmenian = 0x0550;\n t.Rfraktur = 0x211c;\n t.Rho = 0x03a1;\n t.Ringsmall = 0xf6fc;\n t.Rinvertedbreve = 0x0212;\n t.Rlinebelow = 0x1e5e;\n t.Rmonospace = 0xff32;\n t.Rsmall = 0xf772;\n t.Rsmallinverted = 0x0281;\n t.Rsmallinvertedsuperior = 0x02b6;\n t.S = 0x0053;\n t.SF010000 = 0x250c;\n t.SF020000 = 0x2514;\n t.SF030000 = 0x2510;\n t.SF040000 = 0x2518;\n t.SF050000 = 0x253c;\n t.SF060000 = 0x252c;\n t.SF070000 = 0x2534;\n t.SF080000 = 0x251c;\n t.SF090000 = 0x2524;\n t.SF100000 = 0x2500;\n t.SF110000 = 0x2502;\n t.SF190000 = 0x2561;\n t.SF200000 = 0x2562;\n t.SF210000 = 0x2556;\n t.SF220000 = 0x2555;\n t.SF230000 = 0x2563;\n t.SF240000 = 0x2551;\n t.SF250000 = 0x2557;\n t.SF260000 = 0x255d;\n t.SF270000 = 0x255c;\n t.SF280000 = 0x255b;\n t.SF360000 = 0x255e;\n t.SF370000 = 0x255f;\n t.SF380000 = 0x255a;\n t.SF390000 = 0x2554;\n t.SF400000 = 0x2569;\n t.SF410000 = 0x2566;\n t.SF420000 = 0x2560;\n t.SF430000 = 0x2550;\n t.SF440000 = 0x256c;\n t.SF450000 = 0x2567;\n t.SF460000 = 0x2568;\n t.SF470000 = 0x2564;\n t.SF480000 = 0x2565;\n t.SF490000 = 0x2559;\n t.SF500000 = 0x2558;\n t.SF510000 = 0x2552;\n t.SF520000 = 0x2553;\n t.SF530000 = 0x256b;\n t.SF540000 = 0x256a;\n t.Sacute = 0x015a;\n t.Sacutedotaccent = 0x1e64;\n t.Sampigreek = 0x03e0;\n t.Scaron = 0x0160;\n t.Scarondotaccent = 0x1e66;\n t.Scaronsmall = 0xf6fd;\n t.Scedilla = 0x015e;\n t.Schwa = 0x018f;\n t.Schwacyrillic = 0x04d8;\n t.Schwadieresiscyrillic = 0x04da;\n t.Scircle = 0x24c8;\n t.Scircumflex = 0x015c;\n t.Scommaaccent = 0x0218;\n t.Sdotaccent = 0x1e60;\n t.Sdotbelow = 0x1e62;\n t.Sdotbelowdotaccent = 0x1e68;\n t.Seharmenian = 0x054d;\n t.Sevenroman = 0x2166;\n t.Shaarmenian = 0x0547;\n t.Shacyrillic = 0x0428;\n t.Shchacyrillic = 0x0429;\n t.Sheicoptic = 0x03e2;\n t.Shhacyrillic = 0x04ba;\n t.Shimacoptic = 0x03ec;\n t.Sigma = 0x03a3;\n t.Sixroman = 0x2165;\n t.Smonospace = 0xff33;\n t.Softsigncyrillic = 0x042c;\n t.Ssmall = 0xf773;\n t.Stigmagreek = 0x03da;\n t.T = 0x0054;\n t.Tau = 0x03a4;\n t.Tbar = 0x0166;\n t.Tcaron = 0x0164;\n t.Tcedilla = 0x0162;\n t.Tcircle = 0x24c9;\n t.Tcircumflexbelow = 0x1e70;\n t.Tcommaaccent = 0x0162;\n t.Tdotaccent = 0x1e6a;\n t.Tdotbelow = 0x1e6c;\n t.Tecyrillic = 0x0422;\n t.Tedescendercyrillic = 0x04ac;\n t.Tenroman = 0x2169;\n t.Tetsecyrillic = 0x04b4;\n t.Theta = 0x0398;\n t.Thook = 0x01ac;\n t.Thorn = 0x00de;\n t.Thornsmall = 0xf7fe;\n t.Threeroman = 0x2162;\n t.Tildesmall = 0xf6fe;\n t.Tiwnarmenian = 0x054f;\n t.Tlinebelow = 0x1e6e;\n t.Tmonospace = 0xff34;\n t.Toarmenian = 0x0539;\n t.Tonefive = 0x01bc;\n t.Tonesix = 0x0184;\n t.Tonetwo = 0x01a7;\n t.Tretroflexhook = 0x01ae;\n t.Tsecyrillic = 0x0426;\n t.Tshecyrillic = 0x040b;\n t.Tsmall = 0xf774;\n t.Twelveroman = 0x216b;\n t.Tworoman = 0x2161;\n t.U = 0x0055;\n t.Uacute = 0x00da;\n t.Uacutesmall = 0xf7fa;\n t.Ubreve = 0x016c;\n t.Ucaron = 0x01d3;\n t.Ucircle = 0x24ca;\n t.Ucircumflex = 0x00db;\n t.Ucircumflexbelow = 0x1e76;\n t.Ucircumflexsmall = 0xf7fb;\n t.Ucyrillic = 0x0423;\n t.Udblacute = 0x0170;\n t.Udblgrave = 0x0214;\n t.Udieresis = 0x00dc;\n t.Udieresisacute = 0x01d7;\n t.Udieresisbelow = 0x1e72;\n t.Udieresiscaron = 0x01d9;\n t.Udieresiscyrillic = 0x04f0;\n t.Udieresisgrave = 0x01db;\n t.Udieresismacron = 0x01d5;\n t.Udieresissmall = 0xf7fc;\n t.Udotbelow = 0x1ee4;\n t.Ugrave = 0x00d9;\n t.Ugravesmall = 0xf7f9;\n t.Uhookabove = 0x1ee6;\n t.Uhorn = 0x01af;\n t.Uhornacute = 0x1ee8;\n t.Uhorndotbelow = 0x1ef0;\n t.Uhorngrave = 0x1eea;\n t.Uhornhookabove = 0x1eec;\n t.Uhorntilde = 0x1eee;\n t.Uhungarumlaut = 0x0170;\n t.Uhungarumlautcyrillic = 0x04f2;\n t.Uinvertedbreve = 0x0216;\n t.Ukcyrillic = 0x0478;\n t.Umacron = 0x016a;\n t.Umacroncyrillic = 0x04ee;\n t.Umacrondieresis = 0x1e7a;\n t.Umonospace = 0xff35;\n t.Uogonek = 0x0172;\n t.Upsilon = 0x03a5;\n t.Upsilon1 = 0x03d2;\n t.Upsilonacutehooksymbolgreek = 0x03d3;\n t.Upsilonafrican = 0x01b1;\n t.Upsilondieresis = 0x03ab;\n t.Upsilondieresishooksymbolgreek = 0x03d4;\n t.Upsilonhooksymbol = 0x03d2;\n t.Upsilontonos = 0x038e;\n t.Uring = 0x016e;\n t.Ushortcyrillic = 0x040e;\n t.Usmall = 0xf775;\n t.Ustraightcyrillic = 0x04ae;\n t.Ustraightstrokecyrillic = 0x04b0;\n t.Utilde = 0x0168;\n t.Utildeacute = 0x1e78;\n t.Utildebelow = 0x1e74;\n t.V = 0x0056;\n t.Vcircle = 0x24cb;\n t.Vdotbelow = 0x1e7e;\n t.Vecyrillic = 0x0412;\n t.Vewarmenian = 0x054e;\n t.Vhook = 0x01b2;\n t.Vmonospace = 0xff36;\n t.Voarmenian = 0x0548;\n t.Vsmall = 0xf776;\n t.Vtilde = 0x1e7c;\n t.W = 0x0057;\n t.Wacute = 0x1e82;\n t.Wcircle = 0x24cc;\n t.Wcircumflex = 0x0174;\n t.Wdieresis = 0x1e84;\n t.Wdotaccent = 0x1e86;\n t.Wdotbelow = 0x1e88;\n t.Wgrave = 0x1e80;\n t.Wmonospace = 0xff37;\n t.Wsmall = 0xf777;\n t.X = 0x0058;\n t.Xcircle = 0x24cd;\n t.Xdieresis = 0x1e8c;\n t.Xdotaccent = 0x1e8a;\n t.Xeharmenian = 0x053d;\n t.Xi = 0x039e;\n t.Xmonospace = 0xff38;\n t.Xsmall = 0xf778;\n t.Y = 0x0059;\n t.Yacute = 0x00dd;\n t.Yacutesmall = 0xf7fd;\n t.Yatcyrillic = 0x0462;\n t.Ycircle = 0x24ce;\n t.Ycircumflex = 0x0176;\n t.Ydieresis = 0x0178;\n t.Ydieresissmall = 0xf7ff;\n t.Ydotaccent = 0x1e8e;\n t.Ydotbelow = 0x1ef4;\n t.Yericyrillic = 0x042b;\n t.Yerudieresiscyrillic = 0x04f8;\n t.Ygrave = 0x1ef2;\n t.Yhook = 0x01b3;\n t.Yhookabove = 0x1ef6;\n t.Yiarmenian = 0x0545;\n t.Yicyrillic = 0x0407;\n t.Yiwnarmenian = 0x0552;\n t.Ymonospace = 0xff39;\n t.Ysmall = 0xf779;\n t.Ytilde = 0x1ef8;\n t.Yusbigcyrillic = 0x046a;\n t.Yusbigiotifiedcyrillic = 0x046c;\n t.Yuslittlecyrillic = 0x0466;\n t.Yuslittleiotifiedcyrillic = 0x0468;\n t.Z = 0x005a;\n t.Zaarmenian = 0x0536;\n t.Zacute = 0x0179;\n t.Zcaron = 0x017d;\n t.Zcaronsmall = 0xf6ff;\n t.Zcircle = 0x24cf;\n t.Zcircumflex = 0x1e90;\n t.Zdot = 0x017b;\n t.Zdotaccent = 0x017b;\n t.Zdotbelow = 0x1e92;\n t.Zecyrillic = 0x0417;\n t.Zedescendercyrillic = 0x0498;\n t.Zedieresiscyrillic = 0x04de;\n t.Zeta = 0x0396;\n t.Zhearmenian = 0x053a;\n t.Zhebrevecyrillic = 0x04c1;\n t.Zhecyrillic = 0x0416;\n t.Zhedescendercyrillic = 0x0496;\n t.Zhedieresiscyrillic = 0x04dc;\n t.Zlinebelow = 0x1e94;\n t.Zmonospace = 0xff3a;\n t.Zsmall = 0xf77a;\n t.Zstroke = 0x01b5;\n t.a = 0x0061;\n t.aabengali = 0x0986;\n t.aacute = 0x00e1;\n t.aadeva = 0x0906;\n t.aagujarati = 0x0a86;\n t.aagurmukhi = 0x0a06;\n t.aamatragurmukhi = 0x0a3e;\n t.aarusquare = 0x3303;\n t.aavowelsignbengali = 0x09be;\n t.aavowelsigndeva = 0x093e;\n t.aavowelsigngujarati = 0x0abe;\n t.abbreviationmarkarmenian = 0x055f;\n t.abbreviationsigndeva = 0x0970;\n t.abengali = 0x0985;\n t.abopomofo = 0x311a;\n t.abreve = 0x0103;\n t.abreveacute = 0x1eaf;\n t.abrevecyrillic = 0x04d1;\n t.abrevedotbelow = 0x1eb7;\n t.abrevegrave = 0x1eb1;\n t.abrevehookabove = 0x1eb3;\n t.abrevetilde = 0x1eb5;\n t.acaron = 0x01ce;\n t.acircle = 0x24d0;\n t.acircumflex = 0x00e2;\n t.acircumflexacute = 0x1ea5;\n t.acircumflexdotbelow = 0x1ead;\n t.acircumflexgrave = 0x1ea7;\n t.acircumflexhookabove = 0x1ea9;\n t.acircumflextilde = 0x1eab;\n t.acute = 0x00b4;\n t.acutebelowcmb = 0x0317;\n t.acutecmb = 0x0301;\n t.acutecomb = 0x0301;\n t.acutedeva = 0x0954;\n t.acutelowmod = 0x02cf;\n t.acutetonecmb = 0x0341;\n t.acyrillic = 0x0430;\n t.adblgrave = 0x0201;\n t.addakgurmukhi = 0x0a71;\n t.adeva = 0x0905;\n t.adieresis = 0x00e4;\n t.adieresiscyrillic = 0x04d3;\n t.adieresismacron = 0x01df;\n t.adotbelow = 0x1ea1;\n t.adotmacron = 0x01e1;\n t.ae = 0x00e6;\n t.aeacute = 0x01fd;\n t.aekorean = 0x3150;\n t.aemacron = 0x01e3;\n t.afii00208 = 0x2015;\n t.afii08941 = 0x20a4;\n t.afii10017 = 0x0410;\n t.afii10018 = 0x0411;\n t.afii10019 = 0x0412;\n t.afii10020 = 0x0413;\n t.afii10021 = 0x0414;\n t.afii10022 = 0x0415;\n t.afii10023 = 0x0401;\n t.afii10024 = 0x0416;\n t.afii10025 = 0x0417;\n t.afii10026 = 0x0418;\n t.afii10027 = 0x0419;\n t.afii10028 = 0x041a;\n t.afii10029 = 0x041b;\n t.afii10030 = 0x041c;\n t.afii10031 = 0x041d;\n t.afii10032 = 0x041e;\n t.afii10033 = 0x041f;\n t.afii10034 = 0x0420;\n t.afii10035 = 0x0421;\n t.afii10036 = 0x0422;\n t.afii10037 = 0x0423;\n t.afii10038 = 0x0424;\n t.afii10039 = 0x0425;\n t.afii10040 = 0x0426;\n t.afii10041 = 0x0427;\n t.afii10042 = 0x0428;\n t.afii10043 = 0x0429;\n t.afii10044 = 0x042a;\n t.afii10045 = 0x042b;\n t.afii10046 = 0x042c;\n t.afii10047 = 0x042d;\n t.afii10048 = 0x042e;\n t.afii10049 = 0x042f;\n t.afii10050 = 0x0490;\n t.afii10051 = 0x0402;\n t.afii10052 = 0x0403;\n t.afii10053 = 0x0404;\n t.afii10054 = 0x0405;\n t.afii10055 = 0x0406;\n t.afii10056 = 0x0407;\n t.afii10057 = 0x0408;\n t.afii10058 = 0x0409;\n t.afii10059 = 0x040a;\n t.afii10060 = 0x040b;\n t.afii10061 = 0x040c;\n t.afii10062 = 0x040e;\n t.afii10063 = 0xf6c4;\n t.afii10064 = 0xf6c5;\n t.afii10065 = 0x0430;\n t.afii10066 = 0x0431;\n t.afii10067 = 0x0432;\n t.afii10068 = 0x0433;\n t.afii10069 = 0x0434;\n t.afii10070 = 0x0435;\n t.afii10071 = 0x0451;\n t.afii10072 = 0x0436;\n t.afii10073 = 0x0437;\n t.afii10074 = 0x0438;\n t.afii10075 = 0x0439;\n t.afii10076 = 0x043a;\n t.afii10077 = 0x043b;\n t.afii10078 = 0x043c;\n t.afii10079 = 0x043d;\n t.afii10080 = 0x043e;\n t.afii10081 = 0x043f;\n t.afii10082 = 0x0440;\n t.afii10083 = 0x0441;\n t.afii10084 = 0x0442;\n t.afii10085 = 0x0443;\n t.afii10086 = 0x0444;\n t.afii10087 = 0x0445;\n t.afii10088 = 0x0446;\n t.afii10089 = 0x0447;\n t.afii10090 = 0x0448;\n t.afii10091 = 0x0449;\n t.afii10092 = 0x044a;\n t.afii10093 = 0x044b;\n t.afii10094 = 0x044c;\n t.afii10095 = 0x044d;\n t.afii10096 = 0x044e;\n t.afii10097 = 0x044f;\n t.afii10098 = 0x0491;\n t.afii10099 = 0x0452;\n t.afii10100 = 0x0453;\n t.afii10101 = 0x0454;\n t.afii10102 = 0x0455;\n t.afii10103 = 0x0456;\n t.afii10104 = 0x0457;\n t.afii10105 = 0x0458;\n t.afii10106 = 0x0459;\n t.afii10107 = 0x045a;\n t.afii10108 = 0x045b;\n t.afii10109 = 0x045c;\n t.afii10110 = 0x045e;\n t.afii10145 = 0x040f;\n t.afii10146 = 0x0462;\n t.afii10147 = 0x0472;\n t.afii10148 = 0x0474;\n t.afii10192 = 0xf6c6;\n t.afii10193 = 0x045f;\n t.afii10194 = 0x0463;\n t.afii10195 = 0x0473;\n t.afii10196 = 0x0475;\n t.afii10831 = 0xf6c7;\n t.afii10832 = 0xf6c8;\n t.afii10846 = 0x04d9;\n t.afii299 = 0x200e;\n t.afii300 = 0x200f;\n t.afii301 = 0x200d;\n t.afii57381 = 0x066a;\n t.afii57388 = 0x060c;\n t.afii57392 = 0x0660;\n t.afii57393 = 0x0661;\n t.afii57394 = 0x0662;\n t.afii57395 = 0x0663;\n t.afii57396 = 0x0664;\n t.afii57397 = 0x0665;\n t.afii57398 = 0x0666;\n t.afii57399 = 0x0667;\n t.afii57400 = 0x0668;\n t.afii57401 = 0x0669;\n t.afii57403 = 0x061b;\n t.afii57407 = 0x061f;\n t.afii57409 = 0x0621;\n t.afii57410 = 0x0622;\n t.afii57411 = 0x0623;\n t.afii57412 = 0x0624;\n t.afii57413 = 0x0625;\n t.afii57414 = 0x0626;\n t.afii57415 = 0x0627;\n t.afii57416 = 0x0628;\n t.afii57417 = 0x0629;\n t.afii57418 = 0x062a;\n t.afii57419 = 0x062b;\n t.afii57420 = 0x062c;\n t.afii57421 = 0x062d;\n t.afii57422 = 0x062e;\n t.afii57423 = 0x062f;\n t.afii57424 = 0x0630;\n t.afii57425 = 0x0631;\n t.afii57426 = 0x0632;\n t.afii57427 = 0x0633;\n t.afii57428 = 0x0634;\n t.afii57429 = 0x0635;\n t.afii57430 = 0x0636;\n t.afii57431 = 0x0637;\n t.afii57432 = 0x0638;\n t.afii57433 = 0x0639;\n t.afii57434 = 0x063a;\n t.afii57440 = 0x0640;\n t.afii57441 = 0x0641;\n t.afii57442 = 0x0642;\n t.afii57443 = 0x0643;\n t.afii57444 = 0x0644;\n t.afii57445 = 0x0645;\n t.afii57446 = 0x0646;\n t.afii57448 = 0x0648;\n t.afii57449 = 0x0649;\n t.afii57450 = 0x064a;\n t.afii57451 = 0x064b;\n t.afii57452 = 0x064c;\n t.afii57453 = 0x064d;\n t.afii57454 = 0x064e;\n t.afii57455 = 0x064f;\n t.afii57456 = 0x0650;\n t.afii57457 = 0x0651;\n t.afii57458 = 0x0652;\n t.afii57470 = 0x0647;\n t.afii57505 = 0x06a4;\n t.afii57506 = 0x067e;\n t.afii57507 = 0x0686;\n t.afii57508 = 0x0698;\n t.afii57509 = 0x06af;\n t.afii57511 = 0x0679;\n t.afii57512 = 0x0688;\n t.afii57513 = 0x0691;\n t.afii57514 = 0x06ba;\n t.afii57519 = 0x06d2;\n t.afii57534 = 0x06d5;\n t.afii57636 = 0x20aa;\n t.afii57645 = 0x05be;\n t.afii57658 = 0x05c3;\n t.afii57664 = 0x05d0;\n t.afii57665 = 0x05d1;\n t.afii57666 = 0x05d2;\n t.afii57667 = 0x05d3;\n t.afii57668 = 0x05d4;\n t.afii57669 = 0x05d5;\n t.afii57670 = 0x05d6;\n t.afii57671 = 0x05d7;\n t.afii57672 = 0x05d8;\n t.afii57673 = 0x05d9;\n t.afii57674 = 0x05da;\n t.afii57675 = 0x05db;\n t.afii57676 = 0x05dc;\n t.afii57677 = 0x05dd;\n t.afii57678 = 0x05de;\n t.afii57679 = 0x05df;\n t.afii57680 = 0x05e0;\n t.afii57681 = 0x05e1;\n t.afii57682 = 0x05e2;\n t.afii57683 = 0x05e3;\n t.afii57684 = 0x05e4;\n t.afii57685 = 0x05e5;\n t.afii57686 = 0x05e6;\n t.afii57687 = 0x05e7;\n t.afii57688 = 0x05e8;\n t.afii57689 = 0x05e9;\n t.afii57690 = 0x05ea;\n t.afii57694 = 0xfb2a;\n t.afii57695 = 0xfb2b;\n t.afii57700 = 0xfb4b;\n t.afii57705 = 0xfb1f;\n t.afii57716 = 0x05f0;\n t.afii57717 = 0x05f1;\n t.afii57718 = 0x05f2;\n t.afii57723 = 0xfb35;\n t.afii57793 = 0x05b4;\n t.afii57794 = 0x05b5;\n t.afii57795 = 0x05b6;\n t.afii57796 = 0x05bb;\n t.afii57797 = 0x05b8;\n t.afii57798 = 0x05b7;\n t.afii57799 = 0x05b0;\n t.afii57800 = 0x05b2;\n t.afii57801 = 0x05b1;\n t.afii57802 = 0x05b3;\n t.afii57803 = 0x05c2;\n t.afii57804 = 0x05c1;\n t.afii57806 = 0x05b9;\n t.afii57807 = 0x05bc;\n t.afii57839 = 0x05bd;\n t.afii57841 = 0x05bf;\n t.afii57842 = 0x05c0;\n t.afii57929 = 0x02bc;\n t.afii61248 = 0x2105;\n t.afii61289 = 0x2113;\n t.afii61352 = 0x2116;\n t.afii61573 = 0x202c;\n t.afii61574 = 0x202d;\n t.afii61575 = 0x202e;\n t.afii61664 = 0x200c;\n t.afii63167 = 0x066d;\n t.afii64937 = 0x02bd;\n t.agrave = 0x00e0;\n t.agujarati = 0x0a85;\n t.agurmukhi = 0x0a05;\n t.ahiragana = 0x3042;\n t.ahookabove = 0x1ea3;\n t.aibengali = 0x0990;\n t.aibopomofo = 0x311e;\n t.aideva = 0x0910;\n t.aiecyrillic = 0x04d5;\n t.aigujarati = 0x0a90;\n t.aigurmukhi = 0x0a10;\n t.aimatragurmukhi = 0x0a48;\n t.ainarabic = 0x0639;\n t.ainfinalarabic = 0xfeca;\n t.aininitialarabic = 0xfecb;\n t.ainmedialarabic = 0xfecc;\n t.ainvertedbreve = 0x0203;\n t.aivowelsignbengali = 0x09c8;\n t.aivowelsigndeva = 0x0948;\n t.aivowelsigngujarati = 0x0ac8;\n t.akatakana = 0x30a2;\n t.akatakanahalfwidth = 0xff71;\n t.akorean = 0x314f;\n t.alef = 0x05d0;\n t.alefarabic = 0x0627;\n t.alefdageshhebrew = 0xfb30;\n t.aleffinalarabic = 0xfe8e;\n t.alefhamzaabovearabic = 0x0623;\n t.alefhamzaabovefinalarabic = 0xfe84;\n t.alefhamzabelowarabic = 0x0625;\n t.alefhamzabelowfinalarabic = 0xfe88;\n t.alefhebrew = 0x05d0;\n t.aleflamedhebrew = 0xfb4f;\n t.alefmaddaabovearabic = 0x0622;\n t.alefmaddaabovefinalarabic = 0xfe82;\n t.alefmaksuraarabic = 0x0649;\n t.alefmaksurafinalarabic = 0xfef0;\n t.alefmaksurainitialarabic = 0xfef3;\n t.alefmaksuramedialarabic = 0xfef4;\n t.alefpatahhebrew = 0xfb2e;\n t.alefqamatshebrew = 0xfb2f;\n t.aleph = 0x2135;\n t.allequal = 0x224c;\n t.alpha = 0x03b1;\n t.alphatonos = 0x03ac;\n t.amacron = 0x0101;\n t.amonospace = 0xff41;\n t.ampersand = 0x0026;\n t.ampersandmonospace = 0xff06;\n t.ampersandsmall = 0xf726;\n t.amsquare = 0x33c2;\n t.anbopomofo = 0x3122;\n t.angbopomofo = 0x3124;\n t.angbracketleft = 0x3008;\n t.angbracketright = 0x3009;\n t.angkhankhuthai = 0x0e5a;\n t.angle = 0x2220;\n t.anglebracketleft = 0x3008;\n t.anglebracketleftvertical = 0xfe3f;\n t.anglebracketright = 0x3009;\n t.anglebracketrightvertical = 0xfe40;\n t.angleleft = 0x2329;\n t.angleright = 0x232a;\n t.angstrom = 0x212b;\n t.anoteleia = 0x0387;\n t.anudattadeva = 0x0952;\n t.anusvarabengali = 0x0982;\n t.anusvaradeva = 0x0902;\n t.anusvaragujarati = 0x0a82;\n t.aogonek = 0x0105;\n t.apaatosquare = 0x3300;\n t.aparen = 0x249c;\n t.apostrophearmenian = 0x055a;\n t.apostrophemod = 0x02bc;\n t.apple = 0xf8ff;\n t.approaches = 0x2250;\n t.approxequal = 0x2248;\n t.approxequalorimage = 0x2252;\n t.approximatelyequal = 0x2245;\n t.araeaekorean = 0x318e;\n t.araeakorean = 0x318d;\n t.arc = 0x2312;\n t.arighthalfring = 0x1e9a;\n t.aring = 0x00e5;\n t.aringacute = 0x01fb;\n t.aringbelow = 0x1e01;\n t.arrowboth = 0x2194;\n t.arrowdashdown = 0x21e3;\n t.arrowdashleft = 0x21e0;\n t.arrowdashright = 0x21e2;\n t.arrowdashup = 0x21e1;\n t.arrowdblboth = 0x21d4;\n t.arrowdbldown = 0x21d3;\n t.arrowdblleft = 0x21d0;\n t.arrowdblright = 0x21d2;\n t.arrowdblup = 0x21d1;\n t.arrowdown = 0x2193;\n t.arrowdownleft = 0x2199;\n t.arrowdownright = 0x2198;\n t.arrowdownwhite = 0x21e9;\n t.arrowheaddownmod = 0x02c5;\n t.arrowheadleftmod = 0x02c2;\n t.arrowheadrightmod = 0x02c3;\n t.arrowheadupmod = 0x02c4;\n t.arrowhorizex = 0xf8e7;\n t.arrowleft = 0x2190;\n t.arrowleftdbl = 0x21d0;\n t.arrowleftdblstroke = 0x21cd;\n t.arrowleftoverright = 0x21c6;\n t.arrowleftwhite = 0x21e6;\n t.arrowright = 0x2192;\n t.arrowrightdblstroke = 0x21cf;\n t.arrowrightheavy = 0x279e;\n t.arrowrightoverleft = 0x21c4;\n t.arrowrightwhite = 0x21e8;\n t.arrowtableft = 0x21e4;\n t.arrowtabright = 0x21e5;\n t.arrowup = 0x2191;\n t.arrowupdn = 0x2195;\n t.arrowupdnbse = 0x21a8;\n t.arrowupdownbase = 0x21a8;\n t.arrowupleft = 0x2196;\n t.arrowupleftofdown = 0x21c5;\n t.arrowupright = 0x2197;\n t.arrowupwhite = 0x21e7;\n t.arrowvertex = 0xf8e6;\n t.asciicircum = 0x005e;\n t.asciicircummonospace = 0xff3e;\n t.asciitilde = 0x007e;\n t.asciitildemonospace = 0xff5e;\n t.ascript = 0x0251;\n t.ascriptturned = 0x0252;\n t.asmallhiragana = 0x3041;\n t.asmallkatakana = 0x30a1;\n t.asmallkatakanahalfwidth = 0xff67;\n t.asterisk = 0x002a;\n t.asteriskaltonearabic = 0x066d;\n t.asteriskarabic = 0x066d;\n t.asteriskmath = 0x2217;\n t.asteriskmonospace = 0xff0a;\n t.asterisksmall = 0xfe61;\n t.asterism = 0x2042;\n t.asuperior = 0xf6e9;\n t.asymptoticallyequal = 0x2243;\n t.at = 0x0040;\n t.atilde = 0x00e3;\n t.atmonospace = 0xff20;\n t.atsmall = 0xfe6b;\n t.aturned = 0x0250;\n t.aubengali = 0x0994;\n t.aubopomofo = 0x3120;\n t.audeva = 0x0914;\n t.augujarati = 0x0a94;\n t.augurmukhi = 0x0a14;\n t.aulengthmarkbengali = 0x09d7;\n t.aumatragurmukhi = 0x0a4c;\n t.auvowelsignbengali = 0x09cc;\n t.auvowelsigndeva = 0x094c;\n t.auvowelsigngujarati = 0x0acc;\n t.avagrahadeva = 0x093d;\n t.aybarmenian = 0x0561;\n t.ayin = 0x05e2;\n t.ayinaltonehebrew = 0xfb20;\n t.ayinhebrew = 0x05e2;\n t.b = 0x0062;\n t.babengali = 0x09ac;\n t.backslash = 0x005c;\n t.backslashmonospace = 0xff3c;\n t.badeva = 0x092c;\n t.bagujarati = 0x0aac;\n t.bagurmukhi = 0x0a2c;\n t.bahiragana = 0x3070;\n t.bahtthai = 0x0e3f;\n t.bakatakana = 0x30d0;\n t.bar = 0x007c;\n t.barmonospace = 0xff5c;\n t.bbopomofo = 0x3105;\n t.bcircle = 0x24d1;\n t.bdotaccent = 0x1e03;\n t.bdotbelow = 0x1e05;\n t.beamedsixteenthnotes = 0x266c;\n t.because = 0x2235;\n t.becyrillic = 0x0431;\n t.beharabic = 0x0628;\n t.behfinalarabic = 0xfe90;\n t.behinitialarabic = 0xfe91;\n t.behiragana = 0x3079;\n t.behmedialarabic = 0xfe92;\n t.behmeeminitialarabic = 0xfc9f;\n t.behmeemisolatedarabic = 0xfc08;\n t.behnoonfinalarabic = 0xfc6d;\n t.bekatakana = 0x30d9;\n t.benarmenian = 0x0562;\n t.bet = 0x05d1;\n t.beta = 0x03b2;\n t.betasymbolgreek = 0x03d0;\n t.betdagesh = 0xfb31;\n t.betdageshhebrew = 0xfb31;\n t.bethebrew = 0x05d1;\n t.betrafehebrew = 0xfb4c;\n t.bhabengali = 0x09ad;\n t.bhadeva = 0x092d;\n t.bhagujarati = 0x0aad;\n t.bhagurmukhi = 0x0a2d;\n t.bhook = 0x0253;\n t.bihiragana = 0x3073;\n t.bikatakana = 0x30d3;\n t.bilabialclick = 0x0298;\n t.bindigurmukhi = 0x0a02;\n t.birusquare = 0x3331;\n t.blackcircle = 0x25cf;\n t.blackdiamond = 0x25c6;\n t.blackdownpointingtriangle = 0x25bc;\n t.blackleftpointingpointer = 0x25c4;\n t.blackleftpointingtriangle = 0x25c0;\n t.blacklenticularbracketleft = 0x3010;\n t.blacklenticularbracketleftvertical = 0xfe3b;\n t.blacklenticularbracketright = 0x3011;\n t.blacklenticularbracketrightvertical = 0xfe3c;\n t.blacklowerlefttriangle = 0x25e3;\n t.blacklowerrighttriangle = 0x25e2;\n t.blackrectangle = 0x25ac;\n t.blackrightpointingpointer = 0x25ba;\n t.blackrightpointingtriangle = 0x25b6;\n t.blacksmallsquare = 0x25aa;\n t.blacksmilingface = 0x263b;\n t.blacksquare = 0x25a0;\n t.blackstar = 0x2605;\n t.blackupperlefttriangle = 0x25e4;\n t.blackupperrighttriangle = 0x25e5;\n t.blackuppointingsmalltriangle = 0x25b4;\n t.blackuppointingtriangle = 0x25b2;\n t.blank = 0x2423;\n t.blinebelow = 0x1e07;\n t.block = 0x2588;\n t.bmonospace = 0xff42;\n t.bobaimaithai = 0x0e1a;\n t.bohiragana = 0x307c;\n t.bokatakana = 0x30dc;\n t.bparen = 0x249d;\n t.bqsquare = 0x33c3;\n t.braceex = 0xf8f4;\n t.braceleft = 0x007b;\n t.braceleftbt = 0xf8f3;\n t.braceleftmid = 0xf8f2;\n t.braceleftmonospace = 0xff5b;\n t.braceleftsmall = 0xfe5b;\n t.bracelefttp = 0xf8f1;\n t.braceleftvertical = 0xfe37;\n t.braceright = 0x007d;\n t.bracerightbt = 0xf8fe;\n t.bracerightmid = 0xf8fd;\n t.bracerightmonospace = 0xff5d;\n t.bracerightsmall = 0xfe5c;\n t.bracerighttp = 0xf8fc;\n t.bracerightvertical = 0xfe38;\n t.bracketleft = 0x005b;\n t.bracketleftbt = 0xf8f0;\n t.bracketleftex = 0xf8ef;\n t.bracketleftmonospace = 0xff3b;\n t.bracketlefttp = 0xf8ee;\n t.bracketright = 0x005d;\n t.bracketrightbt = 0xf8fb;\n t.bracketrightex = 0xf8fa;\n t.bracketrightmonospace = 0xff3d;\n t.bracketrighttp = 0xf8f9;\n t.breve = 0x02d8;\n t.brevebelowcmb = 0x032e;\n t.brevecmb = 0x0306;\n t.breveinvertedbelowcmb = 0x032f;\n t.breveinvertedcmb = 0x0311;\n t.breveinverteddoublecmb = 0x0361;\n t.bridgebelowcmb = 0x032a;\n t.bridgeinvertedbelowcmb = 0x033a;\n t.brokenbar = 0x00a6;\n t.bstroke = 0x0180;\n t.bsuperior = 0xf6ea;\n t.btopbar = 0x0183;\n t.buhiragana = 0x3076;\n t.bukatakana = 0x30d6;\n t.bullet = 0x2022;\n t.bulletinverse = 0x25d8;\n t.bulletoperator = 0x2219;\n t.bullseye = 0x25ce;\n t.c = 0x0063;\n t.caarmenian = 0x056e;\n t.cabengali = 0x099a;\n t.cacute = 0x0107;\n t.cadeva = 0x091a;\n t.cagujarati = 0x0a9a;\n t.cagurmukhi = 0x0a1a;\n t.calsquare = 0x3388;\n t.candrabindubengali = 0x0981;\n t.candrabinducmb = 0x0310;\n t.candrabindudeva = 0x0901;\n t.candrabindugujarati = 0x0a81;\n t.capslock = 0x21ea;\n t.careof = 0x2105;\n t.caron = 0x02c7;\n t.caronbelowcmb = 0x032c;\n t.caroncmb = 0x030c;\n t.carriagereturn = 0x21b5;\n t.cbopomofo = 0x3118;\n t.ccaron = 0x010d;\n t.ccedilla = 0x00e7;\n t.ccedillaacute = 0x1e09;\n t.ccircle = 0x24d2;\n t.ccircumflex = 0x0109;\n t.ccurl = 0x0255;\n t.cdot = 0x010b;\n t.cdotaccent = 0x010b;\n t.cdsquare = 0x33c5;\n t.cedilla = 0x00b8;\n t.cedillacmb = 0x0327;\n t.cent = 0x00a2;\n t.centigrade = 0x2103;\n t.centinferior = 0xf6df;\n t.centmonospace = 0xffe0;\n t.centoldstyle = 0xf7a2;\n t.centsuperior = 0xf6e0;\n t.chaarmenian = 0x0579;\n t.chabengali = 0x099b;\n t.chadeva = 0x091b;\n t.chagujarati = 0x0a9b;\n t.chagurmukhi = 0x0a1b;\n t.chbopomofo = 0x3114;\n t.cheabkhasiancyrillic = 0x04bd;\n t.checkmark = 0x2713;\n t.checyrillic = 0x0447;\n t.chedescenderabkhasiancyrillic = 0x04bf;\n t.chedescendercyrillic = 0x04b7;\n t.chedieresiscyrillic = 0x04f5;\n t.cheharmenian = 0x0573;\n t.chekhakassiancyrillic = 0x04cc;\n t.cheverticalstrokecyrillic = 0x04b9;\n t.chi = 0x03c7;\n t.chieuchacirclekorean = 0x3277;\n t.chieuchaparenkorean = 0x3217;\n t.chieuchcirclekorean = 0x3269;\n t.chieuchkorean = 0x314a;\n t.chieuchparenkorean = 0x3209;\n t.chochangthai = 0x0e0a;\n t.chochanthai = 0x0e08;\n t.chochingthai = 0x0e09;\n t.chochoethai = 0x0e0c;\n t.chook = 0x0188;\n t.cieucacirclekorean = 0x3276;\n t.cieucaparenkorean = 0x3216;\n t.cieuccirclekorean = 0x3268;\n t.cieuckorean = 0x3148;\n t.cieucparenkorean = 0x3208;\n t.cieucuparenkorean = 0x321c;\n t.circle = 0x25cb;\n t.circlecopyrt = 0x00a9;\n t.circlemultiply = 0x2297;\n t.circleot = 0x2299;\n t.circleplus = 0x2295;\n t.circlepostalmark = 0x3036;\n t.circlewithlefthalfblack = 0x25d0;\n t.circlewithrighthalfblack = 0x25d1;\n t.circumflex = 0x02c6;\n t.circumflexbelowcmb = 0x032d;\n t.circumflexcmb = 0x0302;\n t.clear = 0x2327;\n t.clickalveolar = 0x01c2;\n t.clickdental = 0x01c0;\n t.clicklateral = 0x01c1;\n t.clickretroflex = 0x01c3;\n t.club = 0x2663;\n t.clubsuitblack = 0x2663;\n t.clubsuitwhite = 0x2667;\n t.cmcubedsquare = 0x33a4;\n t.cmonospace = 0xff43;\n t.cmsquaredsquare = 0x33a0;\n t.coarmenian = 0x0581;\n t.colon = 0x003a;\n t.colonmonetary = 0x20a1;\n t.colonmonospace = 0xff1a;\n t.colonsign = 0x20a1;\n t.colonsmall = 0xfe55;\n t.colontriangularhalfmod = 0x02d1;\n t.colontriangularmod = 0x02d0;\n t.comma = 0x002c;\n t.commaabovecmb = 0x0313;\n t.commaaboverightcmb = 0x0315;\n t.commaaccent = 0xf6c3;\n t.commaarabic = 0x060c;\n t.commaarmenian = 0x055d;\n t.commainferior = 0xf6e1;\n t.commamonospace = 0xff0c;\n t.commareversedabovecmb = 0x0314;\n t.commareversedmod = 0x02bd;\n t.commasmall = 0xfe50;\n t.commasuperior = 0xf6e2;\n t.commaturnedabovecmb = 0x0312;\n t.commaturnedmod = 0x02bb;\n t.compass = 0x263c;\n t.congruent = 0x2245;\n t.contourintegral = 0x222e;\n t.control = 0x2303;\n t.controlACK = 0x0006;\n t.controlBEL = 0x0007;\n t.controlBS = 0x0008;\n t.controlCAN = 0x0018;\n t.controlCR = 0x000d;\n t.controlDC1 = 0x0011;\n t.controlDC2 = 0x0012;\n t.controlDC3 = 0x0013;\n t.controlDC4 = 0x0014;\n t.controlDEL = 0x007f;\n t.controlDLE = 0x0010;\n t.controlEM = 0x0019;\n t.controlENQ = 0x0005;\n t.controlEOT = 0x0004;\n t.controlESC = 0x001b;\n t.controlETB = 0x0017;\n t.controlETX = 0x0003;\n t.controlFF = 0x000c;\n t.controlFS = 0x001c;\n t.controlGS = 0x001d;\n t.controlHT = 0x0009;\n t.controlLF = 0x000a;\n t.controlNAK = 0x0015;\n t.controlNULL = 0x0000;\n t.controlRS = 0x001e;\n t.controlSI = 0x000f;\n t.controlSO = 0x000e;\n t.controlSOT = 0x0002;\n t.controlSTX = 0x0001;\n t.controlSUB = 0x001a;\n t.controlSYN = 0x0016;\n t.controlUS = 0x001f;\n t.controlVT = 0x000b;\n t.copyright = 0x00a9;\n t.copyrightsans = 0xf8e9;\n t.copyrightserif = 0xf6d9;\n t.cornerbracketleft = 0x300c;\n t.cornerbracketlefthalfwidth = 0xff62;\n t.cornerbracketleftvertical = 0xfe41;\n t.cornerbracketright = 0x300d;\n t.cornerbracketrighthalfwidth = 0xff63;\n t.cornerbracketrightvertical = 0xfe42;\n t.corporationsquare = 0x337f;\n t.cosquare = 0x33c7;\n t.coverkgsquare = 0x33c6;\n t.cparen = 0x249e;\n t.cruzeiro = 0x20a2;\n t.cstretched = 0x0297;\n t.curlyand = 0x22cf;\n t.curlyor = 0x22ce;\n t.currency = 0x00a4;\n t.cyrBreve = 0xf6d1;\n t.cyrFlex = 0xf6d2;\n t.cyrbreve = 0xf6d4;\n t.cyrflex = 0xf6d5;\n t.d = 0x0064;\n t.daarmenian = 0x0564;\n t.dabengali = 0x09a6;\n t.dadarabic = 0x0636;\n t.dadeva = 0x0926;\n t.dadfinalarabic = 0xfebe;\n t.dadinitialarabic = 0xfebf;\n t.dadmedialarabic = 0xfec0;\n t.dagesh = 0x05bc;\n t.dageshhebrew = 0x05bc;\n t.dagger = 0x2020;\n t.daggerdbl = 0x2021;\n t.dagujarati = 0x0aa6;\n t.dagurmukhi = 0x0a26;\n t.dahiragana = 0x3060;\n t.dakatakana = 0x30c0;\n t.dalarabic = 0x062f;\n t.dalet = 0x05d3;\n t.daletdagesh = 0xfb33;\n t.daletdageshhebrew = 0xfb33;\n t.dalethebrew = 0x05d3;\n t.dalfinalarabic = 0xfeaa;\n t.dammaarabic = 0x064f;\n t.dammalowarabic = 0x064f;\n t.dammatanaltonearabic = 0x064c;\n t.dammatanarabic = 0x064c;\n t.danda = 0x0964;\n t.dargahebrew = 0x05a7;\n t.dargalefthebrew = 0x05a7;\n t.dasiapneumatacyrilliccmb = 0x0485;\n t.dblGrave = 0xf6d3;\n t.dblanglebracketleft = 0x300a;\n t.dblanglebracketleftvertical = 0xfe3d;\n t.dblanglebracketright = 0x300b;\n t.dblanglebracketrightvertical = 0xfe3e;\n t.dblarchinvertedbelowcmb = 0x032b;\n t.dblarrowleft = 0x21d4;\n t.dblarrowright = 0x21d2;\n t.dbldanda = 0x0965;\n t.dblgrave = 0xf6d6;\n t.dblgravecmb = 0x030f;\n t.dblintegral = 0x222c;\n t.dbllowline = 0x2017;\n t.dbllowlinecmb = 0x0333;\n t.dbloverlinecmb = 0x033f;\n t.dblprimemod = 0x02ba;\n t.dblverticalbar = 0x2016;\n t.dblverticallineabovecmb = 0x030e;\n t.dbopomofo = 0x3109;\n t.dbsquare = 0x33c8;\n t.dcaron = 0x010f;\n t.dcedilla = 0x1e11;\n t.dcircle = 0x24d3;\n t.dcircumflexbelow = 0x1e13;\n t.dcroat = 0x0111;\n t.ddabengali = 0x09a1;\n t.ddadeva = 0x0921;\n t.ddagujarati = 0x0aa1;\n t.ddagurmukhi = 0x0a21;\n t.ddalarabic = 0x0688;\n t.ddalfinalarabic = 0xfb89;\n t.dddhadeva = 0x095c;\n t.ddhabengali = 0x09a2;\n t.ddhadeva = 0x0922;\n t.ddhagujarati = 0x0aa2;\n t.ddhagurmukhi = 0x0a22;\n t.ddotaccent = 0x1e0b;\n t.ddotbelow = 0x1e0d;\n t.decimalseparatorarabic = 0x066b;\n t.decimalseparatorpersian = 0x066b;\n t.decyrillic = 0x0434;\n t.degree = 0x00b0;\n t.dehihebrew = 0x05ad;\n t.dehiragana = 0x3067;\n t.deicoptic = 0x03ef;\n t.dekatakana = 0x30c7;\n t.deleteleft = 0x232b;\n t.deleteright = 0x2326;\n t.delta = 0x03b4;\n t.deltaturned = 0x018d;\n t.denominatorminusonenumeratorbengali = 0x09f8;\n t.dezh = 0x02a4;\n t.dhabengali = 0x09a7;\n t.dhadeva = 0x0927;\n t.dhagujarati = 0x0aa7;\n t.dhagurmukhi = 0x0a27;\n t.dhook = 0x0257;\n t.dialytikatonos = 0x0385;\n t.dialytikatonoscmb = 0x0344;\n t.diamond = 0x2666;\n t.diamondsuitwhite = 0x2662;\n t.dieresis = 0x00a8;\n t.dieresisacute = 0xf6d7;\n t.dieresisbelowcmb = 0x0324;\n t.dieresiscmb = 0x0308;\n t.dieresisgrave = 0xf6d8;\n t.dieresistonos = 0x0385;\n t.dihiragana = 0x3062;\n t.dikatakana = 0x30c2;\n t.dittomark = 0x3003;\n t.divide = 0x00f7;\n t.divides = 0x2223;\n t.divisionslash = 0x2215;\n t.djecyrillic = 0x0452;\n t.dkshade = 0x2593;\n t.dlinebelow = 0x1e0f;\n t.dlsquare = 0x3397;\n t.dmacron = 0x0111;\n t.dmonospace = 0xff44;\n t.dnblock = 0x2584;\n t.dochadathai = 0x0e0e;\n t.dodekthai = 0x0e14;\n t.dohiragana = 0x3069;\n t.dokatakana = 0x30c9;\n t.dollar = 0x0024;\n t.dollarinferior = 0xf6e3;\n t.dollarmonospace = 0xff04;\n t.dollaroldstyle = 0xf724;\n t.dollarsmall = 0xfe69;\n t.dollarsuperior = 0xf6e4;\n t.dong = 0x20ab;\n t.dorusquare = 0x3326;\n t.dotaccent = 0x02d9;\n t.dotaccentcmb = 0x0307;\n t.dotbelowcmb = 0x0323;\n t.dotbelowcomb = 0x0323;\n t.dotkatakana = 0x30fb;\n t.dotlessi = 0x0131;\n t.dotlessj = 0xf6be;\n t.dotlessjstrokehook = 0x0284;\n t.dotmath = 0x22c5;\n t.dottedcircle = 0x25cc;\n t.doubleyodpatah = 0xfb1f;\n t.doubleyodpatahhebrew = 0xfb1f;\n t.downtackbelowcmb = 0x031e;\n t.downtackmod = 0x02d5;\n t.dparen = 0x249f;\n t.dsuperior = 0xf6eb;\n t.dtail = 0x0256;\n t.dtopbar = 0x018c;\n t.duhiragana = 0x3065;\n t.dukatakana = 0x30c5;\n t.dz = 0x01f3;\n t.dzaltone = 0x02a3;\n t.dzcaron = 0x01c6;\n t.dzcurl = 0x02a5;\n t.dzeabkhasiancyrillic = 0x04e1;\n t.dzecyrillic = 0x0455;\n t.dzhecyrillic = 0x045f;\n t.e = 0x0065;\n t.eacute = 0x00e9;\n t.earth = 0x2641;\n t.ebengali = 0x098f;\n t.ebopomofo = 0x311c;\n t.ebreve = 0x0115;\n t.ecandradeva = 0x090d;\n t.ecandragujarati = 0x0a8d;\n t.ecandravowelsigndeva = 0x0945;\n t.ecandravowelsigngujarati = 0x0ac5;\n t.ecaron = 0x011b;\n t.ecedillabreve = 0x1e1d;\n t.echarmenian = 0x0565;\n t.echyiwnarmenian = 0x0587;\n t.ecircle = 0x24d4;\n t.ecircumflex = 0x00ea;\n t.ecircumflexacute = 0x1ebf;\n t.ecircumflexbelow = 0x1e19;\n t.ecircumflexdotbelow = 0x1ec7;\n t.ecircumflexgrave = 0x1ec1;\n t.ecircumflexhookabove = 0x1ec3;\n t.ecircumflextilde = 0x1ec5;\n t.ecyrillic = 0x0454;\n t.edblgrave = 0x0205;\n t.edeva = 0x090f;\n t.edieresis = 0x00eb;\n t.edot = 0x0117;\n t.edotaccent = 0x0117;\n t.edotbelow = 0x1eb9;\n t.eegurmukhi = 0x0a0f;\n t.eematragurmukhi = 0x0a47;\n t.efcyrillic = 0x0444;\n t.egrave = 0x00e8;\n t.egujarati = 0x0a8f;\n t.eharmenian = 0x0567;\n t.ehbopomofo = 0x311d;\n t.ehiragana = 0x3048;\n t.ehookabove = 0x1ebb;\n t.eibopomofo = 0x311f;\n t.eight = 0x0038;\n t.eightarabic = 0x0668;\n t.eightbengali = 0x09ee;\n t.eightcircle = 0x2467;\n t.eightcircleinversesansserif = 0x2791;\n t.eightdeva = 0x096e;\n t.eighteencircle = 0x2471;\n t.eighteenparen = 0x2485;\n t.eighteenperiod = 0x2499;\n t.eightgujarati = 0x0aee;\n t.eightgurmukhi = 0x0a6e;\n t.eighthackarabic = 0x0668;\n t.eighthangzhou = 0x3028;\n t.eighthnotebeamed = 0x266b;\n t.eightideographicparen = 0x3227;\n t.eightinferior = 0x2088;\n t.eightmonospace = 0xff18;\n t.eightoldstyle = 0xf738;\n t.eightparen = 0x247b;\n t.eightperiod = 0x248f;\n t.eightpersian = 0x06f8;\n t.eightroman = 0x2177;\n t.eightsuperior = 0x2078;\n t.eightthai = 0x0e58;\n t.einvertedbreve = 0x0207;\n t.eiotifiedcyrillic = 0x0465;\n t.ekatakana = 0x30a8;\n t.ekatakanahalfwidth = 0xff74;\n t.ekonkargurmukhi = 0x0a74;\n t.ekorean = 0x3154;\n t.elcyrillic = 0x043b;\n t.element = 0x2208;\n t.elevencircle = 0x246a;\n t.elevenparen = 0x247e;\n t.elevenperiod = 0x2492;\n t.elevenroman = 0x217a;\n t.ellipsis = 0x2026;\n t.ellipsisvertical = 0x22ee;\n t.emacron = 0x0113;\n t.emacronacute = 0x1e17;\n t.emacrongrave = 0x1e15;\n t.emcyrillic = 0x043c;\n t.emdash = 0x2014;\n t.emdashvertical = 0xfe31;\n t.emonospace = 0xff45;\n t.emphasismarkarmenian = 0x055b;\n t.emptyset = 0x2205;\n t.enbopomofo = 0x3123;\n t.encyrillic = 0x043d;\n t.endash = 0x2013;\n t.endashvertical = 0xfe32;\n t.endescendercyrillic = 0x04a3;\n t.eng = 0x014b;\n t.engbopomofo = 0x3125;\n t.enghecyrillic = 0x04a5;\n t.enhookcyrillic = 0x04c8;\n t.enspace = 0x2002;\n t.eogonek = 0x0119;\n t.eokorean = 0x3153;\n t.eopen = 0x025b;\n t.eopenclosed = 0x029a;\n t.eopenreversed = 0x025c;\n t.eopenreversedclosed = 0x025e;\n t.eopenreversedhook = 0x025d;\n t.eparen = 0x24a0;\n t.epsilon = 0x03b5;\n t.epsilontonos = 0x03ad;\n t.equal = 0x003d;\n t.equalmonospace = 0xff1d;\n t.equalsmall = 0xfe66;\n t.equalsuperior = 0x207c;\n t.equivalence = 0x2261;\n t.erbopomofo = 0x3126;\n t.ercyrillic = 0x0440;\n t.ereversed = 0x0258;\n t.ereversedcyrillic = 0x044d;\n t.escyrillic = 0x0441;\n t.esdescendercyrillic = 0x04ab;\n t.esh = 0x0283;\n t.eshcurl = 0x0286;\n t.eshortdeva = 0x090e;\n t.eshortvowelsigndeva = 0x0946;\n t.eshreversedloop = 0x01aa;\n t.eshsquatreversed = 0x0285;\n t.esmallhiragana = 0x3047;\n t.esmallkatakana = 0x30a7;\n t.esmallkatakanahalfwidth = 0xff6a;\n t.estimated = 0x212e;\n t.esuperior = 0xf6ec;\n t.eta = 0x03b7;\n t.etarmenian = 0x0568;\n t.etatonos = 0x03ae;\n t.eth = 0x00f0;\n t.etilde = 0x1ebd;\n t.etildebelow = 0x1e1b;\n t.etnahtafoukhhebrew = 0x0591;\n t.etnahtafoukhlefthebrew = 0x0591;\n t.etnahtahebrew = 0x0591;\n t.etnahtalefthebrew = 0x0591;\n t.eturned = 0x01dd;\n t.eukorean = 0x3161;\n t.euro = 0x20ac;\n t.evowelsignbengali = 0x09c7;\n t.evowelsigndeva = 0x0947;\n t.evowelsigngujarati = 0x0ac7;\n t.exclam = 0x0021;\n t.exclamarmenian = 0x055c;\n t.exclamdbl = 0x203c;\n t.exclamdown = 0x00a1;\n t.exclamdownsmall = 0xf7a1;\n t.exclammonospace = 0xff01;\n t.exclamsmall = 0xf721;\n t.existential = 0x2203;\n t.ezh = 0x0292;\n t.ezhcaron = 0x01ef;\n t.ezhcurl = 0x0293;\n t.ezhreversed = 0x01b9;\n t.ezhtail = 0x01ba;\n t.f = 0x0066;\n t.fadeva = 0x095e;\n t.fagurmukhi = 0x0a5e;\n t.fahrenheit = 0x2109;\n t.fathaarabic = 0x064e;\n t.fathalowarabic = 0x064e;\n t.fathatanarabic = 0x064b;\n t.fbopomofo = 0x3108;\n t.fcircle = 0x24d5;\n t.fdotaccent = 0x1e1f;\n t.feharabic = 0x0641;\n t.feharmenian = 0x0586;\n t.fehfinalarabic = 0xfed2;\n t.fehinitialarabic = 0xfed3;\n t.fehmedialarabic = 0xfed4;\n t.feicoptic = 0x03e5;\n t.female = 0x2640;\n t.ff = 0xfb00;\n t.f_f = 0xfb00;\n t.ffi = 0xfb03;\n t.ffl = 0xfb04;\n t.fi = 0xfb01;\n t.fifteencircle = 0x246e;\n t.fifteenparen = 0x2482;\n t.fifteenperiod = 0x2496;\n t.figuredash = 0x2012;\n t.filledbox = 0x25a0;\n t.filledrect = 0x25ac;\n t.finalkaf = 0x05da;\n t.finalkafdagesh = 0xfb3a;\n t.finalkafdageshhebrew = 0xfb3a;\n t.finalkafhebrew = 0x05da;\n t.finalmem = 0x05dd;\n t.finalmemhebrew = 0x05dd;\n t.finalnun = 0x05df;\n t.finalnunhebrew = 0x05df;\n t.finalpe = 0x05e3;\n t.finalpehebrew = 0x05e3;\n t.finaltsadi = 0x05e5;\n t.finaltsadihebrew = 0x05e5;\n t.firsttonechinese = 0x02c9;\n t.fisheye = 0x25c9;\n t.fitacyrillic = 0x0473;\n t.five = 0x0035;\n t.fivearabic = 0x0665;\n t.fivebengali = 0x09eb;\n t.fivecircle = 0x2464;\n t.fivecircleinversesansserif = 0x278e;\n t.fivedeva = 0x096b;\n t.fiveeighths = 0x215d;\n t.fivegujarati = 0x0aeb;\n t.fivegurmukhi = 0x0a6b;\n t.fivehackarabic = 0x0665;\n t.fivehangzhou = 0x3025;\n t.fiveideographicparen = 0x3224;\n t.fiveinferior = 0x2085;\n t.fivemonospace = 0xff15;\n t.fiveoldstyle = 0xf735;\n t.fiveparen = 0x2478;\n t.fiveperiod = 0x248c;\n t.fivepersian = 0x06f5;\n t.fiveroman = 0x2174;\n t.fivesuperior = 0x2075;\n t.fivethai = 0x0e55;\n t.fl = 0xfb02;\n t.florin = 0x0192;\n t.fmonospace = 0xff46;\n t.fmsquare = 0x3399;\n t.fofanthai = 0x0e1f;\n t.fofathai = 0x0e1d;\n t.fongmanthai = 0x0e4f;\n t.forall = 0x2200;\n t.four = 0x0034;\n t.fourarabic = 0x0664;\n t.fourbengali = 0x09ea;\n t.fourcircle = 0x2463;\n t.fourcircleinversesansserif = 0x278d;\n t.fourdeva = 0x096a;\n t.fourgujarati = 0x0aea;\n t.fourgurmukhi = 0x0a6a;\n t.fourhackarabic = 0x0664;\n t.fourhangzhou = 0x3024;\n t.fourideographicparen = 0x3223;\n t.fourinferior = 0x2084;\n t.fourmonospace = 0xff14;\n t.fournumeratorbengali = 0x09f7;\n t.fouroldstyle = 0xf734;\n t.fourparen = 0x2477;\n t.fourperiod = 0x248b;\n t.fourpersian = 0x06f4;\n t.fourroman = 0x2173;\n t.foursuperior = 0x2074;\n t.fourteencircle = 0x246d;\n t.fourteenparen = 0x2481;\n t.fourteenperiod = 0x2495;\n t.fourthai = 0x0e54;\n t.fourthtonechinese = 0x02cb;\n t.fparen = 0x24a1;\n t.fraction = 0x2044;\n t.franc = 0x20a3;\n t.g = 0x0067;\n t.gabengali = 0x0997;\n t.gacute = 0x01f5;\n t.gadeva = 0x0917;\n t.gafarabic = 0x06af;\n t.gaffinalarabic = 0xfb93;\n t.gafinitialarabic = 0xfb94;\n t.gafmedialarabic = 0xfb95;\n t.gagujarati = 0x0a97;\n t.gagurmukhi = 0x0a17;\n t.gahiragana = 0x304c;\n t.gakatakana = 0x30ac;\n t.gamma = 0x03b3;\n t.gammalatinsmall = 0x0263;\n t.gammasuperior = 0x02e0;\n t.gangiacoptic = 0x03eb;\n t.gbopomofo = 0x310d;\n t.gbreve = 0x011f;\n t.gcaron = 0x01e7;\n t.gcedilla = 0x0123;\n t.gcircle = 0x24d6;\n t.gcircumflex = 0x011d;\n t.gcommaaccent = 0x0123;\n t.gdot = 0x0121;\n t.gdotaccent = 0x0121;\n t.gecyrillic = 0x0433;\n t.gehiragana = 0x3052;\n t.gekatakana = 0x30b2;\n t.geometricallyequal = 0x2251;\n t.gereshaccenthebrew = 0x059c;\n t.gereshhebrew = 0x05f3;\n t.gereshmuqdamhebrew = 0x059d;\n t.germandbls = 0x00df;\n t.gershayimaccenthebrew = 0x059e;\n t.gershayimhebrew = 0x05f4;\n t.getamark = 0x3013;\n t.ghabengali = 0x0998;\n t.ghadarmenian = 0x0572;\n t.ghadeva = 0x0918;\n t.ghagujarati = 0x0a98;\n t.ghagurmukhi = 0x0a18;\n t.ghainarabic = 0x063a;\n t.ghainfinalarabic = 0xfece;\n t.ghaininitialarabic = 0xfecf;\n t.ghainmedialarabic = 0xfed0;\n t.ghemiddlehookcyrillic = 0x0495;\n t.ghestrokecyrillic = 0x0493;\n t.gheupturncyrillic = 0x0491;\n t.ghhadeva = 0x095a;\n t.ghhagurmukhi = 0x0a5a;\n t.ghook = 0x0260;\n t.ghzsquare = 0x3393;\n t.gihiragana = 0x304e;\n t.gikatakana = 0x30ae;\n t.gimarmenian = 0x0563;\n t.gimel = 0x05d2;\n t.gimeldagesh = 0xfb32;\n t.gimeldageshhebrew = 0xfb32;\n t.gimelhebrew = 0x05d2;\n t.gjecyrillic = 0x0453;\n t.glottalinvertedstroke = 0x01be;\n t.glottalstop = 0x0294;\n t.glottalstopinverted = 0x0296;\n t.glottalstopmod = 0x02c0;\n t.glottalstopreversed = 0x0295;\n t.glottalstopreversedmod = 0x02c1;\n t.glottalstopreversedsuperior = 0x02e4;\n t.glottalstopstroke = 0x02a1;\n t.glottalstopstrokereversed = 0x02a2;\n t.gmacron = 0x1e21;\n t.gmonospace = 0xff47;\n t.gohiragana = 0x3054;\n t.gokatakana = 0x30b4;\n t.gparen = 0x24a2;\n t.gpasquare = 0x33ac;\n t.gradient = 0x2207;\n t.grave = 0x0060;\n t.gravebelowcmb = 0x0316;\n t.gravecmb = 0x0300;\n t.gravecomb = 0x0300;\n t.gravedeva = 0x0953;\n t.gravelowmod = 0x02ce;\n t.gravemonospace = 0xff40;\n t.gravetonecmb = 0x0340;\n t.greater = 0x003e;\n t.greaterequal = 0x2265;\n t.greaterequalorless = 0x22db;\n t.greatermonospace = 0xff1e;\n t.greaterorequivalent = 0x2273;\n t.greaterorless = 0x2277;\n t.greateroverequal = 0x2267;\n t.greatersmall = 0xfe65;\n t.gscript = 0x0261;\n t.gstroke = 0x01e5;\n t.guhiragana = 0x3050;\n t.guillemotleft = 0x00ab;\n t.guillemotright = 0x00bb;\n t.guilsinglleft = 0x2039;\n t.guilsinglright = 0x203a;\n t.gukatakana = 0x30b0;\n t.guramusquare = 0x3318;\n t.gysquare = 0x33c9;\n t.h = 0x0068;\n t.haabkhasiancyrillic = 0x04a9;\n t.haaltonearabic = 0x06c1;\n t.habengali = 0x09b9;\n t.hadescendercyrillic = 0x04b3;\n t.hadeva = 0x0939;\n t.hagujarati = 0x0ab9;\n t.hagurmukhi = 0x0a39;\n t.haharabic = 0x062d;\n t.hahfinalarabic = 0xfea2;\n t.hahinitialarabic = 0xfea3;\n t.hahiragana = 0x306f;\n t.hahmedialarabic = 0xfea4;\n t.haitusquare = 0x332a;\n t.hakatakana = 0x30cf;\n t.hakatakanahalfwidth = 0xff8a;\n t.halantgurmukhi = 0x0a4d;\n t.hamzaarabic = 0x0621;\n t.hamzalowarabic = 0x0621;\n t.hangulfiller = 0x3164;\n t.hardsigncyrillic = 0x044a;\n t.harpoonleftbarbup = 0x21bc;\n t.harpoonrightbarbup = 0x21c0;\n t.hasquare = 0x33ca;\n t.hatafpatah = 0x05b2;\n t.hatafpatah16 = 0x05b2;\n t.hatafpatah23 = 0x05b2;\n t.hatafpatah2f = 0x05b2;\n t.hatafpatahhebrew = 0x05b2;\n t.hatafpatahnarrowhebrew = 0x05b2;\n t.hatafpatahquarterhebrew = 0x05b2;\n t.hatafpatahwidehebrew = 0x05b2;\n t.hatafqamats = 0x05b3;\n t.hatafqamats1b = 0x05b3;\n t.hatafqamats28 = 0x05b3;\n t.hatafqamats34 = 0x05b3;\n t.hatafqamatshebrew = 0x05b3;\n t.hatafqamatsnarrowhebrew = 0x05b3;\n t.hatafqamatsquarterhebrew = 0x05b3;\n t.hatafqamatswidehebrew = 0x05b3;\n t.hatafsegol = 0x05b1;\n t.hatafsegol17 = 0x05b1;\n t.hatafsegol24 = 0x05b1;\n t.hatafsegol30 = 0x05b1;\n t.hatafsegolhebrew = 0x05b1;\n t.hatafsegolnarrowhebrew = 0x05b1;\n t.hatafsegolquarterhebrew = 0x05b1;\n t.hatafsegolwidehebrew = 0x05b1;\n t.hbar = 0x0127;\n t.hbopomofo = 0x310f;\n t.hbrevebelow = 0x1e2b;\n t.hcedilla = 0x1e29;\n t.hcircle = 0x24d7;\n t.hcircumflex = 0x0125;\n t.hdieresis = 0x1e27;\n t.hdotaccent = 0x1e23;\n t.hdotbelow = 0x1e25;\n t.he = 0x05d4;\n t.heart = 0x2665;\n t.heartsuitblack = 0x2665;\n t.heartsuitwhite = 0x2661;\n t.hedagesh = 0xfb34;\n t.hedageshhebrew = 0xfb34;\n t.hehaltonearabic = 0x06c1;\n t.heharabic = 0x0647;\n t.hehebrew = 0x05d4;\n t.hehfinalaltonearabic = 0xfba7;\n t.hehfinalalttwoarabic = 0xfeea;\n t.hehfinalarabic = 0xfeea;\n t.hehhamzaabovefinalarabic = 0xfba5;\n t.hehhamzaaboveisolatedarabic = 0xfba4;\n t.hehinitialaltonearabic = 0xfba8;\n t.hehinitialarabic = 0xfeeb;\n t.hehiragana = 0x3078;\n t.hehmedialaltonearabic = 0xfba9;\n t.hehmedialarabic = 0xfeec;\n t.heiseierasquare = 0x337b;\n t.hekatakana = 0x30d8;\n t.hekatakanahalfwidth = 0xff8d;\n t.hekutaarusquare = 0x3336;\n t.henghook = 0x0267;\n t.herutusquare = 0x3339;\n t.het = 0x05d7;\n t.hethebrew = 0x05d7;\n t.hhook = 0x0266;\n t.hhooksuperior = 0x02b1;\n t.hieuhacirclekorean = 0x327b;\n t.hieuhaparenkorean = 0x321b;\n t.hieuhcirclekorean = 0x326d;\n t.hieuhkorean = 0x314e;\n t.hieuhparenkorean = 0x320d;\n t.hihiragana = 0x3072;\n t.hikatakana = 0x30d2;\n t.hikatakanahalfwidth = 0xff8b;\n t.hiriq = 0x05b4;\n t.hiriq14 = 0x05b4;\n t.hiriq21 = 0x05b4;\n t.hiriq2d = 0x05b4;\n t.hiriqhebrew = 0x05b4;\n t.hiriqnarrowhebrew = 0x05b4;\n t.hiriqquarterhebrew = 0x05b4;\n t.hiriqwidehebrew = 0x05b4;\n t.hlinebelow = 0x1e96;\n t.hmonospace = 0xff48;\n t.hoarmenian = 0x0570;\n t.hohipthai = 0x0e2b;\n t.hohiragana = 0x307b;\n t.hokatakana = 0x30db;\n t.hokatakanahalfwidth = 0xff8e;\n t.holam = 0x05b9;\n t.holam19 = 0x05b9;\n t.holam26 = 0x05b9;\n t.holam32 = 0x05b9;\n t.holamhebrew = 0x05b9;\n t.holamnarrowhebrew = 0x05b9;\n t.holamquarterhebrew = 0x05b9;\n t.holamwidehebrew = 0x05b9;\n t.honokhukthai = 0x0e2e;\n t.hookabovecomb = 0x0309;\n t.hookcmb = 0x0309;\n t.hookpalatalizedbelowcmb = 0x0321;\n t.hookretroflexbelowcmb = 0x0322;\n t.hoonsquare = 0x3342;\n t.horicoptic = 0x03e9;\n t.horizontalbar = 0x2015;\n t.horncmb = 0x031b;\n t.hotsprings = 0x2668;\n t.house = 0x2302;\n t.hparen = 0x24a3;\n t.hsuperior = 0x02b0;\n t.hturned = 0x0265;\n t.huhiragana = 0x3075;\n t.huiitosquare = 0x3333;\n t.hukatakana = 0x30d5;\n t.hukatakanahalfwidth = 0xff8c;\n t.hungarumlaut = 0x02dd;\n t.hungarumlautcmb = 0x030b;\n t.hv = 0x0195;\n t.hyphen = 0x002d;\n t.hypheninferior = 0xf6e5;\n t.hyphenmonospace = 0xff0d;\n t.hyphensmall = 0xfe63;\n t.hyphensuperior = 0xf6e6;\n t.hyphentwo = 0x2010;\n t.i = 0x0069;\n t.iacute = 0x00ed;\n t.iacyrillic = 0x044f;\n t.ibengali = 0x0987;\n t.ibopomofo = 0x3127;\n t.ibreve = 0x012d;\n t.icaron = 0x01d0;\n t.icircle = 0x24d8;\n t.icircumflex = 0x00ee;\n t.icyrillic = 0x0456;\n t.idblgrave = 0x0209;\n t.ideographearthcircle = 0x328f;\n t.ideographfirecircle = 0x328b;\n t.ideographicallianceparen = 0x323f;\n t.ideographiccallparen = 0x323a;\n t.ideographiccentrecircle = 0x32a5;\n t.ideographicclose = 0x3006;\n t.ideographiccomma = 0x3001;\n t.ideographiccommaleft = 0xff64;\n t.ideographiccongratulationparen = 0x3237;\n t.ideographiccorrectcircle = 0x32a3;\n t.ideographicearthparen = 0x322f;\n t.ideographicenterpriseparen = 0x323d;\n t.ideographicexcellentcircle = 0x329d;\n t.ideographicfestivalparen = 0x3240;\n t.ideographicfinancialcircle = 0x3296;\n t.ideographicfinancialparen = 0x3236;\n t.ideographicfireparen = 0x322b;\n t.ideographichaveparen = 0x3232;\n t.ideographichighcircle = 0x32a4;\n t.ideographiciterationmark = 0x3005;\n t.ideographiclaborcircle = 0x3298;\n t.ideographiclaborparen = 0x3238;\n t.ideographicleftcircle = 0x32a7;\n t.ideographiclowcircle = 0x32a6;\n t.ideographicmedicinecircle = 0x32a9;\n t.ideographicmetalparen = 0x322e;\n t.ideographicmoonparen = 0x322a;\n t.ideographicnameparen = 0x3234;\n t.ideographicperiod = 0x3002;\n t.ideographicprintcircle = 0x329e;\n t.ideographicreachparen = 0x3243;\n t.ideographicrepresentparen = 0x3239;\n t.ideographicresourceparen = 0x323e;\n t.ideographicrightcircle = 0x32a8;\n t.ideographicsecretcircle = 0x3299;\n t.ideographicselfparen = 0x3242;\n t.ideographicsocietyparen = 0x3233;\n t.ideographicspace = 0x3000;\n t.ideographicspecialparen = 0x3235;\n t.ideographicstockparen = 0x3231;\n t.ideographicstudyparen = 0x323b;\n t.ideographicsunparen = 0x3230;\n t.ideographicsuperviseparen = 0x323c;\n t.ideographicwaterparen = 0x322c;\n t.ideographicwoodparen = 0x322d;\n t.ideographiczero = 0x3007;\n t.ideographmetalcircle = 0x328e;\n t.ideographmooncircle = 0x328a;\n t.ideographnamecircle = 0x3294;\n t.ideographsuncircle = 0x3290;\n t.ideographwatercircle = 0x328c;\n t.ideographwoodcircle = 0x328d;\n t.ideva = 0x0907;\n t.idieresis = 0x00ef;\n t.idieresisacute = 0x1e2f;\n t.idieresiscyrillic = 0x04e5;\n t.idotbelow = 0x1ecb;\n t.iebrevecyrillic = 0x04d7;\n t.iecyrillic = 0x0435;\n t.ieungacirclekorean = 0x3275;\n t.ieungaparenkorean = 0x3215;\n t.ieungcirclekorean = 0x3267;\n t.ieungkorean = 0x3147;\n t.ieungparenkorean = 0x3207;\n t.igrave = 0x00ec;\n t.igujarati = 0x0a87;\n t.igurmukhi = 0x0a07;\n t.ihiragana = 0x3044;\n t.ihookabove = 0x1ec9;\n t.iibengali = 0x0988;\n t.iicyrillic = 0x0438;\n t.iideva = 0x0908;\n t.iigujarati = 0x0a88;\n t.iigurmukhi = 0x0a08;\n t.iimatragurmukhi = 0x0a40;\n t.iinvertedbreve = 0x020b;\n t.iishortcyrillic = 0x0439;\n t.iivowelsignbengali = 0x09c0;\n t.iivowelsigndeva = 0x0940;\n t.iivowelsigngujarati = 0x0ac0;\n t.ij = 0x0133;\n t.ikatakana = 0x30a4;\n t.ikatakanahalfwidth = 0xff72;\n t.ikorean = 0x3163;\n t.ilde = 0x02dc;\n t.iluyhebrew = 0x05ac;\n t.imacron = 0x012b;\n t.imacroncyrillic = 0x04e3;\n t.imageorapproximatelyequal = 0x2253;\n t.imatragurmukhi = 0x0a3f;\n t.imonospace = 0xff49;\n t.increment = 0x2206;\n t.infinity = 0x221e;\n t.iniarmenian = 0x056b;\n t.integral = 0x222b;\n t.integralbottom = 0x2321;\n t.integralbt = 0x2321;\n t.integralex = 0xf8f5;\n t.integraltop = 0x2320;\n t.integraltp = 0x2320;\n t.intersection = 0x2229;\n t.intisquare = 0x3305;\n t.invbullet = 0x25d8;\n t.invcircle = 0x25d9;\n t.invsmileface = 0x263b;\n t.iocyrillic = 0x0451;\n t.iogonek = 0x012f;\n t.iota = 0x03b9;\n t.iotadieresis = 0x03ca;\n t.iotadieresistonos = 0x0390;\n t.iotalatin = 0x0269;\n t.iotatonos = 0x03af;\n t.iparen = 0x24a4;\n t.irigurmukhi = 0x0a72;\n t.ismallhiragana = 0x3043;\n t.ismallkatakana = 0x30a3;\n t.ismallkatakanahalfwidth = 0xff68;\n t.issharbengali = 0x09fa;\n t.istroke = 0x0268;\n t.isuperior = 0xf6ed;\n t.iterationhiragana = 0x309d;\n t.iterationkatakana = 0x30fd;\n t.itilde = 0x0129;\n t.itildebelow = 0x1e2d;\n t.iubopomofo = 0x3129;\n t.iucyrillic = 0x044e;\n t.ivowelsignbengali = 0x09bf;\n t.ivowelsigndeva = 0x093f;\n t.ivowelsigngujarati = 0x0abf;\n t.izhitsacyrillic = 0x0475;\n t.izhitsadblgravecyrillic = 0x0477;\n t.j = 0x006a;\n t.jaarmenian = 0x0571;\n t.jabengali = 0x099c;\n t.jadeva = 0x091c;\n t.jagujarati = 0x0a9c;\n t.jagurmukhi = 0x0a1c;\n t.jbopomofo = 0x3110;\n t.jcaron = 0x01f0;\n t.jcircle = 0x24d9;\n t.jcircumflex = 0x0135;\n t.jcrossedtail = 0x029d;\n t.jdotlessstroke = 0x025f;\n t.jecyrillic = 0x0458;\n t.jeemarabic = 0x062c;\n t.jeemfinalarabic = 0xfe9e;\n t.jeeminitialarabic = 0xfe9f;\n t.jeemmedialarabic = 0xfea0;\n t.jeharabic = 0x0698;\n t.jehfinalarabic = 0xfb8b;\n t.jhabengali = 0x099d;\n t.jhadeva = 0x091d;\n t.jhagujarati = 0x0a9d;\n t.jhagurmukhi = 0x0a1d;\n t.jheharmenian = 0x057b;\n t.jis = 0x3004;\n t.jmonospace = 0xff4a;\n t.jparen = 0x24a5;\n t.jsuperior = 0x02b2;\n t.k = 0x006b;\n t.kabashkircyrillic = 0x04a1;\n t.kabengali = 0x0995;\n t.kacute = 0x1e31;\n t.kacyrillic = 0x043a;\n t.kadescendercyrillic = 0x049b;\n t.kadeva = 0x0915;\n t.kaf = 0x05db;\n t.kafarabic = 0x0643;\n t.kafdagesh = 0xfb3b;\n t.kafdageshhebrew = 0xfb3b;\n t.kaffinalarabic = 0xfeda;\n t.kafhebrew = 0x05db;\n t.kafinitialarabic = 0xfedb;\n t.kafmedialarabic = 0xfedc;\n t.kafrafehebrew = 0xfb4d;\n t.kagujarati = 0x0a95;\n t.kagurmukhi = 0x0a15;\n t.kahiragana = 0x304b;\n t.kahookcyrillic = 0x04c4;\n t.kakatakana = 0x30ab;\n t.kakatakanahalfwidth = 0xff76;\n t.kappa = 0x03ba;\n t.kappasymbolgreek = 0x03f0;\n t.kapyeounmieumkorean = 0x3171;\n t.kapyeounphieuphkorean = 0x3184;\n t.kapyeounpieupkorean = 0x3178;\n t.kapyeounssangpieupkorean = 0x3179;\n t.karoriisquare = 0x330d;\n t.kashidaautoarabic = 0x0640;\n t.kashidaautonosidebearingarabic = 0x0640;\n t.kasmallkatakana = 0x30f5;\n t.kasquare = 0x3384;\n t.kasraarabic = 0x0650;\n t.kasratanarabic = 0x064d;\n t.kastrokecyrillic = 0x049f;\n t.katahiraprolongmarkhalfwidth = 0xff70;\n t.kaverticalstrokecyrillic = 0x049d;\n t.kbopomofo = 0x310e;\n t.kcalsquare = 0x3389;\n t.kcaron = 0x01e9;\n t.kcedilla = 0x0137;\n t.kcircle = 0x24da;\n t.kcommaaccent = 0x0137;\n t.kdotbelow = 0x1e33;\n t.keharmenian = 0x0584;\n t.kehiragana = 0x3051;\n t.kekatakana = 0x30b1;\n t.kekatakanahalfwidth = 0xff79;\n t.kenarmenian = 0x056f;\n t.kesmallkatakana = 0x30f6;\n t.kgreenlandic = 0x0138;\n t.khabengali = 0x0996;\n t.khacyrillic = 0x0445;\n t.khadeva = 0x0916;\n t.khagujarati = 0x0a96;\n t.khagurmukhi = 0x0a16;\n t.khaharabic = 0x062e;\n t.khahfinalarabic = 0xfea6;\n t.khahinitialarabic = 0xfea7;\n t.khahmedialarabic = 0xfea8;\n t.kheicoptic = 0x03e7;\n t.khhadeva = 0x0959;\n t.khhagurmukhi = 0x0a59;\n t.khieukhacirclekorean = 0x3278;\n t.khieukhaparenkorean = 0x3218;\n t.khieukhcirclekorean = 0x326a;\n t.khieukhkorean = 0x314b;\n t.khieukhparenkorean = 0x320a;\n t.khokhaithai = 0x0e02;\n t.khokhonthai = 0x0e05;\n t.khokhuatthai = 0x0e03;\n t.khokhwaithai = 0x0e04;\n t.khomutthai = 0x0e5b;\n t.khook = 0x0199;\n t.khorakhangthai = 0x0e06;\n t.khzsquare = 0x3391;\n t.kihiragana = 0x304d;\n t.kikatakana = 0x30ad;\n t.kikatakanahalfwidth = 0xff77;\n t.kiroguramusquare = 0x3315;\n t.kiromeetorusquare = 0x3316;\n t.kirosquare = 0x3314;\n t.kiyeokacirclekorean = 0x326e;\n t.kiyeokaparenkorean = 0x320e;\n t.kiyeokcirclekorean = 0x3260;\n t.kiyeokkorean = 0x3131;\n t.kiyeokparenkorean = 0x3200;\n t.kiyeoksioskorean = 0x3133;\n t.kjecyrillic = 0x045c;\n t.klinebelow = 0x1e35;\n t.klsquare = 0x3398;\n t.kmcubedsquare = 0x33a6;\n t.kmonospace = 0xff4b;\n t.kmsquaredsquare = 0x33a2;\n t.kohiragana = 0x3053;\n t.kohmsquare = 0x33c0;\n t.kokaithai = 0x0e01;\n t.kokatakana = 0x30b3;\n t.kokatakanahalfwidth = 0xff7a;\n t.kooposquare = 0x331e;\n t.koppacyrillic = 0x0481;\n t.koreanstandardsymbol = 0x327f;\n t.koroniscmb = 0x0343;\n t.kparen = 0x24a6;\n t.kpasquare = 0x33aa;\n t.ksicyrillic = 0x046f;\n t.ktsquare = 0x33cf;\n t.kturned = 0x029e;\n t.kuhiragana = 0x304f;\n t.kukatakana = 0x30af;\n t.kukatakanahalfwidth = 0xff78;\n t.kvsquare = 0x33b8;\n t.kwsquare = 0x33be;\n t.l = 0x006c;\n t.labengali = 0x09b2;\n t.lacute = 0x013a;\n t.ladeva = 0x0932;\n t.lagujarati = 0x0ab2;\n t.lagurmukhi = 0x0a32;\n t.lakkhangyaothai = 0x0e45;\n t.lamaleffinalarabic = 0xfefc;\n t.lamalefhamzaabovefinalarabic = 0xfef8;\n t.lamalefhamzaaboveisolatedarabic = 0xfef7;\n t.lamalefhamzabelowfinalarabic = 0xfefa;\n t.lamalefhamzabelowisolatedarabic = 0xfef9;\n t.lamalefisolatedarabic = 0xfefb;\n t.lamalefmaddaabovefinalarabic = 0xfef6;\n t.lamalefmaddaaboveisolatedarabic = 0xfef5;\n t.lamarabic = 0x0644;\n t.lambda = 0x03bb;\n t.lambdastroke = 0x019b;\n t.lamed = 0x05dc;\n t.lameddagesh = 0xfb3c;\n t.lameddageshhebrew = 0xfb3c;\n t.lamedhebrew = 0x05dc;\n t.lamfinalarabic = 0xfede;\n t.lamhahinitialarabic = 0xfcca;\n t.laminitialarabic = 0xfedf;\n t.lamjeeminitialarabic = 0xfcc9;\n t.lamkhahinitialarabic = 0xfccb;\n t.lamlamhehisolatedarabic = 0xfdf2;\n t.lammedialarabic = 0xfee0;\n t.lammeemhahinitialarabic = 0xfd88;\n t.lammeeminitialarabic = 0xfccc;\n t.largecircle = 0x25ef;\n t.lbar = 0x019a;\n t.lbelt = 0x026c;\n t.lbopomofo = 0x310c;\n t.lcaron = 0x013e;\n t.lcedilla = 0x013c;\n t.lcircle = 0x24db;\n t.lcircumflexbelow = 0x1e3d;\n t.lcommaaccent = 0x013c;\n t.ldot = 0x0140;\n t.ldotaccent = 0x0140;\n t.ldotbelow = 0x1e37;\n t.ldotbelowmacron = 0x1e39;\n t.leftangleabovecmb = 0x031a;\n t.lefttackbelowcmb = 0x0318;\n t.less = 0x003c;\n t.lessequal = 0x2264;\n t.lessequalorgreater = 0x22da;\n t.lessmonospace = 0xff1c;\n t.lessorequivalent = 0x2272;\n t.lessorgreater = 0x2276;\n t.lessoverequal = 0x2266;\n t.lesssmall = 0xfe64;\n t.lezh = 0x026e;\n t.lfblock = 0x258c;\n t.lhookretroflex = 0x026d;\n t.lira = 0x20a4;\n t.liwnarmenian = 0x056c;\n t.lj = 0x01c9;\n t.ljecyrillic = 0x0459;\n t.ll = 0xf6c0;\n t.lladeva = 0x0933;\n t.llagujarati = 0x0ab3;\n t.llinebelow = 0x1e3b;\n t.llladeva = 0x0934;\n t.llvocalicbengali = 0x09e1;\n t.llvocalicdeva = 0x0961;\n t.llvocalicvowelsignbengali = 0x09e3;\n t.llvocalicvowelsigndeva = 0x0963;\n t.lmiddletilde = 0x026b;\n t.lmonospace = 0xff4c;\n t.lmsquare = 0x33d0;\n t.lochulathai = 0x0e2c;\n t.logicaland = 0x2227;\n t.logicalnot = 0x00ac;\n t.logicalnotreversed = 0x2310;\n t.logicalor = 0x2228;\n t.lolingthai = 0x0e25;\n t.longs = 0x017f;\n t.lowlinecenterline = 0xfe4e;\n t.lowlinecmb = 0x0332;\n t.lowlinedashed = 0xfe4d;\n t.lozenge = 0x25ca;\n t.lparen = 0x24a7;\n t.lslash = 0x0142;\n t.lsquare = 0x2113;\n t.lsuperior = 0xf6ee;\n t.ltshade = 0x2591;\n t.luthai = 0x0e26;\n t.lvocalicbengali = 0x098c;\n t.lvocalicdeva = 0x090c;\n t.lvocalicvowelsignbengali = 0x09e2;\n t.lvocalicvowelsigndeva = 0x0962;\n t.lxsquare = 0x33d3;\n t.m = 0x006d;\n t.mabengali = 0x09ae;\n t.macron = 0x00af;\n t.macronbelowcmb = 0x0331;\n t.macroncmb = 0x0304;\n t.macronlowmod = 0x02cd;\n t.macronmonospace = 0xffe3;\n t.macute = 0x1e3f;\n t.madeva = 0x092e;\n t.magujarati = 0x0aae;\n t.magurmukhi = 0x0a2e;\n t.mahapakhhebrew = 0x05a4;\n t.mahapakhlefthebrew = 0x05a4;\n t.mahiragana = 0x307e;\n t.maichattawalowleftthai = 0xf895;\n t.maichattawalowrightthai = 0xf894;\n t.maichattawathai = 0x0e4b;\n t.maichattawaupperleftthai = 0xf893;\n t.maieklowleftthai = 0xf88c;\n t.maieklowrightthai = 0xf88b;\n t.maiekthai = 0x0e48;\n t.maiekupperleftthai = 0xf88a;\n t.maihanakatleftthai = 0xf884;\n t.maihanakatthai = 0x0e31;\n t.maitaikhuleftthai = 0xf889;\n t.maitaikhuthai = 0x0e47;\n t.maitholowleftthai = 0xf88f;\n t.maitholowrightthai = 0xf88e;\n t.maithothai = 0x0e49;\n t.maithoupperleftthai = 0xf88d;\n t.maitrilowleftthai = 0xf892;\n t.maitrilowrightthai = 0xf891;\n t.maitrithai = 0x0e4a;\n t.maitriupperleftthai = 0xf890;\n t.maiyamokthai = 0x0e46;\n t.makatakana = 0x30de;\n t.makatakanahalfwidth = 0xff8f;\n t.male = 0x2642;\n t.mansyonsquare = 0x3347;\n t.maqafhebrew = 0x05be;\n t.mars = 0x2642;\n t.masoracirclehebrew = 0x05af;\n t.masquare = 0x3383;\n t.mbopomofo = 0x3107;\n t.mbsquare = 0x33d4;\n t.mcircle = 0x24dc;\n t.mcubedsquare = 0x33a5;\n t.mdotaccent = 0x1e41;\n t.mdotbelow = 0x1e43;\n t.meemarabic = 0x0645;\n t.meemfinalarabic = 0xfee2;\n t.meeminitialarabic = 0xfee3;\n t.meemmedialarabic = 0xfee4;\n t.meemmeeminitialarabic = 0xfcd1;\n t.meemmeemisolatedarabic = 0xfc48;\n t.meetorusquare = 0x334d;\n t.mehiragana = 0x3081;\n t.meizierasquare = 0x337e;\n t.mekatakana = 0x30e1;\n t.mekatakanahalfwidth = 0xff92;\n t.mem = 0x05de;\n t.memdagesh = 0xfb3e;\n t.memdageshhebrew = 0xfb3e;\n t.memhebrew = 0x05de;\n t.menarmenian = 0x0574;\n t.merkhahebrew = 0x05a5;\n t.merkhakefulahebrew = 0x05a6;\n t.merkhakefulalefthebrew = 0x05a6;\n t.merkhalefthebrew = 0x05a5;\n t.mhook = 0x0271;\n t.mhzsquare = 0x3392;\n t.middledotkatakanahalfwidth = 0xff65;\n t.middot = 0x00b7;\n t.mieumacirclekorean = 0x3272;\n t.mieumaparenkorean = 0x3212;\n t.mieumcirclekorean = 0x3264;\n t.mieumkorean = 0x3141;\n t.mieumpansioskorean = 0x3170;\n t.mieumparenkorean = 0x3204;\n t.mieumpieupkorean = 0x316e;\n t.mieumsioskorean = 0x316f;\n t.mihiragana = 0x307f;\n t.mikatakana = 0x30df;\n t.mikatakanahalfwidth = 0xff90;\n t.minus = 0x2212;\n t.minusbelowcmb = 0x0320;\n t.minuscircle = 0x2296;\n t.minusmod = 0x02d7;\n t.minusplus = 0x2213;\n t.minute = 0x2032;\n t.miribaarusquare = 0x334a;\n t.mirisquare = 0x3349;\n t.mlonglegturned = 0x0270;\n t.mlsquare = 0x3396;\n t.mmcubedsquare = 0x33a3;\n t.mmonospace = 0xff4d;\n t.mmsquaredsquare = 0x339f;\n t.mohiragana = 0x3082;\n t.mohmsquare = 0x33c1;\n t.mokatakana = 0x30e2;\n t.mokatakanahalfwidth = 0xff93;\n t.molsquare = 0x33d6;\n t.momathai = 0x0e21;\n t.moverssquare = 0x33a7;\n t.moverssquaredsquare = 0x33a8;\n t.mparen = 0x24a8;\n t.mpasquare = 0x33ab;\n t.mssquare = 0x33b3;\n t.msuperior = 0xf6ef;\n t.mturned = 0x026f;\n t.mu = 0x00b5;\n t.mu1 = 0x00b5;\n t.muasquare = 0x3382;\n t.muchgreater = 0x226b;\n t.muchless = 0x226a;\n t.mufsquare = 0x338c;\n t.mugreek = 0x03bc;\n t.mugsquare = 0x338d;\n t.muhiragana = 0x3080;\n t.mukatakana = 0x30e0;\n t.mukatakanahalfwidth = 0xff91;\n t.mulsquare = 0x3395;\n t.multiply = 0x00d7;\n t.mumsquare = 0x339b;\n t.munahhebrew = 0x05a3;\n t.munahlefthebrew = 0x05a3;\n t.musicalnote = 0x266a;\n t.musicalnotedbl = 0x266b;\n t.musicflatsign = 0x266d;\n t.musicsharpsign = 0x266f;\n t.mussquare = 0x33b2;\n t.muvsquare = 0x33b6;\n t.muwsquare = 0x33bc;\n t.mvmegasquare = 0x33b9;\n t.mvsquare = 0x33b7;\n t.mwmegasquare = 0x33bf;\n t.mwsquare = 0x33bd;\n t.n = 0x006e;\n t.nabengali = 0x09a8;\n t.nabla = 0x2207;\n t.nacute = 0x0144;\n t.nadeva = 0x0928;\n t.nagujarati = 0x0aa8;\n t.nagurmukhi = 0x0a28;\n t.nahiragana = 0x306a;\n t.nakatakana = 0x30ca;\n t.nakatakanahalfwidth = 0xff85;\n t.napostrophe = 0x0149;\n t.nasquare = 0x3381;\n t.nbopomofo = 0x310b;\n t.nbspace = 0x00a0;\n t.ncaron = 0x0148;\n t.ncedilla = 0x0146;\n t.ncircle = 0x24dd;\n t.ncircumflexbelow = 0x1e4b;\n t.ncommaaccent = 0x0146;\n t.ndotaccent = 0x1e45;\n t.ndotbelow = 0x1e47;\n t.nehiragana = 0x306d;\n t.nekatakana = 0x30cd;\n t.nekatakanahalfwidth = 0xff88;\n t.newsheqelsign = 0x20aa;\n t.nfsquare = 0x338b;\n t.ngabengali = 0x0999;\n t.ngadeva = 0x0919;\n t.ngagujarati = 0x0a99;\n t.ngagurmukhi = 0x0a19;\n t.ngonguthai = 0x0e07;\n t.nhiragana = 0x3093;\n t.nhookleft = 0x0272;\n t.nhookretroflex = 0x0273;\n t.nieunacirclekorean = 0x326f;\n t.nieunaparenkorean = 0x320f;\n t.nieuncieuckorean = 0x3135;\n t.nieuncirclekorean = 0x3261;\n t.nieunhieuhkorean = 0x3136;\n t.nieunkorean = 0x3134;\n t.nieunpansioskorean = 0x3168;\n t.nieunparenkorean = 0x3201;\n t.nieunsioskorean = 0x3167;\n t.nieuntikeutkorean = 0x3166;\n t.nihiragana = 0x306b;\n t.nikatakana = 0x30cb;\n t.nikatakanahalfwidth = 0xff86;\n t.nikhahitleftthai = 0xf899;\n t.nikhahitthai = 0x0e4d;\n t.nine = 0x0039;\n t.ninearabic = 0x0669;\n t.ninebengali = 0x09ef;\n t.ninecircle = 0x2468;\n t.ninecircleinversesansserif = 0x2792;\n t.ninedeva = 0x096f;\n t.ninegujarati = 0x0aef;\n t.ninegurmukhi = 0x0a6f;\n t.ninehackarabic = 0x0669;\n t.ninehangzhou = 0x3029;\n t.nineideographicparen = 0x3228;\n t.nineinferior = 0x2089;\n t.ninemonospace = 0xff19;\n t.nineoldstyle = 0xf739;\n t.nineparen = 0x247c;\n t.nineperiod = 0x2490;\n t.ninepersian = 0x06f9;\n t.nineroman = 0x2178;\n t.ninesuperior = 0x2079;\n t.nineteencircle = 0x2472;\n t.nineteenparen = 0x2486;\n t.nineteenperiod = 0x249a;\n t.ninethai = 0x0e59;\n t.nj = 0x01cc;\n t.njecyrillic = 0x045a;\n t.nkatakana = 0x30f3;\n t.nkatakanahalfwidth = 0xff9d;\n t.nlegrightlong = 0x019e;\n t.nlinebelow = 0x1e49;\n t.nmonospace = 0xff4e;\n t.nmsquare = 0x339a;\n t.nnabengali = 0x09a3;\n t.nnadeva = 0x0923;\n t.nnagujarati = 0x0aa3;\n t.nnagurmukhi = 0x0a23;\n t.nnnadeva = 0x0929;\n t.nohiragana = 0x306e;\n t.nokatakana = 0x30ce;\n t.nokatakanahalfwidth = 0xff89;\n t.nonbreakingspace = 0x00a0;\n t.nonenthai = 0x0e13;\n t.nonuthai = 0x0e19;\n t.noonarabic = 0x0646;\n t.noonfinalarabic = 0xfee6;\n t.noonghunnaarabic = 0x06ba;\n t.noonghunnafinalarabic = 0xfb9f;\n t.nooninitialarabic = 0xfee7;\n t.noonjeeminitialarabic = 0xfcd2;\n t.noonjeemisolatedarabic = 0xfc4b;\n t.noonmedialarabic = 0xfee8;\n t.noonmeeminitialarabic = 0xfcd5;\n t.noonmeemisolatedarabic = 0xfc4e;\n t.noonnoonfinalarabic = 0xfc8d;\n t.notcontains = 0x220c;\n t.notelement = 0x2209;\n t.notelementof = 0x2209;\n t.notequal = 0x2260;\n t.notgreater = 0x226f;\n t.notgreaternorequal = 0x2271;\n t.notgreaternorless = 0x2279;\n t.notidentical = 0x2262;\n t.notless = 0x226e;\n t.notlessnorequal = 0x2270;\n t.notparallel = 0x2226;\n t.notprecedes = 0x2280;\n t.notsubset = 0x2284;\n t.notsucceeds = 0x2281;\n t.notsuperset = 0x2285;\n t.nowarmenian = 0x0576;\n t.nparen = 0x24a9;\n t.nssquare = 0x33b1;\n t.nsuperior = 0x207f;\n t.ntilde = 0x00f1;\n t.nu = 0x03bd;\n t.nuhiragana = 0x306c;\n t.nukatakana = 0x30cc;\n t.nukatakanahalfwidth = 0xff87;\n t.nuktabengali = 0x09bc;\n t.nuktadeva = 0x093c;\n t.nuktagujarati = 0x0abc;\n t.nuktagurmukhi = 0x0a3c;\n t.numbersign = 0x0023;\n t.numbersignmonospace = 0xff03;\n t.numbersignsmall = 0xfe5f;\n t.numeralsigngreek = 0x0374;\n t.numeralsignlowergreek = 0x0375;\n t.numero = 0x2116;\n t.nun = 0x05e0;\n t.nundagesh = 0xfb40;\n t.nundageshhebrew = 0xfb40;\n t.nunhebrew = 0x05e0;\n t.nvsquare = 0x33b5;\n t.nwsquare = 0x33bb;\n t.nyabengali = 0x099e;\n t.nyadeva = 0x091e;\n t.nyagujarati = 0x0a9e;\n t.nyagurmukhi = 0x0a1e;\n t.o = 0x006f;\n t.oacute = 0x00f3;\n t.oangthai = 0x0e2d;\n t.obarred = 0x0275;\n t.obarredcyrillic = 0x04e9;\n t.obarreddieresiscyrillic = 0x04eb;\n t.obengali = 0x0993;\n t.obopomofo = 0x311b;\n t.obreve = 0x014f;\n t.ocandradeva = 0x0911;\n t.ocandragujarati = 0x0a91;\n t.ocandravowelsigndeva = 0x0949;\n t.ocandravowelsigngujarati = 0x0ac9;\n t.ocaron = 0x01d2;\n t.ocircle = 0x24de;\n t.ocircumflex = 0x00f4;\n t.ocircumflexacute = 0x1ed1;\n t.ocircumflexdotbelow = 0x1ed9;\n t.ocircumflexgrave = 0x1ed3;\n t.ocircumflexhookabove = 0x1ed5;\n t.ocircumflextilde = 0x1ed7;\n t.ocyrillic = 0x043e;\n t.odblacute = 0x0151;\n t.odblgrave = 0x020d;\n t.odeva = 0x0913;\n t.odieresis = 0x00f6;\n t.odieresiscyrillic = 0x04e7;\n t.odotbelow = 0x1ecd;\n t.oe = 0x0153;\n t.oekorean = 0x315a;\n t.ogonek = 0x02db;\n t.ogonekcmb = 0x0328;\n t.ograve = 0x00f2;\n t.ogujarati = 0x0a93;\n t.oharmenian = 0x0585;\n t.ohiragana = 0x304a;\n t.ohookabove = 0x1ecf;\n t.ohorn = 0x01a1;\n t.ohornacute = 0x1edb;\n t.ohorndotbelow = 0x1ee3;\n t.ohorngrave = 0x1edd;\n t.ohornhookabove = 0x1edf;\n t.ohorntilde = 0x1ee1;\n t.ohungarumlaut = 0x0151;\n t.oi = 0x01a3;\n t.oinvertedbreve = 0x020f;\n t.okatakana = 0x30aa;\n t.okatakanahalfwidth = 0xff75;\n t.okorean = 0x3157;\n t.olehebrew = 0x05ab;\n t.omacron = 0x014d;\n t.omacronacute = 0x1e53;\n t.omacrongrave = 0x1e51;\n t.omdeva = 0x0950;\n t.omega = 0x03c9;\n t.omega1 = 0x03d6;\n t.omegacyrillic = 0x0461;\n t.omegalatinclosed = 0x0277;\n t.omegaroundcyrillic = 0x047b;\n t.omegatitlocyrillic = 0x047d;\n t.omegatonos = 0x03ce;\n t.omgujarati = 0x0ad0;\n t.omicron = 0x03bf;\n t.omicrontonos = 0x03cc;\n t.omonospace = 0xff4f;\n t.one = 0x0031;\n t.onearabic = 0x0661;\n t.onebengali = 0x09e7;\n t.onecircle = 0x2460;\n t.onecircleinversesansserif = 0x278a;\n t.onedeva = 0x0967;\n t.onedotenleader = 0x2024;\n t.oneeighth = 0x215b;\n t.onefitted = 0xf6dc;\n t.onegujarati = 0x0ae7;\n t.onegurmukhi = 0x0a67;\n t.onehackarabic = 0x0661;\n t.onehalf = 0x00bd;\n t.onehangzhou = 0x3021;\n t.oneideographicparen = 0x3220;\n t.oneinferior = 0x2081;\n t.onemonospace = 0xff11;\n t.onenumeratorbengali = 0x09f4;\n t.oneoldstyle = 0xf731;\n t.oneparen = 0x2474;\n t.oneperiod = 0x2488;\n t.onepersian = 0x06f1;\n t.onequarter = 0x00bc;\n t.oneroman = 0x2170;\n t.onesuperior = 0x00b9;\n t.onethai = 0x0e51;\n t.onethird = 0x2153;\n t.oogonek = 0x01eb;\n t.oogonekmacron = 0x01ed;\n t.oogurmukhi = 0x0a13;\n t.oomatragurmukhi = 0x0a4b;\n t.oopen = 0x0254;\n t.oparen = 0x24aa;\n t.openbullet = 0x25e6;\n t.option = 0x2325;\n t.ordfeminine = 0x00aa;\n t.ordmasculine = 0x00ba;\n t.orthogonal = 0x221f;\n t.oshortdeva = 0x0912;\n t.oshortvowelsigndeva = 0x094a;\n t.oslash = 0x00f8;\n t.oslashacute = 0x01ff;\n t.osmallhiragana = 0x3049;\n t.osmallkatakana = 0x30a9;\n t.osmallkatakanahalfwidth = 0xff6b;\n t.ostrokeacute = 0x01ff;\n t.osuperior = 0xf6f0;\n t.otcyrillic = 0x047f;\n t.otilde = 0x00f5;\n t.otildeacute = 0x1e4d;\n t.otildedieresis = 0x1e4f;\n t.oubopomofo = 0x3121;\n t.overline = 0x203e;\n t.overlinecenterline = 0xfe4a;\n t.overlinecmb = 0x0305;\n t.overlinedashed = 0xfe49;\n t.overlinedblwavy = 0xfe4c;\n t.overlinewavy = 0xfe4b;\n t.overscore = 0x00af;\n t.ovowelsignbengali = 0x09cb;\n t.ovowelsigndeva = 0x094b;\n t.ovowelsigngujarati = 0x0acb;\n t.p = 0x0070;\n t.paampssquare = 0x3380;\n t.paasentosquare = 0x332b;\n t.pabengali = 0x09aa;\n t.pacute = 0x1e55;\n t.padeva = 0x092a;\n t.pagedown = 0x21df;\n t.pageup = 0x21de;\n t.pagujarati = 0x0aaa;\n t.pagurmukhi = 0x0a2a;\n t.pahiragana = 0x3071;\n t.paiyannoithai = 0x0e2f;\n t.pakatakana = 0x30d1;\n t.palatalizationcyrilliccmb = 0x0484;\n t.palochkacyrillic = 0x04c0;\n t.pansioskorean = 0x317f;\n t.paragraph = 0x00b6;\n t.parallel = 0x2225;\n t.parenleft = 0x0028;\n t.parenleftaltonearabic = 0xfd3e;\n t.parenleftbt = 0xf8ed;\n t.parenleftex = 0xf8ec;\n t.parenleftinferior = 0x208d;\n t.parenleftmonospace = 0xff08;\n t.parenleftsmall = 0xfe59;\n t.parenleftsuperior = 0x207d;\n t.parenlefttp = 0xf8eb;\n t.parenleftvertical = 0xfe35;\n t.parenright = 0x0029;\n t.parenrightaltonearabic = 0xfd3f;\n t.parenrightbt = 0xf8f8;\n t.parenrightex = 0xf8f7;\n t.parenrightinferior = 0x208e;\n t.parenrightmonospace = 0xff09;\n t.parenrightsmall = 0xfe5a;\n t.parenrightsuperior = 0x207e;\n t.parenrighttp = 0xf8f6;\n t.parenrightvertical = 0xfe36;\n t.partialdiff = 0x2202;\n t.paseqhebrew = 0x05c0;\n t.pashtahebrew = 0x0599;\n t.pasquare = 0x33a9;\n t.patah = 0x05b7;\n t.patah11 = 0x05b7;\n t.patah1d = 0x05b7;\n t.patah2a = 0x05b7;\n t.patahhebrew = 0x05b7;\n t.patahnarrowhebrew = 0x05b7;\n t.patahquarterhebrew = 0x05b7;\n t.patahwidehebrew = 0x05b7;\n t.pazerhebrew = 0x05a1;\n t.pbopomofo = 0x3106;\n t.pcircle = 0x24df;\n t.pdotaccent = 0x1e57;\n t.pe = 0x05e4;\n t.pecyrillic = 0x043f;\n t.pedagesh = 0xfb44;\n t.pedageshhebrew = 0xfb44;\n t.peezisquare = 0x333b;\n t.pefinaldageshhebrew = 0xfb43;\n t.peharabic = 0x067e;\n t.peharmenian = 0x057a;\n t.pehebrew = 0x05e4;\n t.pehfinalarabic = 0xfb57;\n t.pehinitialarabic = 0xfb58;\n t.pehiragana = 0x307a;\n t.pehmedialarabic = 0xfb59;\n t.pekatakana = 0x30da;\n t.pemiddlehookcyrillic = 0x04a7;\n t.perafehebrew = 0xfb4e;\n t.percent = 0x0025;\n t.percentarabic = 0x066a;\n t.percentmonospace = 0xff05;\n t.percentsmall = 0xfe6a;\n t.period = 0x002e;\n t.periodarmenian = 0x0589;\n t.periodcentered = 0x00b7;\n t.periodhalfwidth = 0xff61;\n t.periodinferior = 0xf6e7;\n t.periodmonospace = 0xff0e;\n t.periodsmall = 0xfe52;\n t.periodsuperior = 0xf6e8;\n t.perispomenigreekcmb = 0x0342;\n t.perpendicular = 0x22a5;\n t.perthousand = 0x2030;\n t.peseta = 0x20a7;\n t.pfsquare = 0x338a;\n t.phabengali = 0x09ab;\n t.phadeva = 0x092b;\n t.phagujarati = 0x0aab;\n t.phagurmukhi = 0x0a2b;\n t.phi = 0x03c6;\n t.phi1 = 0x03d5;\n t.phieuphacirclekorean = 0x327a;\n t.phieuphaparenkorean = 0x321a;\n t.phieuphcirclekorean = 0x326c;\n t.phieuphkorean = 0x314d;\n t.phieuphparenkorean = 0x320c;\n t.philatin = 0x0278;\n t.phinthuthai = 0x0e3a;\n t.phisymbolgreek = 0x03d5;\n t.phook = 0x01a5;\n t.phophanthai = 0x0e1e;\n t.phophungthai = 0x0e1c;\n t.phosamphaothai = 0x0e20;\n t.pi = 0x03c0;\n t.pieupacirclekorean = 0x3273;\n t.pieupaparenkorean = 0x3213;\n t.pieupcieuckorean = 0x3176;\n t.pieupcirclekorean = 0x3265;\n t.pieupkiyeokkorean = 0x3172;\n t.pieupkorean = 0x3142;\n t.pieupparenkorean = 0x3205;\n t.pieupsioskiyeokkorean = 0x3174;\n t.pieupsioskorean = 0x3144;\n t.pieupsiostikeutkorean = 0x3175;\n t.pieupthieuthkorean = 0x3177;\n t.pieuptikeutkorean = 0x3173;\n t.pihiragana = 0x3074;\n t.pikatakana = 0x30d4;\n t.pisymbolgreek = 0x03d6;\n t.piwrarmenian = 0x0583;\n t.plus = 0x002b;\n t.plusbelowcmb = 0x031f;\n t.pluscircle = 0x2295;\n t.plusminus = 0x00b1;\n t.plusmod = 0x02d6;\n t.plusmonospace = 0xff0b;\n t.plussmall = 0xfe62;\n t.plussuperior = 0x207a;\n t.pmonospace = 0xff50;\n t.pmsquare = 0x33d8;\n t.pohiragana = 0x307d;\n t.pointingindexdownwhite = 0x261f;\n t.pointingindexleftwhite = 0x261c;\n t.pointingindexrightwhite = 0x261e;\n t.pointingindexupwhite = 0x261d;\n t.pokatakana = 0x30dd;\n t.poplathai = 0x0e1b;\n t.postalmark = 0x3012;\n t.postalmarkface = 0x3020;\n t.pparen = 0x24ab;\n t.precedes = 0x227a;\n t.prescription = 0x211e;\n t.primemod = 0x02b9;\n t.primereversed = 0x2035;\n t.product = 0x220f;\n t.projective = 0x2305;\n t.prolongedkana = 0x30fc;\n t.propellor = 0x2318;\n t.propersubset = 0x2282;\n t.propersuperset = 0x2283;\n t.proportion = 0x2237;\n t.proportional = 0x221d;\n t.psi = 0x03c8;\n t.psicyrillic = 0x0471;\n t.psilipneumatacyrilliccmb = 0x0486;\n t.pssquare = 0x33b0;\n t.puhiragana = 0x3077;\n t.pukatakana = 0x30d7;\n t.pvsquare = 0x33b4;\n t.pwsquare = 0x33ba;\n t.q = 0x0071;\n t.qadeva = 0x0958;\n t.qadmahebrew = 0x05a8;\n t.qafarabic = 0x0642;\n t.qaffinalarabic = 0xfed6;\n t.qafinitialarabic = 0xfed7;\n t.qafmedialarabic = 0xfed8;\n t.qamats = 0x05b8;\n t.qamats10 = 0x05b8;\n t.qamats1a = 0x05b8;\n t.qamats1c = 0x05b8;\n t.qamats27 = 0x05b8;\n t.qamats29 = 0x05b8;\n t.qamats33 = 0x05b8;\n t.qamatsde = 0x05b8;\n t.qamatshebrew = 0x05b8;\n t.qamatsnarrowhebrew = 0x05b8;\n t.qamatsqatanhebrew = 0x05b8;\n t.qamatsqatannarrowhebrew = 0x05b8;\n t.qamatsqatanquarterhebrew = 0x05b8;\n t.qamatsqatanwidehebrew = 0x05b8;\n t.qamatsquarterhebrew = 0x05b8;\n t.qamatswidehebrew = 0x05b8;\n t.qarneyparahebrew = 0x059f;\n t.qbopomofo = 0x3111;\n t.qcircle = 0x24e0;\n t.qhook = 0x02a0;\n t.qmonospace = 0xff51;\n t.qof = 0x05e7;\n t.qofdagesh = 0xfb47;\n t.qofdageshhebrew = 0xfb47;\n t.qofhebrew = 0x05e7;\n t.qparen = 0x24ac;\n t.quarternote = 0x2669;\n t.qubuts = 0x05bb;\n t.qubuts18 = 0x05bb;\n t.qubuts25 = 0x05bb;\n t.qubuts31 = 0x05bb;\n t.qubutshebrew = 0x05bb;\n t.qubutsnarrowhebrew = 0x05bb;\n t.qubutsquarterhebrew = 0x05bb;\n t.qubutswidehebrew = 0x05bb;\n t.question = 0x003f;\n t.questionarabic = 0x061f;\n t.questionarmenian = 0x055e;\n t.questiondown = 0x00bf;\n t.questiondownsmall = 0xf7bf;\n t.questiongreek = 0x037e;\n t.questionmonospace = 0xff1f;\n t.questionsmall = 0xf73f;\n t.quotedbl = 0x0022;\n t.quotedblbase = 0x201e;\n t.quotedblleft = 0x201c;\n t.quotedblmonospace = 0xff02;\n t.quotedblprime = 0x301e;\n t.quotedblprimereversed = 0x301d;\n t.quotedblright = 0x201d;\n t.quoteleft = 0x2018;\n t.quoteleftreversed = 0x201b;\n t.quotereversed = 0x201b;\n t.quoteright = 0x2019;\n t.quoterightn = 0x0149;\n t.quotesinglbase = 0x201a;\n t.quotesingle = 0x0027;\n t.quotesinglemonospace = 0xff07;\n t.r = 0x0072;\n t.raarmenian = 0x057c;\n t.rabengali = 0x09b0;\n t.racute = 0x0155;\n t.radeva = 0x0930;\n t.radical = 0x221a;\n t.radicalex = 0xf8e5;\n t.radoverssquare = 0x33ae;\n t.radoverssquaredsquare = 0x33af;\n t.radsquare = 0x33ad;\n t.rafe = 0x05bf;\n t.rafehebrew = 0x05bf;\n t.ragujarati = 0x0ab0;\n t.ragurmukhi = 0x0a30;\n t.rahiragana = 0x3089;\n t.rakatakana = 0x30e9;\n t.rakatakanahalfwidth = 0xff97;\n t.ralowerdiagonalbengali = 0x09f1;\n t.ramiddlediagonalbengali = 0x09f0;\n t.ramshorn = 0x0264;\n t.ratio = 0x2236;\n t.rbopomofo = 0x3116;\n t.rcaron = 0x0159;\n t.rcedilla = 0x0157;\n t.rcircle = 0x24e1;\n t.rcommaaccent = 0x0157;\n t.rdblgrave = 0x0211;\n t.rdotaccent = 0x1e59;\n t.rdotbelow = 0x1e5b;\n t.rdotbelowmacron = 0x1e5d;\n t.referencemark = 0x203b;\n t.reflexsubset = 0x2286;\n t.reflexsuperset = 0x2287;\n t.registered = 0x00ae;\n t.registersans = 0xf8e8;\n t.registerserif = 0xf6da;\n t.reharabic = 0x0631;\n t.reharmenian = 0x0580;\n t.rehfinalarabic = 0xfeae;\n t.rehiragana = 0x308c;\n t.rekatakana = 0x30ec;\n t.rekatakanahalfwidth = 0xff9a;\n t.resh = 0x05e8;\n t.reshdageshhebrew = 0xfb48;\n t.reshhebrew = 0x05e8;\n t.reversedtilde = 0x223d;\n t.reviahebrew = 0x0597;\n t.reviamugrashhebrew = 0x0597;\n t.revlogicalnot = 0x2310;\n t.rfishhook = 0x027e;\n t.rfishhookreversed = 0x027f;\n t.rhabengali = 0x09dd;\n t.rhadeva = 0x095d;\n t.rho = 0x03c1;\n t.rhook = 0x027d;\n t.rhookturned = 0x027b;\n t.rhookturnedsuperior = 0x02b5;\n t.rhosymbolgreek = 0x03f1;\n t.rhotichookmod = 0x02de;\n t.rieulacirclekorean = 0x3271;\n t.rieulaparenkorean = 0x3211;\n t.rieulcirclekorean = 0x3263;\n t.rieulhieuhkorean = 0x3140;\n t.rieulkiyeokkorean = 0x313a;\n t.rieulkiyeoksioskorean = 0x3169;\n t.rieulkorean = 0x3139;\n t.rieulmieumkorean = 0x313b;\n t.rieulpansioskorean = 0x316c;\n t.rieulparenkorean = 0x3203;\n t.rieulphieuphkorean = 0x313f;\n t.rieulpieupkorean = 0x313c;\n t.rieulpieupsioskorean = 0x316b;\n t.rieulsioskorean = 0x313d;\n t.rieulthieuthkorean = 0x313e;\n t.rieultikeutkorean = 0x316a;\n t.rieulyeorinhieuhkorean = 0x316d;\n t.rightangle = 0x221f;\n t.righttackbelowcmb = 0x0319;\n t.righttriangle = 0x22bf;\n t.rihiragana = 0x308a;\n t.rikatakana = 0x30ea;\n t.rikatakanahalfwidth = 0xff98;\n t.ring = 0x02da;\n t.ringbelowcmb = 0x0325;\n t.ringcmb = 0x030a;\n t.ringhalfleft = 0x02bf;\n t.ringhalfleftarmenian = 0x0559;\n t.ringhalfleftbelowcmb = 0x031c;\n t.ringhalfleftcentered = 0x02d3;\n t.ringhalfright = 0x02be;\n t.ringhalfrightbelowcmb = 0x0339;\n t.ringhalfrightcentered = 0x02d2;\n t.rinvertedbreve = 0x0213;\n t.rittorusquare = 0x3351;\n t.rlinebelow = 0x1e5f;\n t.rlongleg = 0x027c;\n t.rlonglegturned = 0x027a;\n t.rmonospace = 0xff52;\n t.rohiragana = 0x308d;\n t.rokatakana = 0x30ed;\n t.rokatakanahalfwidth = 0xff9b;\n t.roruathai = 0x0e23;\n t.rparen = 0x24ad;\n t.rrabengali = 0x09dc;\n t.rradeva = 0x0931;\n t.rragurmukhi = 0x0a5c;\n t.rreharabic = 0x0691;\n t.rrehfinalarabic = 0xfb8d;\n t.rrvocalicbengali = 0x09e0;\n t.rrvocalicdeva = 0x0960;\n t.rrvocalicgujarati = 0x0ae0;\n t.rrvocalicvowelsignbengali = 0x09c4;\n t.rrvocalicvowelsigndeva = 0x0944;\n t.rrvocalicvowelsigngujarati = 0x0ac4;\n t.rsuperior = 0xf6f1;\n t.rtblock = 0x2590;\n t.rturned = 0x0279;\n t.rturnedsuperior = 0x02b4;\n t.ruhiragana = 0x308b;\n t.rukatakana = 0x30eb;\n t.rukatakanahalfwidth = 0xff99;\n t.rupeemarkbengali = 0x09f2;\n t.rupeesignbengali = 0x09f3;\n t.rupiah = 0xf6dd;\n t.ruthai = 0x0e24;\n t.rvocalicbengali = 0x098b;\n t.rvocalicdeva = 0x090b;\n t.rvocalicgujarati = 0x0a8b;\n t.rvocalicvowelsignbengali = 0x09c3;\n t.rvocalicvowelsigndeva = 0x0943;\n t.rvocalicvowelsigngujarati = 0x0ac3;\n t.s = 0x0073;\n t.sabengali = 0x09b8;\n t.sacute = 0x015b;\n t.sacutedotaccent = 0x1e65;\n t.sadarabic = 0x0635;\n t.sadeva = 0x0938;\n t.sadfinalarabic = 0xfeba;\n t.sadinitialarabic = 0xfebb;\n t.sadmedialarabic = 0xfebc;\n t.sagujarati = 0x0ab8;\n t.sagurmukhi = 0x0a38;\n t.sahiragana = 0x3055;\n t.sakatakana = 0x30b5;\n t.sakatakanahalfwidth = 0xff7b;\n t.sallallahoualayhewasallamarabic = 0xfdfa;\n t.samekh = 0x05e1;\n t.samekhdagesh = 0xfb41;\n t.samekhdageshhebrew = 0xfb41;\n t.samekhhebrew = 0x05e1;\n t.saraaathai = 0x0e32;\n t.saraaethai = 0x0e41;\n t.saraaimaimalaithai = 0x0e44;\n t.saraaimaimuanthai = 0x0e43;\n t.saraamthai = 0x0e33;\n t.saraathai = 0x0e30;\n t.saraethai = 0x0e40;\n t.saraiileftthai = 0xf886;\n t.saraiithai = 0x0e35;\n t.saraileftthai = 0xf885;\n t.saraithai = 0x0e34;\n t.saraothai = 0x0e42;\n t.saraueeleftthai = 0xf888;\n t.saraueethai = 0x0e37;\n t.saraueleftthai = 0xf887;\n t.sarauethai = 0x0e36;\n t.sarauthai = 0x0e38;\n t.sarauuthai = 0x0e39;\n t.sbopomofo = 0x3119;\n t.scaron = 0x0161;\n t.scarondotaccent = 0x1e67;\n t.scedilla = 0x015f;\n t.schwa = 0x0259;\n t.schwacyrillic = 0x04d9;\n t.schwadieresiscyrillic = 0x04db;\n t.schwahook = 0x025a;\n t.scircle = 0x24e2;\n t.scircumflex = 0x015d;\n t.scommaaccent = 0x0219;\n t.sdotaccent = 0x1e61;\n t.sdotbelow = 0x1e63;\n t.sdotbelowdotaccent = 0x1e69;\n t.seagullbelowcmb = 0x033c;\n t.second = 0x2033;\n t.secondtonechinese = 0x02ca;\n t.section = 0x00a7;\n t.seenarabic = 0x0633;\n t.seenfinalarabic = 0xfeb2;\n t.seeninitialarabic = 0xfeb3;\n t.seenmedialarabic = 0xfeb4;\n t.segol = 0x05b6;\n t.segol13 = 0x05b6;\n t.segol1f = 0x05b6;\n t.segol2c = 0x05b6;\n t.segolhebrew = 0x05b6;\n t.segolnarrowhebrew = 0x05b6;\n t.segolquarterhebrew = 0x05b6;\n t.segoltahebrew = 0x0592;\n t.segolwidehebrew = 0x05b6;\n t.seharmenian = 0x057d;\n t.sehiragana = 0x305b;\n t.sekatakana = 0x30bb;\n t.sekatakanahalfwidth = 0xff7e;\n t.semicolon = 0x003b;\n t.semicolonarabic = 0x061b;\n t.semicolonmonospace = 0xff1b;\n t.semicolonsmall = 0xfe54;\n t.semivoicedmarkkana = 0x309c;\n t.semivoicedmarkkanahalfwidth = 0xff9f;\n t.sentisquare = 0x3322;\n t.sentosquare = 0x3323;\n t.seven = 0x0037;\n t.sevenarabic = 0x0667;\n t.sevenbengali = 0x09ed;\n t.sevencircle = 0x2466;\n t.sevencircleinversesansserif = 0x2790;\n t.sevendeva = 0x096d;\n t.seveneighths = 0x215e;\n t.sevengujarati = 0x0aed;\n t.sevengurmukhi = 0x0a6d;\n t.sevenhackarabic = 0x0667;\n t.sevenhangzhou = 0x3027;\n t.sevenideographicparen = 0x3226;\n t.seveninferior = 0x2087;\n t.sevenmonospace = 0xff17;\n t.sevenoldstyle = 0xf737;\n t.sevenparen = 0x247a;\n t.sevenperiod = 0x248e;\n t.sevenpersian = 0x06f7;\n t.sevenroman = 0x2176;\n t.sevensuperior = 0x2077;\n t.seventeencircle = 0x2470;\n t.seventeenparen = 0x2484;\n t.seventeenperiod = 0x2498;\n t.seventhai = 0x0e57;\n t.sfthyphen = 0x00ad;\n t.shaarmenian = 0x0577;\n t.shabengali = 0x09b6;\n t.shacyrillic = 0x0448;\n t.shaddaarabic = 0x0651;\n t.shaddadammaarabic = 0xfc61;\n t.shaddadammatanarabic = 0xfc5e;\n t.shaddafathaarabic = 0xfc60;\n t.shaddakasraarabic = 0xfc62;\n t.shaddakasratanarabic = 0xfc5f;\n t.shade = 0x2592;\n t.shadedark = 0x2593;\n t.shadelight = 0x2591;\n t.shademedium = 0x2592;\n t.shadeva = 0x0936;\n t.shagujarati = 0x0ab6;\n t.shagurmukhi = 0x0a36;\n t.shalshelethebrew = 0x0593;\n t.shbopomofo = 0x3115;\n t.shchacyrillic = 0x0449;\n t.sheenarabic = 0x0634;\n t.sheenfinalarabic = 0xfeb6;\n t.sheeninitialarabic = 0xfeb7;\n t.sheenmedialarabic = 0xfeb8;\n t.sheicoptic = 0x03e3;\n t.sheqel = 0x20aa;\n t.sheqelhebrew = 0x20aa;\n t.sheva = 0x05b0;\n t.sheva115 = 0x05b0;\n t.sheva15 = 0x05b0;\n t.sheva22 = 0x05b0;\n t.sheva2e = 0x05b0;\n t.shevahebrew = 0x05b0;\n t.shevanarrowhebrew = 0x05b0;\n t.shevaquarterhebrew = 0x05b0;\n t.shevawidehebrew = 0x05b0;\n t.shhacyrillic = 0x04bb;\n t.shimacoptic = 0x03ed;\n t.shin = 0x05e9;\n t.shindagesh = 0xfb49;\n t.shindageshhebrew = 0xfb49;\n t.shindageshshindot = 0xfb2c;\n t.shindageshshindothebrew = 0xfb2c;\n t.shindageshsindot = 0xfb2d;\n t.shindageshsindothebrew = 0xfb2d;\n t.shindothebrew = 0x05c1;\n t.shinhebrew = 0x05e9;\n t.shinshindot = 0xfb2a;\n t.shinshindothebrew = 0xfb2a;\n t.shinsindot = 0xfb2b;\n t.shinsindothebrew = 0xfb2b;\n t.shook = 0x0282;\n t.sigma = 0x03c3;\n t.sigma1 = 0x03c2;\n t.sigmafinal = 0x03c2;\n t.sigmalunatesymbolgreek = 0x03f2;\n t.sihiragana = 0x3057;\n t.sikatakana = 0x30b7;\n t.sikatakanahalfwidth = 0xff7c;\n t.siluqhebrew = 0x05bd;\n t.siluqlefthebrew = 0x05bd;\n t.similar = 0x223c;\n t.sindothebrew = 0x05c2;\n t.siosacirclekorean = 0x3274;\n t.siosaparenkorean = 0x3214;\n t.sioscieuckorean = 0x317e;\n t.sioscirclekorean = 0x3266;\n t.sioskiyeokkorean = 0x317a;\n t.sioskorean = 0x3145;\n t.siosnieunkorean = 0x317b;\n t.siosparenkorean = 0x3206;\n t.siospieupkorean = 0x317d;\n t.siostikeutkorean = 0x317c;\n t.six = 0x0036;\n t.sixarabic = 0x0666;\n t.sixbengali = 0x09ec;\n t.sixcircle = 0x2465;\n t.sixcircleinversesansserif = 0x278f;\n t.sixdeva = 0x096c;\n t.sixgujarati = 0x0aec;\n t.sixgurmukhi = 0x0a6c;\n t.sixhackarabic = 0x0666;\n t.sixhangzhou = 0x3026;\n t.sixideographicparen = 0x3225;\n t.sixinferior = 0x2086;\n t.sixmonospace = 0xff16;\n t.sixoldstyle = 0xf736;\n t.sixparen = 0x2479;\n t.sixperiod = 0x248d;\n t.sixpersian = 0x06f6;\n t.sixroman = 0x2175;\n t.sixsuperior = 0x2076;\n t.sixteencircle = 0x246f;\n t.sixteencurrencydenominatorbengali = 0x09f9;\n t.sixteenparen = 0x2483;\n t.sixteenperiod = 0x2497;\n t.sixthai = 0x0e56;\n t.slash = 0x002f;\n t.slashmonospace = 0xff0f;\n t.slong = 0x017f;\n t.slongdotaccent = 0x1e9b;\n t.smileface = 0x263a;\n t.smonospace = 0xff53;\n t.sofpasuqhebrew = 0x05c3;\n t.softhyphen = 0x00ad;\n t.softsigncyrillic = 0x044c;\n t.sohiragana = 0x305d;\n t.sokatakana = 0x30bd;\n t.sokatakanahalfwidth = 0xff7f;\n t.soliduslongoverlaycmb = 0x0338;\n t.solidusshortoverlaycmb = 0x0337;\n t.sorusithai = 0x0e29;\n t.sosalathai = 0x0e28;\n t.sosothai = 0x0e0b;\n t.sosuathai = 0x0e2a;\n t.space = 0x0020;\n t.spacehackarabic = 0x0020;\n t.spade = 0x2660;\n t.spadesuitblack = 0x2660;\n t.spadesuitwhite = 0x2664;\n t.sparen = 0x24ae;\n t.squarebelowcmb = 0x033b;\n t.squarecc = 0x33c4;\n t.squarecm = 0x339d;\n t.squarediagonalcrosshatchfill = 0x25a9;\n t.squarehorizontalfill = 0x25a4;\n t.squarekg = 0x338f;\n t.squarekm = 0x339e;\n t.squarekmcapital = 0x33ce;\n t.squareln = 0x33d1;\n t.squarelog = 0x33d2;\n t.squaremg = 0x338e;\n t.squaremil = 0x33d5;\n t.squaremm = 0x339c;\n t.squaremsquared = 0x33a1;\n t.squareorthogonalcrosshatchfill = 0x25a6;\n t.squareupperlefttolowerrightfill = 0x25a7;\n t.squareupperrighttolowerleftfill = 0x25a8;\n t.squareverticalfill = 0x25a5;\n t.squarewhitewithsmallblack = 0x25a3;\n t.srsquare = 0x33db;\n t.ssabengali = 0x09b7;\n t.ssadeva = 0x0937;\n t.ssagujarati = 0x0ab7;\n t.ssangcieuckorean = 0x3149;\n t.ssanghieuhkorean = 0x3185;\n t.ssangieungkorean = 0x3180;\n t.ssangkiyeokkorean = 0x3132;\n t.ssangnieunkorean = 0x3165;\n t.ssangpieupkorean = 0x3143;\n t.ssangsioskorean = 0x3146;\n t.ssangtikeutkorean = 0x3138;\n t.ssuperior = 0xf6f2;\n t.sterling = 0x00a3;\n t.sterlingmonospace = 0xffe1;\n t.strokelongoverlaycmb = 0x0336;\n t.strokeshortoverlaycmb = 0x0335;\n t.subset = 0x2282;\n t.subsetnotequal = 0x228a;\n t.subsetorequal = 0x2286;\n t.succeeds = 0x227b;\n t.suchthat = 0x220b;\n t.suhiragana = 0x3059;\n t.sukatakana = 0x30b9;\n t.sukatakanahalfwidth = 0xff7d;\n t.sukunarabic = 0x0652;\n t.summation = 0x2211;\n t.sun = 0x263c;\n t.superset = 0x2283;\n t.supersetnotequal = 0x228b;\n t.supersetorequal = 0x2287;\n t.svsquare = 0x33dc;\n t.syouwaerasquare = 0x337c;\n t.t = 0x0074;\n t.tabengali = 0x09a4;\n t.tackdown = 0x22a4;\n t.tackleft = 0x22a3;\n t.tadeva = 0x0924;\n t.tagujarati = 0x0aa4;\n t.tagurmukhi = 0x0a24;\n t.taharabic = 0x0637;\n t.tahfinalarabic = 0xfec2;\n t.tahinitialarabic = 0xfec3;\n t.tahiragana = 0x305f;\n t.tahmedialarabic = 0xfec4;\n t.taisyouerasquare = 0x337d;\n t.takatakana = 0x30bf;\n t.takatakanahalfwidth = 0xff80;\n t.tatweelarabic = 0x0640;\n t.tau = 0x03c4;\n t.tav = 0x05ea;\n t.tavdages = 0xfb4a;\n t.tavdagesh = 0xfb4a;\n t.tavdageshhebrew = 0xfb4a;\n t.tavhebrew = 0x05ea;\n t.tbar = 0x0167;\n t.tbopomofo = 0x310a;\n t.tcaron = 0x0165;\n t.tccurl = 0x02a8;\n t.tcedilla = 0x0163;\n t.tcheharabic = 0x0686;\n t.tchehfinalarabic = 0xfb7b;\n t.tchehinitialarabic = 0xfb7c;\n t.tchehmedialarabic = 0xfb7d;\n t.tcircle = 0x24e3;\n t.tcircumflexbelow = 0x1e71;\n t.tcommaaccent = 0x0163;\n t.tdieresis = 0x1e97;\n t.tdotaccent = 0x1e6b;\n t.tdotbelow = 0x1e6d;\n t.tecyrillic = 0x0442;\n t.tedescendercyrillic = 0x04ad;\n t.teharabic = 0x062a;\n t.tehfinalarabic = 0xfe96;\n t.tehhahinitialarabic = 0xfca2;\n t.tehhahisolatedarabic = 0xfc0c;\n t.tehinitialarabic = 0xfe97;\n t.tehiragana = 0x3066;\n t.tehjeeminitialarabic = 0xfca1;\n t.tehjeemisolatedarabic = 0xfc0b;\n t.tehmarbutaarabic = 0x0629;\n t.tehmarbutafinalarabic = 0xfe94;\n t.tehmedialarabic = 0xfe98;\n t.tehmeeminitialarabic = 0xfca4;\n t.tehmeemisolatedarabic = 0xfc0e;\n t.tehnoonfinalarabic = 0xfc73;\n t.tekatakana = 0x30c6;\n t.tekatakanahalfwidth = 0xff83;\n t.telephone = 0x2121;\n t.telephoneblack = 0x260e;\n t.telishagedolahebrew = 0x05a0;\n t.telishaqetanahebrew = 0x05a9;\n t.tencircle = 0x2469;\n t.tenideographicparen = 0x3229;\n t.tenparen = 0x247d;\n t.tenperiod = 0x2491;\n t.tenroman = 0x2179;\n t.tesh = 0x02a7;\n t.tet = 0x05d8;\n t.tetdagesh = 0xfb38;\n t.tetdageshhebrew = 0xfb38;\n t.tethebrew = 0x05d8;\n t.tetsecyrillic = 0x04b5;\n t.tevirhebrew = 0x059b;\n t.tevirlefthebrew = 0x059b;\n t.thabengali = 0x09a5;\n t.thadeva = 0x0925;\n t.thagujarati = 0x0aa5;\n t.thagurmukhi = 0x0a25;\n t.thalarabic = 0x0630;\n t.thalfinalarabic = 0xfeac;\n t.thanthakhatlowleftthai = 0xf898;\n t.thanthakhatlowrightthai = 0xf897;\n t.thanthakhatthai = 0x0e4c;\n t.thanthakhatupperleftthai = 0xf896;\n t.theharabic = 0x062b;\n t.thehfinalarabic = 0xfe9a;\n t.thehinitialarabic = 0xfe9b;\n t.thehmedialarabic = 0xfe9c;\n t.thereexists = 0x2203;\n t.therefore = 0x2234;\n t.theta = 0x03b8;\n t.theta1 = 0x03d1;\n t.thetasymbolgreek = 0x03d1;\n t.thieuthacirclekorean = 0x3279;\n t.thieuthaparenkorean = 0x3219;\n t.thieuthcirclekorean = 0x326b;\n t.thieuthkorean = 0x314c;\n t.thieuthparenkorean = 0x320b;\n t.thirteencircle = 0x246c;\n t.thirteenparen = 0x2480;\n t.thirteenperiod = 0x2494;\n t.thonangmonthothai = 0x0e11;\n t.thook = 0x01ad;\n t.thophuthaothai = 0x0e12;\n t.thorn = 0x00fe;\n t.thothahanthai = 0x0e17;\n t.thothanthai = 0x0e10;\n t.thothongthai = 0x0e18;\n t.thothungthai = 0x0e16;\n t.thousandcyrillic = 0x0482;\n t.thousandsseparatorarabic = 0x066c;\n t.thousandsseparatorpersian = 0x066c;\n t.three = 0x0033;\n t.threearabic = 0x0663;\n t.threebengali = 0x09e9;\n t.threecircle = 0x2462;\n t.threecircleinversesansserif = 0x278c;\n t.threedeva = 0x0969;\n t.threeeighths = 0x215c;\n t.threegujarati = 0x0ae9;\n t.threegurmukhi = 0x0a69;\n t.threehackarabic = 0x0663;\n t.threehangzhou = 0x3023;\n t.threeideographicparen = 0x3222;\n t.threeinferior = 0x2083;\n t.threemonospace = 0xff13;\n t.threenumeratorbengali = 0x09f6;\n t.threeoldstyle = 0xf733;\n t.threeparen = 0x2476;\n t.threeperiod = 0x248a;\n t.threepersian = 0x06f3;\n t.threequarters = 0x00be;\n t.threequartersemdash = 0xf6de;\n t.threeroman = 0x2172;\n t.threesuperior = 0x00b3;\n t.threethai = 0x0e53;\n t.thzsquare = 0x3394;\n t.tihiragana = 0x3061;\n t.tikatakana = 0x30c1;\n t.tikatakanahalfwidth = 0xff81;\n t.tikeutacirclekorean = 0x3270;\n t.tikeutaparenkorean = 0x3210;\n t.tikeutcirclekorean = 0x3262;\n t.tikeutkorean = 0x3137;\n t.tikeutparenkorean = 0x3202;\n t.tilde = 0x02dc;\n t.tildebelowcmb = 0x0330;\n t.tildecmb = 0x0303;\n t.tildecomb = 0x0303;\n t.tildedoublecmb = 0x0360;\n t.tildeoperator = 0x223c;\n t.tildeoverlaycmb = 0x0334;\n t.tildeverticalcmb = 0x033e;\n t.timescircle = 0x2297;\n t.tipehahebrew = 0x0596;\n t.tipehalefthebrew = 0x0596;\n t.tippigurmukhi = 0x0a70;\n t.titlocyrilliccmb = 0x0483;\n t.tiwnarmenian = 0x057f;\n t.tlinebelow = 0x1e6f;\n t.tmonospace = 0xff54;\n t.toarmenian = 0x0569;\n t.tohiragana = 0x3068;\n t.tokatakana = 0x30c8;\n t.tokatakanahalfwidth = 0xff84;\n t.tonebarextrahighmod = 0x02e5;\n t.tonebarextralowmod = 0x02e9;\n t.tonebarhighmod = 0x02e6;\n t.tonebarlowmod = 0x02e8;\n t.tonebarmidmod = 0x02e7;\n t.tonefive = 0x01bd;\n t.tonesix = 0x0185;\n t.tonetwo = 0x01a8;\n t.tonos = 0x0384;\n t.tonsquare = 0x3327;\n t.topatakthai = 0x0e0f;\n t.tortoiseshellbracketleft = 0x3014;\n t.tortoiseshellbracketleftsmall = 0xfe5d;\n t.tortoiseshellbracketleftvertical = 0xfe39;\n t.tortoiseshellbracketright = 0x3015;\n t.tortoiseshellbracketrightsmall = 0xfe5e;\n t.tortoiseshellbracketrightvertical = 0xfe3a;\n t.totaothai = 0x0e15;\n t.tpalatalhook = 0x01ab;\n t.tparen = 0x24af;\n t.trademark = 0x2122;\n t.trademarksans = 0xf8ea;\n t.trademarkserif = 0xf6db;\n t.tretroflexhook = 0x0288;\n t.triagdn = 0x25bc;\n t.triaglf = 0x25c4;\n t.triagrt = 0x25ba;\n t.triagup = 0x25b2;\n t.ts = 0x02a6;\n t.tsadi = 0x05e6;\n t.tsadidagesh = 0xfb46;\n t.tsadidageshhebrew = 0xfb46;\n t.tsadihebrew = 0x05e6;\n t.tsecyrillic = 0x0446;\n t.tsere = 0x05b5;\n t.tsere12 = 0x05b5;\n t.tsere1e = 0x05b5;\n t.tsere2b = 0x05b5;\n t.tserehebrew = 0x05b5;\n t.tserenarrowhebrew = 0x05b5;\n t.tserequarterhebrew = 0x05b5;\n t.tserewidehebrew = 0x05b5;\n t.tshecyrillic = 0x045b;\n t.tsuperior = 0xf6f3;\n t.ttabengali = 0x099f;\n t.ttadeva = 0x091f;\n t.ttagujarati = 0x0a9f;\n t.ttagurmukhi = 0x0a1f;\n t.tteharabic = 0x0679;\n t.ttehfinalarabic = 0xfb67;\n t.ttehinitialarabic = 0xfb68;\n t.ttehmedialarabic = 0xfb69;\n t.tthabengali = 0x09a0;\n t.tthadeva = 0x0920;\n t.tthagujarati = 0x0aa0;\n t.tthagurmukhi = 0x0a20;\n t.tturned = 0x0287;\n t.tuhiragana = 0x3064;\n t.tukatakana = 0x30c4;\n t.tukatakanahalfwidth = 0xff82;\n t.tusmallhiragana = 0x3063;\n t.tusmallkatakana = 0x30c3;\n t.tusmallkatakanahalfwidth = 0xff6f;\n t.twelvecircle = 0x246b;\n t.twelveparen = 0x247f;\n t.twelveperiod = 0x2493;\n t.twelveroman = 0x217b;\n t.twentycircle = 0x2473;\n t.twentyhangzhou = 0x5344;\n t.twentyparen = 0x2487;\n t.twentyperiod = 0x249b;\n t.two = 0x0032;\n t.twoarabic = 0x0662;\n t.twobengali = 0x09e8;\n t.twocircle = 0x2461;\n t.twocircleinversesansserif = 0x278b;\n t.twodeva = 0x0968;\n t.twodotenleader = 0x2025;\n t.twodotleader = 0x2025;\n t.twodotleadervertical = 0xfe30;\n t.twogujarati = 0x0ae8;\n t.twogurmukhi = 0x0a68;\n t.twohackarabic = 0x0662;\n t.twohangzhou = 0x3022;\n t.twoideographicparen = 0x3221;\n t.twoinferior = 0x2082;\n t.twomonospace = 0xff12;\n t.twonumeratorbengali = 0x09f5;\n t.twooldstyle = 0xf732;\n t.twoparen = 0x2475;\n t.twoperiod = 0x2489;\n t.twopersian = 0x06f2;\n t.tworoman = 0x2171;\n t.twostroke = 0x01bb;\n t.twosuperior = 0x00b2;\n t.twothai = 0x0e52;\n t.twothirds = 0x2154;\n t.u = 0x0075;\n t.uacute = 0x00fa;\n t.ubar = 0x0289;\n t.ubengali = 0x0989;\n t.ubopomofo = 0x3128;\n t.ubreve = 0x016d;\n t.ucaron = 0x01d4;\n t.ucircle = 0x24e4;\n t.ucircumflex = 0x00fb;\n t.ucircumflexbelow = 0x1e77;\n t.ucyrillic = 0x0443;\n t.udattadeva = 0x0951;\n t.udblacute = 0x0171;\n t.udblgrave = 0x0215;\n t.udeva = 0x0909;\n t.udieresis = 0x00fc;\n t.udieresisacute = 0x01d8;\n t.udieresisbelow = 0x1e73;\n t.udieresiscaron = 0x01da;\n t.udieresiscyrillic = 0x04f1;\n t.udieresisgrave = 0x01dc;\n t.udieresismacron = 0x01d6;\n t.udotbelow = 0x1ee5;\n t.ugrave = 0x00f9;\n t.ugujarati = 0x0a89;\n t.ugurmukhi = 0x0a09;\n t.uhiragana = 0x3046;\n t.uhookabove = 0x1ee7;\n t.uhorn = 0x01b0;\n t.uhornacute = 0x1ee9;\n t.uhorndotbelow = 0x1ef1;\n t.uhorngrave = 0x1eeb;\n t.uhornhookabove = 0x1eed;\n t.uhorntilde = 0x1eef;\n t.uhungarumlaut = 0x0171;\n t.uhungarumlautcyrillic = 0x04f3;\n t.uinvertedbreve = 0x0217;\n t.ukatakana = 0x30a6;\n t.ukatakanahalfwidth = 0xff73;\n t.ukcyrillic = 0x0479;\n t.ukorean = 0x315c;\n t.umacron = 0x016b;\n t.umacroncyrillic = 0x04ef;\n t.umacrondieresis = 0x1e7b;\n t.umatragurmukhi = 0x0a41;\n t.umonospace = 0xff55;\n t.underscore = 0x005f;\n t.underscoredbl = 0x2017;\n t.underscoremonospace = 0xff3f;\n t.underscorevertical = 0xfe33;\n t.underscorewavy = 0xfe4f;\n t.union = 0x222a;\n t.universal = 0x2200;\n t.uogonek = 0x0173;\n t.uparen = 0x24b0;\n t.upblock = 0x2580;\n t.upperdothebrew = 0x05c4;\n t.upsilon = 0x03c5;\n t.upsilondieresis = 0x03cb;\n t.upsilondieresistonos = 0x03b0;\n t.upsilonlatin = 0x028a;\n t.upsilontonos = 0x03cd;\n t.uptackbelowcmb = 0x031d;\n t.uptackmod = 0x02d4;\n t.uragurmukhi = 0x0a73;\n t.uring = 0x016f;\n t.ushortcyrillic = 0x045e;\n t.usmallhiragana = 0x3045;\n t.usmallkatakana = 0x30a5;\n t.usmallkatakanahalfwidth = 0xff69;\n t.ustraightcyrillic = 0x04af;\n t.ustraightstrokecyrillic = 0x04b1;\n t.utilde = 0x0169;\n t.utildeacute = 0x1e79;\n t.utildebelow = 0x1e75;\n t.uubengali = 0x098a;\n t.uudeva = 0x090a;\n t.uugujarati = 0x0a8a;\n t.uugurmukhi = 0x0a0a;\n t.uumatragurmukhi = 0x0a42;\n t.uuvowelsignbengali = 0x09c2;\n t.uuvowelsigndeva = 0x0942;\n t.uuvowelsigngujarati = 0x0ac2;\n t.uvowelsignbengali = 0x09c1;\n t.uvowelsigndeva = 0x0941;\n t.uvowelsigngujarati = 0x0ac1;\n t.v = 0x0076;\n t.vadeva = 0x0935;\n t.vagujarati = 0x0ab5;\n t.vagurmukhi = 0x0a35;\n t.vakatakana = 0x30f7;\n t.vav = 0x05d5;\n t.vavdagesh = 0xfb35;\n t.vavdagesh65 = 0xfb35;\n t.vavdageshhebrew = 0xfb35;\n t.vavhebrew = 0x05d5;\n t.vavholam = 0xfb4b;\n t.vavholamhebrew = 0xfb4b;\n t.vavvavhebrew = 0x05f0;\n t.vavyodhebrew = 0x05f1;\n t.vcircle = 0x24e5;\n t.vdotbelow = 0x1e7f;\n t.vecyrillic = 0x0432;\n t.veharabic = 0x06a4;\n t.vehfinalarabic = 0xfb6b;\n t.vehinitialarabic = 0xfb6c;\n t.vehmedialarabic = 0xfb6d;\n t.vekatakana = 0x30f9;\n t.venus = 0x2640;\n t.verticalbar = 0x007c;\n t.verticallineabovecmb = 0x030d;\n t.verticallinebelowcmb = 0x0329;\n t.verticallinelowmod = 0x02cc;\n t.verticallinemod = 0x02c8;\n t.vewarmenian = 0x057e;\n t.vhook = 0x028b;\n t.vikatakana = 0x30f8;\n t.viramabengali = 0x09cd;\n t.viramadeva = 0x094d;\n t.viramagujarati = 0x0acd;\n t.visargabengali = 0x0983;\n t.visargadeva = 0x0903;\n t.visargagujarati = 0x0a83;\n t.vmonospace = 0xff56;\n t.voarmenian = 0x0578;\n t.voicediterationhiragana = 0x309e;\n t.voicediterationkatakana = 0x30fe;\n t.voicedmarkkana = 0x309b;\n t.voicedmarkkanahalfwidth = 0xff9e;\n t.vokatakana = 0x30fa;\n t.vparen = 0x24b1;\n t.vtilde = 0x1e7d;\n t.vturned = 0x028c;\n t.vuhiragana = 0x3094;\n t.vukatakana = 0x30f4;\n t.w = 0x0077;\n t.wacute = 0x1e83;\n t.waekorean = 0x3159;\n t.wahiragana = 0x308f;\n t.wakatakana = 0x30ef;\n t.wakatakanahalfwidth = 0xff9c;\n t.wakorean = 0x3158;\n t.wasmallhiragana = 0x308e;\n t.wasmallkatakana = 0x30ee;\n t.wattosquare = 0x3357;\n t.wavedash = 0x301c;\n t.wavyunderscorevertical = 0xfe34;\n t.wawarabic = 0x0648;\n t.wawfinalarabic = 0xfeee;\n t.wawhamzaabovearabic = 0x0624;\n t.wawhamzaabovefinalarabic = 0xfe86;\n t.wbsquare = 0x33dd;\n t.wcircle = 0x24e6;\n t.wcircumflex = 0x0175;\n t.wdieresis = 0x1e85;\n t.wdotaccent = 0x1e87;\n t.wdotbelow = 0x1e89;\n t.wehiragana = 0x3091;\n t.weierstrass = 0x2118;\n t.wekatakana = 0x30f1;\n t.wekorean = 0x315e;\n t.weokorean = 0x315d;\n t.wgrave = 0x1e81;\n t.whitebullet = 0x25e6;\n t.whitecircle = 0x25cb;\n t.whitecircleinverse = 0x25d9;\n t.whitecornerbracketleft = 0x300e;\n t.whitecornerbracketleftvertical = 0xfe43;\n t.whitecornerbracketright = 0x300f;\n t.whitecornerbracketrightvertical = 0xfe44;\n t.whitediamond = 0x25c7;\n t.whitediamondcontainingblacksmalldiamond = 0x25c8;\n t.whitedownpointingsmalltriangle = 0x25bf;\n t.whitedownpointingtriangle = 0x25bd;\n t.whiteleftpointingsmalltriangle = 0x25c3;\n t.whiteleftpointingtriangle = 0x25c1;\n t.whitelenticularbracketleft = 0x3016;\n t.whitelenticularbracketright = 0x3017;\n t.whiterightpointingsmalltriangle = 0x25b9;\n t.whiterightpointingtriangle = 0x25b7;\n t.whitesmallsquare = 0x25ab;\n t.whitesmilingface = 0x263a;\n t.whitesquare = 0x25a1;\n t.whitestar = 0x2606;\n t.whitetelephone = 0x260f;\n t.whitetortoiseshellbracketleft = 0x3018;\n t.whitetortoiseshellbracketright = 0x3019;\n t.whiteuppointingsmalltriangle = 0x25b5;\n t.whiteuppointingtriangle = 0x25b3;\n t.wihiragana = 0x3090;\n t.wikatakana = 0x30f0;\n t.wikorean = 0x315f;\n t.wmonospace = 0xff57;\n t.wohiragana = 0x3092;\n t.wokatakana = 0x30f2;\n t.wokatakanahalfwidth = 0xff66;\n t.won = 0x20a9;\n t.wonmonospace = 0xffe6;\n t.wowaenthai = 0x0e27;\n t.wparen = 0x24b2;\n t.wring = 0x1e98;\n t.wsuperior = 0x02b7;\n t.wturned = 0x028d;\n t.wynn = 0x01bf;\n t.x = 0x0078;\n t.xabovecmb = 0x033d;\n t.xbopomofo = 0x3112;\n t.xcircle = 0x24e7;\n t.xdieresis = 0x1e8d;\n t.xdotaccent = 0x1e8b;\n t.xeharmenian = 0x056d;\n t.xi = 0x03be;\n t.xmonospace = 0xff58;\n t.xparen = 0x24b3;\n t.xsuperior = 0x02e3;\n t.y = 0x0079;\n t.yaadosquare = 0x334e;\n t.yabengali = 0x09af;\n t.yacute = 0x00fd;\n t.yadeva = 0x092f;\n t.yaekorean = 0x3152;\n t.yagujarati = 0x0aaf;\n t.yagurmukhi = 0x0a2f;\n t.yahiragana = 0x3084;\n t.yakatakana = 0x30e4;\n t.yakatakanahalfwidth = 0xff94;\n t.yakorean = 0x3151;\n t.yamakkanthai = 0x0e4e;\n t.yasmallhiragana = 0x3083;\n t.yasmallkatakana = 0x30e3;\n t.yasmallkatakanahalfwidth = 0xff6c;\n t.yatcyrillic = 0x0463;\n t.ycircle = 0x24e8;\n t.ycircumflex = 0x0177;\n t.ydieresis = 0x00ff;\n t.ydotaccent = 0x1e8f;\n t.ydotbelow = 0x1ef5;\n t.yeharabic = 0x064a;\n t.yehbarreearabic = 0x06d2;\n t.yehbarreefinalarabic = 0xfbaf;\n t.yehfinalarabic = 0xfef2;\n t.yehhamzaabovearabic = 0x0626;\n t.yehhamzaabovefinalarabic = 0xfe8a;\n t.yehhamzaaboveinitialarabic = 0xfe8b;\n t.yehhamzaabovemedialarabic = 0xfe8c;\n t.yehinitialarabic = 0xfef3;\n t.yehmedialarabic = 0xfef4;\n t.yehmeeminitialarabic = 0xfcdd;\n t.yehmeemisolatedarabic = 0xfc58;\n t.yehnoonfinalarabic = 0xfc94;\n t.yehthreedotsbelowarabic = 0x06d1;\n t.yekorean = 0x3156;\n t.yen = 0x00a5;\n t.yenmonospace = 0xffe5;\n t.yeokorean = 0x3155;\n t.yeorinhieuhkorean = 0x3186;\n t.yerahbenyomohebrew = 0x05aa;\n t.yerahbenyomolefthebrew = 0x05aa;\n t.yericyrillic = 0x044b;\n t.yerudieresiscyrillic = 0x04f9;\n t.yesieungkorean = 0x3181;\n t.yesieungpansioskorean = 0x3183;\n t.yesieungsioskorean = 0x3182;\n t.yetivhebrew = 0x059a;\n t.ygrave = 0x1ef3;\n t.yhook = 0x01b4;\n t.yhookabove = 0x1ef7;\n t.yiarmenian = 0x0575;\n t.yicyrillic = 0x0457;\n t.yikorean = 0x3162;\n t.yinyang = 0x262f;\n t.yiwnarmenian = 0x0582;\n t.ymonospace = 0xff59;\n t.yod = 0x05d9;\n t.yoddagesh = 0xfb39;\n t.yoddageshhebrew = 0xfb39;\n t.yodhebrew = 0x05d9;\n t.yodyodhebrew = 0x05f2;\n t.yodyodpatahhebrew = 0xfb1f;\n t.yohiragana = 0x3088;\n t.yoikorean = 0x3189;\n t.yokatakana = 0x30e8;\n t.yokatakanahalfwidth = 0xff96;\n t.yokorean = 0x315b;\n t.yosmallhiragana = 0x3087;\n t.yosmallkatakana = 0x30e7;\n t.yosmallkatakanahalfwidth = 0xff6e;\n t.yotgreek = 0x03f3;\n t.yoyaekorean = 0x3188;\n t.yoyakorean = 0x3187;\n t.yoyakthai = 0x0e22;\n t.yoyingthai = 0x0e0d;\n t.yparen = 0x24b4;\n t.ypogegrammeni = 0x037a;\n t.ypogegrammenigreekcmb = 0x0345;\n t.yr = 0x01a6;\n t.yring = 0x1e99;\n t.ysuperior = 0x02b8;\n t.ytilde = 0x1ef9;\n t.yturned = 0x028e;\n t.yuhiragana = 0x3086;\n t.yuikorean = 0x318c;\n t.yukatakana = 0x30e6;\n t.yukatakanahalfwidth = 0xff95;\n t.yukorean = 0x3160;\n t.yusbigcyrillic = 0x046b;\n t.yusbigiotifiedcyrillic = 0x046d;\n t.yuslittlecyrillic = 0x0467;\n t.yuslittleiotifiedcyrillic = 0x0469;\n t.yusmallhiragana = 0x3085;\n t.yusmallkatakana = 0x30e5;\n t.yusmallkatakanahalfwidth = 0xff6d;\n t.yuyekorean = 0x318b;\n t.yuyeokorean = 0x318a;\n t.yyabengali = 0x09df;\n t.yyadeva = 0x095f;\n t.z = 0x007a;\n t.zaarmenian = 0x0566;\n t.zacute = 0x017a;\n t.zadeva = 0x095b;\n t.zagurmukhi = 0x0a5b;\n t.zaharabic = 0x0638;\n t.zahfinalarabic = 0xfec6;\n t.zahinitialarabic = 0xfec7;\n t.zahiragana = 0x3056;\n t.zahmedialarabic = 0xfec8;\n t.zainarabic = 0x0632;\n t.zainfinalarabic = 0xfeb0;\n t.zakatakana = 0x30b6;\n t.zaqefgadolhebrew = 0x0595;\n t.zaqefqatanhebrew = 0x0594;\n t.zarqahebrew = 0x0598;\n t.zayin = 0x05d6;\n t.zayindagesh = 0xfb36;\n t.zayindageshhebrew = 0xfb36;\n t.zayinhebrew = 0x05d6;\n t.zbopomofo = 0x3117;\n t.zcaron = 0x017e;\n t.zcircle = 0x24e9;\n t.zcircumflex = 0x1e91;\n t.zcurl = 0x0291;\n t.zdot = 0x017c;\n t.zdotaccent = 0x017c;\n t.zdotbelow = 0x1e93;\n t.zecyrillic = 0x0437;\n t.zedescendercyrillic = 0x0499;\n t.zedieresiscyrillic = 0x04df;\n t.zehiragana = 0x305c;\n t.zekatakana = 0x30bc;\n t.zero = 0x0030;\n t.zeroarabic = 0x0660;\n t.zerobengali = 0x09e6;\n t.zerodeva = 0x0966;\n t.zerogujarati = 0x0ae6;\n t.zerogurmukhi = 0x0a66;\n t.zerohackarabic = 0x0660;\n t.zeroinferior = 0x2080;\n t.zeromonospace = 0xff10;\n t.zerooldstyle = 0xf730;\n t.zeropersian = 0x06f0;\n t.zerosuperior = 0x2070;\n t.zerothai = 0x0e50;\n t.zerowidthjoiner = 0xfeff;\n t.zerowidthnonjoiner = 0x200c;\n t.zerowidthspace = 0x200b;\n t.zeta = 0x03b6;\n t.zhbopomofo = 0x3113;\n t.zhearmenian = 0x056a;\n t.zhebrevecyrillic = 0x04c2;\n t.zhecyrillic = 0x0436;\n t.zhedescendercyrillic = 0x0497;\n t.zhedieresiscyrillic = 0x04dd;\n t.zihiragana = 0x3058;\n t.zikatakana = 0x30b8;\n t.zinorhebrew = 0x05ae;\n t.zlinebelow = 0x1e95;\n t.zmonospace = 0xff5a;\n t.zohiragana = 0x305e;\n t.zokatakana = 0x30be;\n t.zparen = 0x24b5;\n t.zretroflexhook = 0x0290;\n t.zstroke = 0x01b6;\n t.zuhiragana = 0x305a;\n t.zukatakana = 0x30ba;\n t[\".notdef\"] = 0x0000;\n t.angbracketleftbig = 0x2329;\n t.angbracketleftBig = 0x2329;\n t.angbracketleftbigg = 0x2329;\n t.angbracketleftBigg = 0x2329;\n t.angbracketrightBig = 0x232a;\n t.angbracketrightbig = 0x232a;\n t.angbracketrightBigg = 0x232a;\n t.angbracketrightbigg = 0x232a;\n t.arrowhookleft = 0x21aa;\n t.arrowhookright = 0x21a9;\n t.arrowlefttophalf = 0x21bc;\n t.arrowleftbothalf = 0x21bd;\n t.arrownortheast = 0x2197;\n t.arrownorthwest = 0x2196;\n t.arrowrighttophalf = 0x21c0;\n t.arrowrightbothalf = 0x21c1;\n t.arrowsoutheast = 0x2198;\n t.arrowsouthwest = 0x2199;\n t.backslashbig = 0x2216;\n t.backslashBig = 0x2216;\n t.backslashBigg = 0x2216;\n t.backslashbigg = 0x2216;\n t.bardbl = 0x2016;\n t.bracehtipdownleft = 0xfe37;\n t.bracehtipdownright = 0xfe37;\n t.bracehtipupleft = 0xfe38;\n t.bracehtipupright = 0xfe38;\n t.braceleftBig = 0x007b;\n t.braceleftbig = 0x007b;\n t.braceleftbigg = 0x007b;\n t.braceleftBigg = 0x007b;\n t.bracerightBig = 0x007d;\n t.bracerightbig = 0x007d;\n t.bracerightbigg = 0x007d;\n t.bracerightBigg = 0x007d;\n t.bracketleftbig = 0x005b;\n t.bracketleftBig = 0x005b;\n t.bracketleftbigg = 0x005b;\n t.bracketleftBigg = 0x005b;\n t.bracketrightBig = 0x005d;\n t.bracketrightbig = 0x005d;\n t.bracketrightbigg = 0x005d;\n t.bracketrightBigg = 0x005d;\n t.ceilingleftbig = 0x2308;\n t.ceilingleftBig = 0x2308;\n t.ceilingleftBigg = 0x2308;\n t.ceilingleftbigg = 0x2308;\n t.ceilingrightbig = 0x2309;\n t.ceilingrightBig = 0x2309;\n t.ceilingrightbigg = 0x2309;\n t.ceilingrightBigg = 0x2309;\n t.circledotdisplay = 0x2299;\n t.circledottext = 0x2299;\n t.circlemultiplydisplay = 0x2297;\n t.circlemultiplytext = 0x2297;\n t.circleplusdisplay = 0x2295;\n t.circleplustext = 0x2295;\n t.contintegraldisplay = 0x222e;\n t.contintegraltext = 0x222e;\n t.coproductdisplay = 0x2210;\n t.coproducttext = 0x2210;\n t.floorleftBig = 0x230a;\n t.floorleftbig = 0x230a;\n t.floorleftbigg = 0x230a;\n t.floorleftBigg = 0x230a;\n t.floorrightbig = 0x230b;\n t.floorrightBig = 0x230b;\n t.floorrightBigg = 0x230b;\n t.floorrightbigg = 0x230b;\n t.hatwide = 0x0302;\n t.hatwider = 0x0302;\n t.hatwidest = 0x0302;\n t.intercal = 0x1d40;\n t.integraldisplay = 0x222b;\n t.integraltext = 0x222b;\n t.intersectiondisplay = 0x22c2;\n t.intersectiontext = 0x22c2;\n t.logicalanddisplay = 0x2227;\n t.logicalandtext = 0x2227;\n t.logicalordisplay = 0x2228;\n t.logicalortext = 0x2228;\n t.parenleftBig = 0x0028;\n t.parenleftbig = 0x0028;\n t.parenleftBigg = 0x0028;\n t.parenleftbigg = 0x0028;\n t.parenrightBig = 0x0029;\n t.parenrightbig = 0x0029;\n t.parenrightBigg = 0x0029;\n t.parenrightbigg = 0x0029;\n t.prime = 0x2032;\n t.productdisplay = 0x220f;\n t.producttext = 0x220f;\n t.radicalbig = 0x221a;\n t.radicalBig = 0x221a;\n t.radicalBigg = 0x221a;\n t.radicalbigg = 0x221a;\n t.radicalbt = 0x221a;\n t.radicaltp = 0x221a;\n t.radicalvertex = 0x221a;\n t.slashbig = 0x002f;\n t.slashBig = 0x002f;\n t.slashBigg = 0x002f;\n t.slashbigg = 0x002f;\n t.summationdisplay = 0x2211;\n t.summationtext = 0x2211;\n t.tildewide = 0x02dc;\n t.tildewider = 0x02dc;\n t.tildewidest = 0x02dc;\n t.uniondisplay = 0x22c3;\n t.unionmultidisplay = 0x228e;\n t.unionmultitext = 0x228e;\n t.unionsqdisplay = 0x2294;\n t.unionsqtext = 0x2294;\n t.uniontext = 0x22c3;\n t.vextenddouble = 0x2225;\n t.vextendsingle = 0x2223;\n});\nvar getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) {\n t.space = 0x0020;\n t.a1 = 0x2701;\n t.a2 = 0x2702;\n t.a202 = 0x2703;\n t.a3 = 0x2704;\n t.a4 = 0x260e;\n t.a5 = 0x2706;\n t.a119 = 0x2707;\n t.a118 = 0x2708;\n t.a117 = 0x2709;\n t.a11 = 0x261b;\n t.a12 = 0x261e;\n t.a13 = 0x270c;\n t.a14 = 0x270d;\n t.a15 = 0x270e;\n t.a16 = 0x270f;\n t.a105 = 0x2710;\n t.a17 = 0x2711;\n t.a18 = 0x2712;\n t.a19 = 0x2713;\n t.a20 = 0x2714;\n t.a21 = 0x2715;\n t.a22 = 0x2716;\n t.a23 = 0x2717;\n t.a24 = 0x2718;\n t.a25 = 0x2719;\n t.a26 = 0x271a;\n t.a27 = 0x271b;\n t.a28 = 0x271c;\n t.a6 = 0x271d;\n t.a7 = 0x271e;\n t.a8 = 0x271f;\n t.a9 = 0x2720;\n t.a10 = 0x2721;\n t.a29 = 0x2722;\n t.a30 = 0x2723;\n t.a31 = 0x2724;\n t.a32 = 0x2725;\n t.a33 = 0x2726;\n t.a34 = 0x2727;\n t.a35 = 0x2605;\n t.a36 = 0x2729;\n t.a37 = 0x272a;\n t.a38 = 0x272b;\n t.a39 = 0x272c;\n t.a40 = 0x272d;\n t.a41 = 0x272e;\n t.a42 = 0x272f;\n t.a43 = 0x2730;\n t.a44 = 0x2731;\n t.a45 = 0x2732;\n t.a46 = 0x2733;\n t.a47 = 0x2734;\n t.a48 = 0x2735;\n t.a49 = 0x2736;\n t.a50 = 0x2737;\n t.a51 = 0x2738;\n t.a52 = 0x2739;\n t.a53 = 0x273a;\n t.a54 = 0x273b;\n t.a55 = 0x273c;\n t.a56 = 0x273d;\n t.a57 = 0x273e;\n t.a58 = 0x273f;\n t.a59 = 0x2740;\n t.a60 = 0x2741;\n t.a61 = 0x2742;\n t.a62 = 0x2743;\n t.a63 = 0x2744;\n t.a64 = 0x2745;\n t.a65 = 0x2746;\n t.a66 = 0x2747;\n t.a67 = 0x2748;\n t.a68 = 0x2749;\n t.a69 = 0x274a;\n t.a70 = 0x274b;\n t.a71 = 0x25cf;\n t.a72 = 0x274d;\n t.a73 = 0x25a0;\n t.a74 = 0x274f;\n t.a203 = 0x2750;\n t.a75 = 0x2751;\n t.a204 = 0x2752;\n t.a76 = 0x25b2;\n t.a77 = 0x25bc;\n t.a78 = 0x25c6;\n t.a79 = 0x2756;\n t.a81 = 0x25d7;\n t.a82 = 0x2758;\n t.a83 = 0x2759;\n t.a84 = 0x275a;\n t.a97 = 0x275b;\n t.a98 = 0x275c;\n t.a99 = 0x275d;\n t.a100 = 0x275e;\n t.a101 = 0x2761;\n t.a102 = 0x2762;\n t.a103 = 0x2763;\n t.a104 = 0x2764;\n t.a106 = 0x2765;\n t.a107 = 0x2766;\n t.a108 = 0x2767;\n t.a112 = 0x2663;\n t.a111 = 0x2666;\n t.a110 = 0x2665;\n t.a109 = 0x2660;\n t.a120 = 0x2460;\n t.a121 = 0x2461;\n t.a122 = 0x2462;\n t.a123 = 0x2463;\n t.a124 = 0x2464;\n t.a125 = 0x2465;\n t.a126 = 0x2466;\n t.a127 = 0x2467;\n t.a128 = 0x2468;\n t.a129 = 0x2469;\n t.a130 = 0x2776;\n t.a131 = 0x2777;\n t.a132 = 0x2778;\n t.a133 = 0x2779;\n t.a134 = 0x277a;\n t.a135 = 0x277b;\n t.a136 = 0x277c;\n t.a137 = 0x277d;\n t.a138 = 0x277e;\n t.a139 = 0x277f;\n t.a140 = 0x2780;\n t.a141 = 0x2781;\n t.a142 = 0x2782;\n t.a143 = 0x2783;\n t.a144 = 0x2784;\n t.a145 = 0x2785;\n t.a146 = 0x2786;\n t.a147 = 0x2787;\n t.a148 = 0x2788;\n t.a149 = 0x2789;\n t.a150 = 0x278a;\n t.a151 = 0x278b;\n t.a152 = 0x278c;\n t.a153 = 0x278d;\n t.a154 = 0x278e;\n t.a155 = 0x278f;\n t.a156 = 0x2790;\n t.a157 = 0x2791;\n t.a158 = 0x2792;\n t.a159 = 0x2793;\n t.a160 = 0x2794;\n t.a161 = 0x2192;\n t.a163 = 0x2194;\n t.a164 = 0x2195;\n t.a196 = 0x2798;\n t.a165 = 0x2799;\n t.a192 = 0x279a;\n t.a166 = 0x279b;\n t.a167 = 0x279c;\n t.a168 = 0x279d;\n t.a169 = 0x279e;\n t.a170 = 0x279f;\n t.a171 = 0x27a0;\n t.a172 = 0x27a1;\n t.a173 = 0x27a2;\n t.a162 = 0x27a3;\n t.a174 = 0x27a4;\n t.a175 = 0x27a5;\n t.a176 = 0x27a6;\n t.a177 = 0x27a7;\n t.a178 = 0x27a8;\n t.a179 = 0x27a9;\n t.a193 = 0x27aa;\n t.a180 = 0x27ab;\n t.a199 = 0x27ac;\n t.a181 = 0x27ad;\n t.a200 = 0x27ae;\n t.a182 = 0x27af;\n t.a201 = 0x27b1;\n t.a183 = 0x27b2;\n t.a184 = 0x27b3;\n t.a197 = 0x27b4;\n t.a185 = 0x27b5;\n t.a194 = 0x27b6;\n t.a198 = 0x27b7;\n t.a186 = 0x27b8;\n t.a195 = 0x27b9;\n t.a187 = 0x27ba;\n t.a188 = 0x27bb;\n t.a189 = 0x27bc;\n t.a190 = 0x27bd;\n t.a191 = 0x27be;\n t.a89 = 0x2768;\n t.a90 = 0x2769;\n t.a93 = 0x276a;\n t.a94 = 0x276b;\n t.a91 = 0x276c;\n t.a92 = 0x276d;\n t.a205 = 0x276e;\n t.a85 = 0x276f;\n t.a206 = 0x2770;\n t.a86 = 0x2771;\n t.a87 = 0x2772;\n t.a88 = 0x2773;\n t.a95 = 0x2774;\n t.a96 = 0x2775;\n t[\".notdef\"] = 0x0000;\n});\nexports.getGlyphsUnicode = getGlyphsUnicode;\nexports.getDingbatsGlyphsUnicode = getDingbatsGlyphsUnicode;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getSupplementalGlyphMapForCalibri = exports.getSupplementalGlyphMapForArialBlack = exports.getGlyphMapForStandardFonts = exports.getSymbolsFonts = exports.getSerifFonts = exports.getNonStdFontMap = exports.getStdFontMap = void 0;\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nconst getStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) {\n t.ArialNarrow = \"Helvetica\";\n t[\"ArialNarrow-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialNarrow-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialNarrow-Italic\"] = \"Helvetica-Oblique\";\n t.ArialBlack = \"Helvetica\";\n t[\"ArialBlack-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialBlack-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialBlack-Italic\"] = \"Helvetica-Oblique\";\n t[\"Arial-Black\"] = \"Helvetica\";\n t[\"Arial-Black-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-Black-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-Black-Italic\"] = \"Helvetica-Oblique\";\n t.Arial = \"Helvetica\";\n t[\"Arial-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-Italic\"] = \"Helvetica-Oblique\";\n t[\"Arial-BoldItalicMT\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-BoldMT\"] = \"Helvetica-Bold\";\n t[\"Arial-ItalicMT\"] = \"Helvetica-Oblique\";\n t.ArialMT = \"Helvetica\";\n t[\"Courier-Bold\"] = \"Courier-Bold\";\n t[\"Courier-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"Courier-Italic\"] = \"Courier-Oblique\";\n t.CourierNew = \"Courier\";\n t[\"CourierNew-Bold\"] = \"Courier-Bold\";\n t[\"CourierNew-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"CourierNew-Italic\"] = \"Courier-Oblique\";\n t[\"CourierNewPS-BoldItalicMT\"] = \"Courier-BoldOblique\";\n t[\"CourierNewPS-BoldMT\"] = \"Courier-Bold\";\n t[\"CourierNewPS-ItalicMT\"] = \"Courier-Oblique\";\n t.CourierNewPSMT = \"Courier\";\n t.Helvetica = \"Helvetica\";\n t[\"Helvetica-Bold\"] = \"Helvetica-Bold\";\n t[\"Helvetica-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Helvetica-BoldOblique\"] = \"Helvetica-BoldOblique\";\n t[\"Helvetica-Italic\"] = \"Helvetica-Oblique\";\n t[\"Helvetica-Oblique\"] = \"Helvetica-Oblique\";\n t[\"Symbol-Bold\"] = \"Symbol\";\n t[\"Symbol-BoldItalic\"] = \"Symbol\";\n t[\"Symbol-Italic\"] = \"Symbol\";\n t.TimesNewRoman = \"Times-Roman\";\n t[\"TimesNewRoman-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRoman-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRoman-Italic\"] = \"Times-Italic\";\n t.TimesNewRomanPS = \"Times-Roman\";\n t[\"TimesNewRomanPS-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRomanPS-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPS-BoldItalicMT\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPS-BoldMT\"] = \"Times-Bold\";\n t[\"TimesNewRomanPS-Italic\"] = \"Times-Italic\";\n t[\"TimesNewRomanPS-ItalicMT\"] = \"Times-Italic\";\n t.TimesNewRomanPSMT = \"Times-Roman\";\n t[\"TimesNewRomanPSMT-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRomanPSMT-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPSMT-Italic\"] = \"Times-Italic\";\n});\nexports.getStdFontMap = getStdFontMap;\nconst getNonStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) {\n t.Calibri = \"Helvetica\";\n t[\"Calibri-Bold\"] = \"Helvetica-Bold\";\n t[\"Calibri-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Calibri-Italic\"] = \"Helvetica-Oblique\";\n t.CenturyGothic = \"Helvetica\";\n t[\"CenturyGothic-Bold\"] = \"Helvetica-Bold\";\n t[\"CenturyGothic-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"CenturyGothic-Italic\"] = \"Helvetica-Oblique\";\n t.ComicSansMS = \"Comic Sans MS\";\n t[\"ComicSansMS-Bold\"] = \"Comic Sans MS-Bold\";\n t[\"ComicSansMS-BoldItalic\"] = \"Comic Sans MS-BoldItalic\";\n t[\"ComicSansMS-Italic\"] = \"Comic Sans MS-Italic\";\n t.LucidaConsole = \"Courier\";\n t[\"LucidaConsole-Bold\"] = \"Courier-Bold\";\n t[\"LucidaConsole-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"LucidaConsole-Italic\"] = \"Courier-Oblique\";\n t[\"LucidaSans-Demi\"] = \"Helvetica-Bold\";\n t[\"MS-Gothic\"] = \"MS Gothic\";\n t[\"MS-Gothic-Bold\"] = \"MS Gothic-Bold\";\n t[\"MS-Gothic-BoldItalic\"] = \"MS Gothic-BoldItalic\";\n t[\"MS-Gothic-Italic\"] = \"MS Gothic-Italic\";\n t[\"MS-Mincho\"] = \"MS Mincho\";\n t[\"MS-Mincho-Bold\"] = \"MS Mincho-Bold\";\n t[\"MS-Mincho-BoldItalic\"] = \"MS Mincho-BoldItalic\";\n t[\"MS-Mincho-Italic\"] = \"MS Mincho-Italic\";\n t[\"MS-PGothic\"] = \"MS PGothic\";\n t[\"MS-PGothic-Bold\"] = \"MS PGothic-Bold\";\n t[\"MS-PGothic-BoldItalic\"] = \"MS PGothic-BoldItalic\";\n t[\"MS-PGothic-Italic\"] = \"MS PGothic-Italic\";\n t[\"MS-PMincho\"] = \"MS PMincho\";\n t[\"MS-PMincho-Bold\"] = \"MS PMincho-Bold\";\n t[\"MS-PMincho-BoldItalic\"] = \"MS PMincho-BoldItalic\";\n t[\"MS-PMincho-Italic\"] = \"MS PMincho-Italic\";\n t.NuptialScript = \"Times-Italic\";\n t.SegoeUISymbol = \"Helvetica\";\n t.Wingdings = \"ZapfDingbats\";\n t[\"Wingdings-Regular\"] = \"ZapfDingbats\";\n});\nexports.getNonStdFontMap = getNonStdFontMap;\nconst getSerifFonts = (0, _core_utils.getLookupTableFactory)(function (t) {\n t[\"Adobe Jenson\"] = true;\n t[\"Adobe Text\"] = true;\n t.Albertus = true;\n t.Aldus = true;\n t.Alexandria = true;\n t.Algerian = true;\n t[\"American Typewriter\"] = true;\n t.Antiqua = true;\n t.Apex = true;\n t.Arno = true;\n t.Aster = true;\n t.Aurora = true;\n t.Baskerville = true;\n t.Bell = true;\n t.Bembo = true;\n t[\"Bembo Schoolbook\"] = true;\n t.Benguiat = true;\n t[\"Berkeley Old Style\"] = true;\n t[\"Bernhard Modern\"] = true;\n t[\"Berthold City\"] = true;\n t.Bodoni = true;\n t[\"Bauer Bodoni\"] = true;\n t[\"Book Antiqua\"] = true;\n t.Bookman = true;\n t[\"Bordeaux Roman\"] = true;\n t[\"Californian FB\"] = true;\n t.Calisto = true;\n t.Calvert = true;\n t.Capitals = true;\n t.Cambria = true;\n t.Cartier = true;\n t.Caslon = true;\n t.Catull = true;\n t.Centaur = true;\n t[\"Century Old Style\"] = true;\n t[\"Century Schoolbook\"] = true;\n t.Chaparral = true;\n t[\"Charis SIL\"] = true;\n t.Cheltenham = true;\n t[\"Cholla Slab\"] = true;\n t.Clarendon = true;\n t.Clearface = true;\n t.Cochin = true;\n t.Colonna = true;\n t[\"Computer Modern\"] = true;\n t[\"Concrete Roman\"] = true;\n t.Constantia = true;\n t[\"Cooper Black\"] = true;\n t.Corona = true;\n t.Ecotype = true;\n t.Egyptienne = true;\n t.Elephant = true;\n t.Excelsior = true;\n t.Fairfield = true;\n t[\"FF Scala\"] = true;\n t.Folkard = true;\n t.Footlight = true;\n t.FreeSerif = true;\n t[\"Friz Quadrata\"] = true;\n t.Garamond = true;\n t.Gentium = true;\n t.Georgia = true;\n t.Gloucester = true;\n t[\"Goudy Old Style\"] = true;\n t[\"Goudy Schoolbook\"] = true;\n t[\"Goudy Pro Font\"] = true;\n t.Granjon = true;\n t[\"Guardian Egyptian\"] = true;\n t.Heather = true;\n t.Hercules = true;\n t[\"High Tower Text\"] = true;\n t.Hiroshige = true;\n t[\"Hoefler Text\"] = true;\n t[\"Humana Serif\"] = true;\n t.Imprint = true;\n t[\"Ionic No. 5\"] = true;\n t.Janson = true;\n t.Joanna = true;\n t.Korinna = true;\n t.Lexicon = true;\n t[\"Liberation Serif\"] = true;\n t[\"Linux Libertine\"] = true;\n t.Literaturnaya = true;\n t.Lucida = true;\n t[\"Lucida Bright\"] = true;\n t.Melior = true;\n t.Memphis = true;\n t.Miller = true;\n t.Minion = true;\n t.Modern = true;\n t[\"Mona Lisa\"] = true;\n t[\"Mrs Eaves\"] = true;\n t[\"MS Serif\"] = true;\n t[\"Museo Slab\"] = true;\n t[\"New York\"] = true;\n t[\"Nimbus Roman\"] = true;\n t[\"NPS Rawlinson Roadway\"] = true;\n t.NuptialScript = true;\n t.Palatino = true;\n t.Perpetua = true;\n t.Plantin = true;\n t[\"Plantin Schoolbook\"] = true;\n t.Playbill = true;\n t[\"Poor Richard\"] = true;\n t[\"Rawlinson Roadway\"] = true;\n t.Renault = true;\n t.Requiem = true;\n t.Rockwell = true;\n t.Roman = true;\n t[\"Rotis Serif\"] = true;\n t.Sabon = true;\n t.Scala = true;\n t.Seagull = true;\n t.Sistina = true;\n t.Souvenir = true;\n t.STIX = true;\n t[\"Stone Informal\"] = true;\n t[\"Stone Serif\"] = true;\n t.Sylfaen = true;\n t.Times = true;\n t.Trajan = true;\n t[\"Trinité\"] = true;\n t[\"Trump Mediaeval\"] = true;\n t.Utopia = true;\n t[\"Vale Type\"] = true;\n t[\"Bitstream Vera\"] = true;\n t[\"Vera Serif\"] = true;\n t.Versailles = true;\n t.Wanted = true;\n t.Weiss = true;\n t[\"Wide Latin\"] = true;\n t.Windsor = true;\n t.XITS = true;\n});\nexports.getSerifFonts = getSerifFonts;\nconst getSymbolsFonts = (0, _core_utils.getLookupTableFactory)(function (t) {\n t.Dingbats = true;\n t.Symbol = true;\n t.ZapfDingbats = true;\n});\nexports.getSymbolsFonts = getSymbolsFonts;\nconst getGlyphMapForStandardFonts = (0, _core_utils.getLookupTableFactory)(function (t) {\n t[2] = 10;\n t[3] = 32;\n t[4] = 33;\n t[5] = 34;\n t[6] = 35;\n t[7] = 36;\n t[8] = 37;\n t[9] = 38;\n t[10] = 39;\n t[11] = 40;\n t[12] = 41;\n t[13] = 42;\n t[14] = 43;\n t[15] = 44;\n t[16] = 45;\n t[17] = 46;\n t[18] = 47;\n t[19] = 48;\n t[20] = 49;\n t[21] = 50;\n t[22] = 51;\n t[23] = 52;\n t[24] = 53;\n t[25] = 54;\n t[26] = 55;\n t[27] = 56;\n t[28] = 57;\n t[29] = 58;\n t[30] = 894;\n t[31] = 60;\n t[32] = 61;\n t[33] = 62;\n t[34] = 63;\n t[35] = 64;\n t[36] = 65;\n t[37] = 66;\n t[38] = 67;\n t[39] = 68;\n t[40] = 69;\n t[41] = 70;\n t[42] = 71;\n t[43] = 72;\n t[44] = 73;\n t[45] = 74;\n t[46] = 75;\n t[47] = 76;\n t[48] = 77;\n t[49] = 78;\n t[50] = 79;\n t[51] = 80;\n t[52] = 81;\n t[53] = 82;\n t[54] = 83;\n t[55] = 84;\n t[56] = 85;\n t[57] = 86;\n t[58] = 87;\n t[59] = 88;\n t[60] = 89;\n t[61] = 90;\n t[62] = 91;\n t[63] = 92;\n t[64] = 93;\n t[65] = 94;\n t[66] = 95;\n t[67] = 96;\n t[68] = 97;\n t[69] = 98;\n t[70] = 99;\n t[71] = 100;\n t[72] = 101;\n t[73] = 102;\n t[74] = 103;\n t[75] = 104;\n t[76] = 105;\n t[77] = 106;\n t[78] = 107;\n t[79] = 108;\n t[80] = 109;\n t[81] = 110;\n t[82] = 111;\n t[83] = 112;\n t[84] = 113;\n t[85] = 114;\n t[86] = 115;\n t[87] = 116;\n t[88] = 117;\n t[89] = 118;\n t[90] = 119;\n t[91] = 120;\n t[92] = 121;\n t[93] = 122;\n t[94] = 123;\n t[95] = 124;\n t[96] = 125;\n t[97] = 126;\n t[98] = 196;\n t[99] = 197;\n t[100] = 199;\n t[101] = 201;\n t[102] = 209;\n t[103] = 214;\n t[104] = 220;\n t[105] = 225;\n t[106] = 224;\n t[107] = 226;\n t[108] = 228;\n t[109] = 227;\n t[110] = 229;\n t[111] = 231;\n t[112] = 233;\n t[113] = 232;\n t[114] = 234;\n t[115] = 235;\n t[116] = 237;\n t[117] = 236;\n t[118] = 238;\n t[119] = 239;\n t[120] = 241;\n t[121] = 243;\n t[122] = 242;\n t[123] = 244;\n t[124] = 246;\n t[125] = 245;\n t[126] = 250;\n t[127] = 249;\n t[128] = 251;\n t[129] = 252;\n t[130] = 8224;\n t[131] = 176;\n t[132] = 162;\n t[133] = 163;\n t[134] = 167;\n t[135] = 8226;\n t[136] = 182;\n t[137] = 223;\n t[138] = 174;\n t[139] = 169;\n t[140] = 8482;\n t[141] = 180;\n t[142] = 168;\n t[143] = 8800;\n t[144] = 198;\n t[145] = 216;\n t[146] = 8734;\n t[147] = 177;\n t[148] = 8804;\n t[149] = 8805;\n t[150] = 165;\n t[151] = 181;\n t[152] = 8706;\n t[153] = 8721;\n t[154] = 8719;\n t[156] = 8747;\n t[157] = 170;\n t[158] = 186;\n t[159] = 8486;\n t[160] = 230;\n t[161] = 248;\n t[162] = 191;\n t[163] = 161;\n t[164] = 172;\n t[165] = 8730;\n t[166] = 402;\n t[167] = 8776;\n t[168] = 8710;\n t[169] = 171;\n t[170] = 187;\n t[171] = 8230;\n t[210] = 218;\n t[223] = 711;\n t[224] = 321;\n t[225] = 322;\n t[227] = 353;\n t[229] = 382;\n t[234] = 253;\n t[252] = 263;\n t[253] = 268;\n t[254] = 269;\n t[258] = 258;\n t[260] = 260;\n t[261] = 261;\n t[265] = 280;\n t[266] = 281;\n t[268] = 283;\n t[269] = 313;\n t[275] = 323;\n t[276] = 324;\n t[278] = 328;\n t[284] = 345;\n t[285] = 346;\n t[286] = 347;\n t[292] = 367;\n t[295] = 377;\n t[296] = 378;\n t[298] = 380;\n t[305] = 963;\n t[306] = 964;\n t[307] = 966;\n t[308] = 8215;\n t[309] = 8252;\n t[310] = 8319;\n t[311] = 8359;\n t[312] = 8592;\n t[313] = 8593;\n t[337] = 9552;\n t[493] = 1039;\n t[494] = 1040;\n t[705] = 1524;\n t[706] = 8362;\n t[710] = 64288;\n t[711] = 64298;\n t[759] = 1617;\n t[761] = 1776;\n t[763] = 1778;\n t[775] = 1652;\n t[777] = 1764;\n t[778] = 1780;\n t[779] = 1781;\n t[780] = 1782;\n t[782] = 771;\n t[783] = 64726;\n t[786] = 8363;\n t[788] = 8532;\n t[790] = 768;\n t[791] = 769;\n t[792] = 768;\n t[795] = 803;\n t[797] = 64336;\n t[798] = 64337;\n t[799] = 64342;\n t[800] = 64343;\n t[801] = 64344;\n t[802] = 64345;\n t[803] = 64362;\n t[804] = 64363;\n t[805] = 64364;\n t[2424] = 7821;\n t[2425] = 7822;\n t[2426] = 7823;\n t[2427] = 7824;\n t[2428] = 7825;\n t[2429] = 7826;\n t[2430] = 7827;\n t[2433] = 7682;\n t[2678] = 8045;\n t[2679] = 8046;\n t[2830] = 1552;\n t[2838] = 686;\n t[2840] = 751;\n t[2842] = 753;\n t[2843] = 754;\n t[2844] = 755;\n t[2846] = 757;\n t[2856] = 767;\n t[2857] = 848;\n t[2858] = 849;\n t[2862] = 853;\n t[2863] = 854;\n t[2864] = 855;\n t[2865] = 861;\n t[2866] = 862;\n t[2906] = 7460;\n t[2908] = 7462;\n t[2909] = 7463;\n t[2910] = 7464;\n t[2912] = 7466;\n t[2913] = 7467;\n t[2914] = 7468;\n t[2916] = 7470;\n t[2917] = 7471;\n t[2918] = 7472;\n t[2920] = 7474;\n t[2921] = 7475;\n t[2922] = 7476;\n t[2924] = 7478;\n t[2925] = 7479;\n t[2926] = 7480;\n t[2928] = 7482;\n t[2929] = 7483;\n t[2930] = 7484;\n t[2932] = 7486;\n t[2933] = 7487;\n t[2934] = 7488;\n t[2936] = 7490;\n t[2937] = 7491;\n t[2938] = 7492;\n t[2940] = 7494;\n t[2941] = 7495;\n t[2942] = 7496;\n t[2944] = 7498;\n t[2946] = 7500;\n t[2948] = 7502;\n t[2950] = 7504;\n t[2951] = 7505;\n t[2952] = 7506;\n t[2954] = 7508;\n t[2955] = 7509;\n t[2956] = 7510;\n t[2958] = 7512;\n t[2959] = 7513;\n t[2960] = 7514;\n t[2962] = 7516;\n t[2963] = 7517;\n t[2964] = 7518;\n t[2966] = 7520;\n t[2967] = 7521;\n t[2968] = 7522;\n t[2970] = 7524;\n t[2971] = 7525;\n t[2972] = 7526;\n t[2974] = 7528;\n t[2975] = 7529;\n t[2976] = 7530;\n t[2978] = 1537;\n t[2979] = 1538;\n t[2980] = 1539;\n t[2982] = 1549;\n t[2983] = 1551;\n t[2984] = 1552;\n t[2986] = 1554;\n t[2987] = 1555;\n t[2988] = 1556;\n t[2990] = 1623;\n t[2991] = 1624;\n t[2995] = 1775;\n t[2999] = 1791;\n t[3002] = 64290;\n t[3003] = 64291;\n t[3004] = 64292;\n t[3006] = 64294;\n t[3007] = 64295;\n t[3008] = 64296;\n t[3011] = 1900;\n t[3014] = 8223;\n t[3015] = 8244;\n t[3017] = 7532;\n t[3018] = 7533;\n t[3019] = 7534;\n t[3075] = 7590;\n t[3076] = 7591;\n t[3079] = 7594;\n t[3080] = 7595;\n t[3083] = 7598;\n t[3084] = 7599;\n t[3087] = 7602;\n t[3088] = 7603;\n t[3091] = 7606;\n t[3092] = 7607;\n t[3095] = 7610;\n t[3096] = 7611;\n t[3099] = 7614;\n t[3100] = 7615;\n t[3103] = 7618;\n t[3104] = 7619;\n t[3107] = 8337;\n t[3108] = 8338;\n t[3116] = 1884;\n t[3119] = 1885;\n t[3120] = 1885;\n t[3123] = 1886;\n t[3124] = 1886;\n t[3127] = 1887;\n t[3128] = 1887;\n t[3131] = 1888;\n t[3132] = 1888;\n t[3135] = 1889;\n t[3136] = 1889;\n t[3139] = 1890;\n t[3140] = 1890;\n t[3143] = 1891;\n t[3144] = 1891;\n t[3147] = 1892;\n t[3148] = 1892;\n t[3153] = 580;\n t[3154] = 581;\n t[3157] = 584;\n t[3158] = 585;\n t[3161] = 588;\n t[3162] = 589;\n t[3165] = 891;\n t[3166] = 892;\n t[3169] = 1274;\n t[3170] = 1275;\n t[3173] = 1278;\n t[3174] = 1279;\n t[3181] = 7622;\n t[3182] = 7623;\n t[3282] = 11799;\n t[3316] = 578;\n t[3379] = 42785;\n t[3393] = 1159;\n t[3416] = 8377;\n});\nexports.getGlyphMapForStandardFonts = getGlyphMapForStandardFonts;\nconst getSupplementalGlyphMapForArialBlack = (0, _core_utils.getLookupTableFactory)(function (t) {\n t[227] = 322;\n t[264] = 261;\n t[291] = 346;\n});\nexports.getSupplementalGlyphMapForArialBlack = getSupplementalGlyphMapForArialBlack;\nconst getSupplementalGlyphMapForCalibri = (0, _core_utils.getLookupTableFactory)(function (t) {\n t[1] = 32;\n t[4] = 65;\n t[17] = 66;\n t[18] = 67;\n t[24] = 68;\n t[28] = 69;\n t[38] = 70;\n t[39] = 71;\n t[44] = 72;\n t[47] = 73;\n t[58] = 74;\n t[60] = 75;\n t[62] = 76;\n t[68] = 77;\n t[69] = 78;\n t[75] = 79;\n t[87] = 80;\n t[89] = 81;\n t[90] = 82;\n t[94] = 83;\n t[100] = 84;\n t[104] = 85;\n t[115] = 86;\n t[116] = 87;\n t[121] = 88;\n t[122] = 89;\n t[127] = 90;\n t[258] = 97;\n t[268] = 261;\n t[271] = 98;\n t[272] = 99;\n t[273] = 263;\n t[282] = 100;\n t[286] = 101;\n t[295] = 281;\n t[296] = 102;\n t[336] = 103;\n t[346] = 104;\n t[349] = 105;\n t[361] = 106;\n t[364] = 107;\n t[367] = 108;\n t[371] = 322;\n t[373] = 109;\n t[374] = 110;\n t[381] = 111;\n t[383] = 243;\n t[393] = 112;\n t[395] = 113;\n t[396] = 114;\n t[400] = 115;\n t[401] = 347;\n t[410] = 116;\n t[437] = 117;\n t[448] = 118;\n t[449] = 119;\n t[454] = 120;\n t[455] = 121;\n t[460] = 122;\n t[463] = 380;\n t[853] = 44;\n t[855] = 58;\n t[856] = 46;\n t[876] = 47;\n t[878] = 45;\n t[882] = 45;\n t[894] = 40;\n t[895] = 41;\n t[896] = 91;\n t[897] = 93;\n t[923] = 64;\n t[1004] = 48;\n t[1005] = 49;\n t[1006] = 50;\n t[1007] = 51;\n t[1008] = 52;\n t[1009] = 53;\n t[1010] = 54;\n t[1011] = 55;\n t[1012] = 56;\n t[1013] = 57;\n t[1081] = 37;\n t[1085] = 43;\n t[1086] = 45;\n});\nexports.getSupplementalGlyphMapForCalibri = getSupplementalGlyphMapForCalibri;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar getLookupTableFactory = __w_pdfjs_require__(8).getLookupTableFactory;\nvar getSpecialPUASymbols = getLookupTableFactory(function (t) {\n t[63721] = 0x00a9;\n t[63193] = 0x00a9;\n t[63720] = 0x00ae;\n t[63194] = 0x00ae;\n t[63722] = 0x2122;\n t[63195] = 0x2122;\n t[63729] = 0x23a7;\n t[63730] = 0x23a8;\n t[63731] = 0x23a9;\n t[63740] = 0x23ab;\n t[63741] = 0x23ac;\n t[63742] = 0x23ad;\n t[63726] = 0x23a1;\n t[63727] = 0x23a2;\n t[63728] = 0x23a3;\n t[63737] = 0x23a4;\n t[63738] = 0x23a5;\n t[63739] = 0x23a6;\n t[63723] = 0x239b;\n t[63724] = 0x239c;\n t[63725] = 0x239d;\n t[63734] = 0x239e;\n t[63735] = 0x239f;\n t[63736] = 0x23a0;\n});\nfunction mapSpecialUnicodeValues(code) {\n if (code >= 0xfff0 && code <= 0xffff) {\n return 0;\n } else if (code >= 0xf600 && code <= 0xf8ff) {\n return getSpecialPUASymbols()[code] || code;\n } else if (code === 0x00ad) {\n return 0x002d;\n }\n return code;\n}\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n var unicode = glyphsUnicodeMap[name];\n if (unicode !== undefined) {\n return unicode;\n }\n if (!name) {\n return -1;\n }\n if (name[0] === \"u\") {\n var nameLen = name.length, hexStr;\n if (nameLen === 7 && name[1] === \"n\" && name[2] === \"i\") {\n hexStr = name.substring(3);\n } else if (nameLen >= 5 && nameLen <= 7) {\n hexStr = name.substring(1);\n } else {\n return -1;\n }\n if (hexStr === hexStr.toUpperCase()) {\n unicode = parseInt(hexStr, 16);\n if (unicode >= 0) {\n return unicode;\n }\n }\n }\n return -1;\n}\nvar UnicodeRanges = [\n {\n begin: 0x0000,\n end: 0x007f\n },\n {\n begin: 0x0080,\n end: 0x00ff\n },\n {\n begin: 0x0100,\n end: 0x017f\n },\n {\n begin: 0x0180,\n end: 0x024f\n },\n {\n begin: 0x0250,\n end: 0x02af\n },\n {\n begin: 0x02b0,\n end: 0x02ff\n },\n {\n begin: 0x0300,\n end: 0x036f\n },\n {\n begin: 0x0370,\n end: 0x03ff\n },\n {\n begin: 0x2c80,\n end: 0x2cff\n },\n {\n begin: 0x0400,\n end: 0x04ff\n },\n {\n begin: 0x0530,\n end: 0x058f\n },\n {\n begin: 0x0590,\n end: 0x05ff\n },\n {\n begin: 0xa500,\n end: 0xa63f\n },\n {\n begin: 0x0600,\n end: 0x06ff\n },\n {\n begin: 0x07c0,\n end: 0x07ff\n },\n {\n begin: 0x0900,\n end: 0x097f\n },\n {\n begin: 0x0980,\n end: 0x09ff\n },\n {\n begin: 0x0a00,\n end: 0x0a7f\n },\n {\n begin: 0x0a80,\n end: 0x0aff\n },\n {\n begin: 0x0b00,\n end: 0x0b7f\n },\n {\n begin: 0x0b80,\n end: 0x0bff\n },\n {\n begin: 0x0c00,\n end: 0x0c7f\n },\n {\n begin: 0x0c80,\n end: 0x0cff\n },\n {\n begin: 0x0d00,\n end: 0x0d7f\n },\n {\n begin: 0x0e00,\n end: 0x0e7f\n },\n {\n begin: 0x0e80,\n end: 0x0eff\n },\n {\n begin: 0x10a0,\n end: 0x10ff\n },\n {\n begin: 0x1b00,\n end: 0x1b7f\n },\n {\n begin: 0x1100,\n end: 0x11ff\n },\n {\n begin: 0x1e00,\n end: 0x1eff\n },\n {\n begin: 0x1f00,\n end: 0x1fff\n },\n {\n begin: 0x2000,\n end: 0x206f\n },\n {\n begin: 0x2070,\n end: 0x209f\n },\n {\n begin: 0x20a0,\n end: 0x20cf\n },\n {\n begin: 0x20d0,\n end: 0x20ff\n },\n {\n begin: 0x2100,\n end: 0x214f\n },\n {\n begin: 0x2150,\n end: 0x218f\n },\n {\n begin: 0x2190,\n end: 0x21ff\n },\n {\n begin: 0x2200,\n end: 0x22ff\n },\n {\n begin: 0x2300,\n end: 0x23ff\n },\n {\n begin: 0x2400,\n end: 0x243f\n },\n {\n begin: 0x2440,\n end: 0x245f\n },\n {\n begin: 0x2460,\n end: 0x24ff\n },\n {\n begin: 0x2500,\n end: 0x257f\n },\n {\n begin: 0x2580,\n end: 0x259f\n },\n {\n begin: 0x25a0,\n end: 0x25ff\n },\n {\n begin: 0x2600,\n end: 0x26ff\n },\n {\n begin: 0x2700,\n end: 0x27bf\n },\n {\n begin: 0x3000,\n end: 0x303f\n },\n {\n begin: 0x3040,\n end: 0x309f\n },\n {\n begin: 0x30a0,\n end: 0x30ff\n },\n {\n begin: 0x3100,\n end: 0x312f\n },\n {\n begin: 0x3130,\n end: 0x318f\n },\n {\n begin: 0xa840,\n end: 0xa87f\n },\n {\n begin: 0x3200,\n end: 0x32ff\n },\n {\n begin: 0x3300,\n end: 0x33ff\n },\n {\n begin: 0xac00,\n end: 0xd7af\n },\n {\n begin: 0xd800,\n end: 0xdfff\n },\n {\n begin: 0x10900,\n end: 0x1091f\n },\n {\n begin: 0x4e00,\n end: 0x9fff\n },\n {\n begin: 0xe000,\n end: 0xf8ff\n },\n {\n begin: 0x31c0,\n end: 0x31ef\n },\n {\n begin: 0xfb00,\n end: 0xfb4f\n },\n {\n begin: 0xfb50,\n end: 0xfdff\n },\n {\n begin: 0xfe20,\n end: 0xfe2f\n },\n {\n begin: 0xfe10,\n end: 0xfe1f\n },\n {\n begin: 0xfe50,\n end: 0xfe6f\n },\n {\n begin: 0xfe70,\n end: 0xfeff\n },\n {\n begin: 0xff00,\n end: 0xffef\n },\n {\n begin: 0xfff0,\n end: 0xffff\n },\n {\n begin: 0x0f00,\n end: 0x0fff\n },\n {\n begin: 0x0700,\n end: 0x074f\n },\n {\n begin: 0x0780,\n end: 0x07bf\n },\n {\n begin: 0x0d80,\n end: 0x0dff\n },\n {\n begin: 0x1000,\n end: 0x109f\n },\n {\n begin: 0x1200,\n end: 0x137f\n },\n {\n begin: 0x13a0,\n end: 0x13ff\n },\n {\n begin: 0x1400,\n end: 0x167f\n },\n {\n begin: 0x1680,\n end: 0x169f\n },\n {\n begin: 0x16a0,\n end: 0x16ff\n },\n {\n begin: 0x1780,\n end: 0x17ff\n },\n {\n begin: 0x1800,\n end: 0x18af\n },\n {\n begin: 0x2800,\n end: 0x28ff\n },\n {\n begin: 0xa000,\n end: 0xa48f\n },\n {\n begin: 0x1700,\n end: 0x171f\n },\n {\n begin: 0x10300,\n end: 0x1032f\n },\n {\n begin: 0x10330,\n end: 0x1034f\n },\n {\n begin: 0x10400,\n end: 0x1044f\n },\n {\n begin: 0x1d000,\n end: 0x1d0ff\n },\n {\n begin: 0x1d400,\n end: 0x1d7ff\n },\n {\n begin: 0xff000,\n end: 0xffffd\n },\n {\n begin: 0xfe00,\n end: 0xfe0f\n },\n {\n begin: 0xe0000,\n end: 0xe007f\n },\n {\n begin: 0x1900,\n end: 0x194f\n },\n {\n begin: 0x1950,\n end: 0x197f\n },\n {\n begin: 0x1980,\n end: 0x19df\n },\n {\n begin: 0x1a00,\n end: 0x1a1f\n },\n {\n begin: 0x2c00,\n end: 0x2c5f\n },\n {\n begin: 0x2d30,\n end: 0x2d7f\n },\n {\n begin: 0x4dc0,\n end: 0x4dff\n },\n {\n begin: 0xa800,\n end: 0xa82f\n },\n {\n begin: 0x10000,\n end: 0x1007f\n },\n {\n begin: 0x10140,\n end: 0x1018f\n },\n {\n begin: 0x10380,\n end: 0x1039f\n },\n {\n begin: 0x103a0,\n end: 0x103df\n },\n {\n begin: 0x10450,\n end: 0x1047f\n },\n {\n begin: 0x10480,\n end: 0x104af\n },\n {\n begin: 0x10800,\n end: 0x1083f\n },\n {\n begin: 0x10a00,\n end: 0x10a5f\n },\n {\n begin: 0x1d300,\n end: 0x1d35f\n },\n {\n begin: 0x12000,\n end: 0x123ff\n },\n {\n begin: 0x1d360,\n end: 0x1d37f\n },\n {\n begin: 0x1b80,\n end: 0x1bbf\n },\n {\n begin: 0x1c00,\n end: 0x1c4f\n },\n {\n begin: 0x1c50,\n end: 0x1c7f\n },\n {\n begin: 0xa880,\n end: 0xa8df\n },\n {\n begin: 0xa900,\n end: 0xa92f\n },\n {\n begin: 0xa930,\n end: 0xa95f\n },\n {\n begin: 0xaa00,\n end: 0xaa5f\n },\n {\n begin: 0x10190,\n end: 0x101cf\n },\n {\n begin: 0x101d0,\n end: 0x101ff\n },\n {\n begin: 0x102a0,\n end: 0x102df\n },\n {\n begin: 0x1f030,\n end: 0x1f09f\n }\n];\nfunction getUnicodeRangeFor(value) {\n for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n var range = UnicodeRanges[i];\n if (value >= range.begin && value < range.end) {\n return i;\n }\n }\n return -1;\n}\nfunction isRTLRangeFor(value) {\n var range = UnicodeRanges[13];\n if (value >= range.begin && value < range.end) {\n return true;\n }\n range = UnicodeRanges[11];\n if (value >= range.begin && value < range.end) {\n return true;\n }\n return false;\n}\nvar getNormalizedUnicodes = getLookupTableFactory(function (t) {\n t[\"\\u00A8\"] = \"\\u0020\\u0308\";\n t[\"\\u00AF\"] = \"\\u0020\\u0304\";\n t[\"\\u00B4\"] = \"\\u0020\\u0301\";\n t[\"\\u00B5\"] = \"\\u03BC\";\n t[\"\\u00B8\"] = \"\\u0020\\u0327\";\n t[\"\\u0132\"] = \"\\u0049\\u004A\";\n t[\"\\u0133\"] = \"\\u0069\\u006A\";\n t[\"\\u013F\"] = \"\\u004C\\u00B7\";\n t[\"\\u0140\"] = \"\\u006C\\u00B7\";\n t[\"\\u0149\"] = \"\\u02BC\\u006E\";\n t[\"\\u017F\"] = \"\\u0073\";\n t[\"\\u01C4\"] = \"\\u0044\\u017D\";\n t[\"\\u01C5\"] = \"\\u0044\\u017E\";\n t[\"\\u01C6\"] = \"\\u0064\\u017E\";\n t[\"\\u01C7\"] = \"\\u004C\\u004A\";\n t[\"\\u01C8\"] = \"\\u004C\\u006A\";\n t[\"\\u01C9\"] = \"\\u006C\\u006A\";\n t[\"\\u01CA\"] = \"\\u004E\\u004A\";\n t[\"\\u01CB\"] = \"\\u004E\\u006A\";\n t[\"\\u01CC\"] = \"\\u006E\\u006A\";\n t[\"\\u01F1\"] = \"\\u0044\\u005A\";\n t[\"\\u01F2\"] = \"\\u0044\\u007A\";\n t[\"\\u01F3\"] = \"\\u0064\\u007A\";\n t[\"\\u02D8\"] = \"\\u0020\\u0306\";\n t[\"\\u02D9\"] = \"\\u0020\\u0307\";\n t[\"\\u02DA\"] = \"\\u0020\\u030A\";\n t[\"\\u02DB\"] = \"\\u0020\\u0328\";\n t[\"\\u02DC\"] = \"\\u0020\\u0303\";\n t[\"\\u02DD\"] = \"\\u0020\\u030B\";\n t[\"\\u037A\"] = \"\\u0020\\u0345\";\n t[\"\\u0384\"] = \"\\u0020\\u0301\";\n t[\"\\u03D0\"] = \"\\u03B2\";\n t[\"\\u03D1\"] = \"\\u03B8\";\n t[\"\\u03D2\"] = \"\\u03A5\";\n t[\"\\u03D5\"] = \"\\u03C6\";\n t[\"\\u03D6\"] = \"\\u03C0\";\n t[\"\\u03F0\"] = \"\\u03BA\";\n t[\"\\u03F1\"] = \"\\u03C1\";\n t[\"\\u03F2\"] = \"\\u03C2\";\n t[\"\\u03F4\"] = \"\\u0398\";\n t[\"\\u03F5\"] = \"\\u03B5\";\n t[\"\\u03F9\"] = \"\\u03A3\";\n t[\"\\u0587\"] = \"\\u0565\\u0582\";\n t[\"\\u0675\"] = \"\\u0627\\u0674\";\n t[\"\\u0676\"] = \"\\u0648\\u0674\";\n t[\"\\u0677\"] = \"\\u06C7\\u0674\";\n t[\"\\u0678\"] = \"\\u064A\\u0674\";\n t[\"\\u0E33\"] = \"\\u0E4D\\u0E32\";\n t[\"\\u0EB3\"] = \"\\u0ECD\\u0EB2\";\n t[\"\\u0EDC\"] = \"\\u0EAB\\u0E99\";\n t[\"\\u0EDD\"] = \"\\u0EAB\\u0EA1\";\n t[\"\\u0F77\"] = \"\\u0FB2\\u0F81\";\n t[\"\\u0F79\"] = \"\\u0FB3\\u0F81\";\n t[\"\\u1E9A\"] = \"\\u0061\\u02BE\";\n t[\"\\u1FBD\"] = \"\\u0020\\u0313\";\n t[\"\\u1FBF\"] = \"\\u0020\\u0313\";\n t[\"\\u1FC0\"] = \"\\u0020\\u0342\";\n t[\"\\u1FFE\"] = \"\\u0020\\u0314\";\n t[\"\\u2002\"] = \"\\u0020\";\n t[\"\\u2003\"] = \"\\u0020\";\n t[\"\\u2004\"] = \"\\u0020\";\n t[\"\\u2005\"] = \"\\u0020\";\n t[\"\\u2006\"] = \"\\u0020\";\n t[\"\\u2008\"] = \"\\u0020\";\n t[\"\\u2009\"] = \"\\u0020\";\n t[\"\\u200A\"] = \"\\u0020\";\n t[\"\\u2017\"] = \"\\u0020\\u0333\";\n t[\"\\u2024\"] = \"\\u002E\";\n t[\"\\u2025\"] = \"\\u002E\\u002E\";\n t[\"\\u2026\"] = \"\\u002E\\u002E\\u002E\";\n t[\"\\u2033\"] = \"\\u2032\\u2032\";\n t[\"\\u2034\"] = \"\\u2032\\u2032\\u2032\";\n t[\"\\u2036\"] = \"\\u2035\\u2035\";\n t[\"\\u2037\"] = \"\\u2035\\u2035\\u2035\";\n t[\"\\u203C\"] = \"\\u0021\\u0021\";\n t[\"\\u203E\"] = \"\\u0020\\u0305\";\n t[\"\\u2047\"] = \"\\u003F\\u003F\";\n t[\"\\u2048\"] = \"\\u003F\\u0021\";\n t[\"\\u2049\"] = \"\\u0021\\u003F\";\n t[\"\\u2057\"] = \"\\u2032\\u2032\\u2032\\u2032\";\n t[\"\\u205F\"] = \"\\u0020\";\n t[\"\\u20A8\"] = \"\\u0052\\u0073\";\n t[\"\\u2100\"] = \"\\u0061\\u002F\\u0063\";\n t[\"\\u2101\"] = \"\\u0061\\u002F\\u0073\";\n t[\"\\u2103\"] = \"\\u00B0\\u0043\";\n t[\"\\u2105\"] = \"\\u0063\\u002F\\u006F\";\n t[\"\\u2106\"] = \"\\u0063\\u002F\\u0075\";\n t[\"\\u2107\"] = \"\\u0190\";\n t[\"\\u2109\"] = \"\\u00B0\\u0046\";\n t[\"\\u2116\"] = \"\\u004E\\u006F\";\n t[\"\\u2121\"] = \"\\u0054\\u0045\\u004C\";\n t[\"\\u2135\"] = \"\\u05D0\";\n t[\"\\u2136\"] = \"\\u05D1\";\n t[\"\\u2137\"] = \"\\u05D2\";\n t[\"\\u2138\"] = \"\\u05D3\";\n t[\"\\u213B\"] = \"\\u0046\\u0041\\u0058\";\n t[\"\\u2160\"] = \"\\u0049\";\n t[\"\\u2161\"] = \"\\u0049\\u0049\";\n t[\"\\u2162\"] = \"\\u0049\\u0049\\u0049\";\n t[\"\\u2163\"] = \"\\u0049\\u0056\";\n t[\"\\u2164\"] = \"\\u0056\";\n t[\"\\u2165\"] = \"\\u0056\\u0049\";\n t[\"\\u2166\"] = \"\\u0056\\u0049\\u0049\";\n t[\"\\u2167\"] = \"\\u0056\\u0049\\u0049\\u0049\";\n t[\"\\u2168\"] = \"\\u0049\\u0058\";\n t[\"\\u2169\"] = \"\\u0058\";\n t[\"\\u216A\"] = \"\\u0058\\u0049\";\n t[\"\\u216B\"] = \"\\u0058\\u0049\\u0049\";\n t[\"\\u216C\"] = \"\\u004C\";\n t[\"\\u216D\"] = \"\\u0043\";\n t[\"\\u216E\"] = \"\\u0044\";\n t[\"\\u216F\"] = \"\\u004D\";\n t[\"\\u2170\"] = \"\\u0069\";\n t[\"\\u2171\"] = \"\\u0069\\u0069\";\n t[\"\\u2172\"] = \"\\u0069\\u0069\\u0069\";\n t[\"\\u2173\"] = \"\\u0069\\u0076\";\n t[\"\\u2174\"] = \"\\u0076\";\n t[\"\\u2175\"] = \"\\u0076\\u0069\";\n t[\"\\u2176\"] = \"\\u0076\\u0069\\u0069\";\n t[\"\\u2177\"] = \"\\u0076\\u0069\\u0069\\u0069\";\n t[\"\\u2178\"] = \"\\u0069\\u0078\";\n t[\"\\u2179\"] = \"\\u0078\";\n t[\"\\u217A\"] = \"\\u0078\\u0069\";\n t[\"\\u217B\"] = \"\\u0078\\u0069\\u0069\";\n t[\"\\u217C\"] = \"\\u006C\";\n t[\"\\u217D\"] = \"\\u0063\";\n t[\"\\u217E\"] = \"\\u0064\";\n t[\"\\u217F\"] = \"\\u006D\";\n t[\"\\u222C\"] = \"\\u222B\\u222B\";\n t[\"\\u222D\"] = \"\\u222B\\u222B\\u222B\";\n t[\"\\u222F\"] = \"\\u222E\\u222E\";\n t[\"\\u2230\"] = \"\\u222E\\u222E\\u222E\";\n t[\"\\u2474\"] = \"\\u0028\\u0031\\u0029\";\n t[\"\\u2475\"] = \"\\u0028\\u0032\\u0029\";\n t[\"\\u2476\"] = \"\\u0028\\u0033\\u0029\";\n t[\"\\u2477\"] = \"\\u0028\\u0034\\u0029\";\n t[\"\\u2478\"] = \"\\u0028\\u0035\\u0029\";\n t[\"\\u2479\"] = \"\\u0028\\u0036\\u0029\";\n t[\"\\u247A\"] = \"\\u0028\\u0037\\u0029\";\n t[\"\\u247B\"] = \"\\u0028\\u0038\\u0029\";\n t[\"\\u247C\"] = \"\\u0028\\u0039\\u0029\";\n t[\"\\u247D\"] = \"\\u0028\\u0031\\u0030\\u0029\";\n t[\"\\u247E\"] = \"\\u0028\\u0031\\u0031\\u0029\";\n t[\"\\u247F\"] = \"\\u0028\\u0031\\u0032\\u0029\";\n t[\"\\u2480\"] = \"\\u0028\\u0031\\u0033\\u0029\";\n t[\"\\u2481\"] = \"\\u0028\\u0031\\u0034\\u0029\";\n t[\"\\u2482\"] = \"\\u0028\\u0031\\u0035\\u0029\";\n t[\"\\u2483\"] = \"\\u0028\\u0031\\u0036\\u0029\";\n t[\"\\u2484\"] = \"\\u0028\\u0031\\u0037\\u0029\";\n t[\"\\u2485\"] = \"\\u0028\\u0031\\u0038\\u0029\";\n t[\"\\u2486\"] = \"\\u0028\\u0031\\u0039\\u0029\";\n t[\"\\u2487\"] = \"\\u0028\\u0032\\u0030\\u0029\";\n t[\"\\u2488\"] = \"\\u0031\\u002E\";\n t[\"\\u2489\"] = \"\\u0032\\u002E\";\n t[\"\\u248A\"] = \"\\u0033\\u002E\";\n t[\"\\u248B\"] = \"\\u0034\\u002E\";\n t[\"\\u248C\"] = \"\\u0035\\u002E\";\n t[\"\\u248D\"] = \"\\u0036\\u002E\";\n t[\"\\u248E\"] = \"\\u0037\\u002E\";\n t[\"\\u248F\"] = \"\\u0038\\u002E\";\n t[\"\\u2490\"] = \"\\u0039\\u002E\";\n t[\"\\u2491\"] = \"\\u0031\\u0030\\u002E\";\n t[\"\\u2492\"] = \"\\u0031\\u0031\\u002E\";\n t[\"\\u2493\"] = \"\\u0031\\u0032\\u002E\";\n t[\"\\u2494\"] = \"\\u0031\\u0033\\u002E\";\n t[\"\\u2495\"] = \"\\u0031\\u0034\\u002E\";\n t[\"\\u2496\"] = \"\\u0031\\u0035\\u002E\";\n t[\"\\u2497\"] = \"\\u0031\\u0036\\u002E\";\n t[\"\\u2498\"] = \"\\u0031\\u0037\\u002E\";\n t[\"\\u2499\"] = \"\\u0031\\u0038\\u002E\";\n t[\"\\u249A\"] = \"\\u0031\\u0039\\u002E\";\n t[\"\\u249B\"] = \"\\u0032\\u0030\\u002E\";\n t[\"\\u249C\"] = \"\\u0028\\u0061\\u0029\";\n t[\"\\u249D\"] = \"\\u0028\\u0062\\u0029\";\n t[\"\\u249E\"] = \"\\u0028\\u0063\\u0029\";\n t[\"\\u249F\"] = \"\\u0028\\u0064\\u0029\";\n t[\"\\u24A0\"] = \"\\u0028\\u0065\\u0029\";\n t[\"\\u24A1\"] = \"\\u0028\\u0066\\u0029\";\n t[\"\\u24A2\"] = \"\\u0028\\u0067\\u0029\";\n t[\"\\u24A3\"] = \"\\u0028\\u0068\\u0029\";\n t[\"\\u24A4\"] = \"\\u0028\\u0069\\u0029\";\n t[\"\\u24A5\"] = \"\\u0028\\u006A\\u0029\";\n t[\"\\u24A6\"] = \"\\u0028\\u006B\\u0029\";\n t[\"\\u24A7\"] = \"\\u0028\\u006C\\u0029\";\n t[\"\\u24A8\"] = \"\\u0028\\u006D\\u0029\";\n t[\"\\u24A9\"] = \"\\u0028\\u006E\\u0029\";\n t[\"\\u24AA\"] = \"\\u0028\\u006F\\u0029\";\n t[\"\\u24AB\"] = \"\\u0028\\u0070\\u0029\";\n t[\"\\u24AC\"] = \"\\u0028\\u0071\\u0029\";\n t[\"\\u24AD\"] = \"\\u0028\\u0072\\u0029\";\n t[\"\\u24AE\"] = \"\\u0028\\u0073\\u0029\";\n t[\"\\u24AF\"] = \"\\u0028\\u0074\\u0029\";\n t[\"\\u24B0\"] = \"\\u0028\\u0075\\u0029\";\n t[\"\\u24B1\"] = \"\\u0028\\u0076\\u0029\";\n t[\"\\u24B2\"] = \"\\u0028\\u0077\\u0029\";\n t[\"\\u24B3\"] = \"\\u0028\\u0078\\u0029\";\n t[\"\\u24B4\"] = \"\\u0028\\u0079\\u0029\";\n t[\"\\u24B5\"] = \"\\u0028\\u007A\\u0029\";\n t[\"\\u2A0C\"] = \"\\u222B\\u222B\\u222B\\u222B\";\n t[\"\\u2A74\"] = \"\\u003A\\u003A\\u003D\";\n t[\"\\u2A75\"] = \"\\u003D\\u003D\";\n t[\"\\u2A76\"] = \"\\u003D\\u003D\\u003D\";\n t[\"\\u2E9F\"] = \"\\u6BCD\";\n t[\"\\u2EF3\"] = \"\\u9F9F\";\n t[\"\\u2F00\"] = \"\\u4E00\";\n t[\"\\u2F01\"] = \"\\u4E28\";\n t[\"\\u2F02\"] = \"\\u4E36\";\n t[\"\\u2F03\"] = \"\\u4E3F\";\n t[\"\\u2F04\"] = \"\\u4E59\";\n t[\"\\u2F05\"] = \"\\u4E85\";\n t[\"\\u2F06\"] = \"\\u4E8C\";\n t[\"\\u2F07\"] = \"\\u4EA0\";\n t[\"\\u2F08\"] = \"\\u4EBA\";\n t[\"\\u2F09\"] = \"\\u513F\";\n t[\"\\u2F0A\"] = \"\\u5165\";\n t[\"\\u2F0B\"] = \"\\u516B\";\n t[\"\\u2F0C\"] = \"\\u5182\";\n t[\"\\u2F0D\"] = \"\\u5196\";\n t[\"\\u2F0E\"] = \"\\u51AB\";\n t[\"\\u2F0F\"] = \"\\u51E0\";\n t[\"\\u2F10\"] = \"\\u51F5\";\n t[\"\\u2F11\"] = \"\\u5200\";\n t[\"\\u2F12\"] = \"\\u529B\";\n t[\"\\u2F13\"] = \"\\u52F9\";\n t[\"\\u2F14\"] = \"\\u5315\";\n t[\"\\u2F15\"] = \"\\u531A\";\n t[\"\\u2F16\"] = \"\\u5338\";\n t[\"\\u2F17\"] = \"\\u5341\";\n t[\"\\u2F18\"] = \"\\u535C\";\n t[\"\\u2F19\"] = \"\\u5369\";\n t[\"\\u2F1A\"] = \"\\u5382\";\n t[\"\\u2F1B\"] = \"\\u53B6\";\n t[\"\\u2F1C\"] = \"\\u53C8\";\n t[\"\\u2F1D\"] = \"\\u53E3\";\n t[\"\\u2F1E\"] = \"\\u56D7\";\n t[\"\\u2F1F\"] = \"\\u571F\";\n t[\"\\u2F20\"] = \"\\u58EB\";\n t[\"\\u2F21\"] = \"\\u5902\";\n t[\"\\u2F22\"] = \"\\u590A\";\n t[\"\\u2F23\"] = \"\\u5915\";\n t[\"\\u2F24\"] = \"\\u5927\";\n t[\"\\u2F25\"] = \"\\u5973\";\n t[\"\\u2F26\"] = \"\\u5B50\";\n t[\"\\u2F27\"] = \"\\u5B80\";\n t[\"\\u2F28\"] = \"\\u5BF8\";\n t[\"\\u2F29\"] = \"\\u5C0F\";\n t[\"\\u2F2A\"] = \"\\u5C22\";\n t[\"\\u2F2B\"] = \"\\u5C38\";\n t[\"\\u2F2C\"] = \"\\u5C6E\";\n t[\"\\u2F2D\"] = \"\\u5C71\";\n t[\"\\u2F2E\"] = \"\\u5DDB\";\n t[\"\\u2F2F\"] = \"\\u5DE5\";\n t[\"\\u2F30\"] = \"\\u5DF1\";\n t[\"\\u2F31\"] = \"\\u5DFE\";\n t[\"\\u2F32\"] = \"\\u5E72\";\n t[\"\\u2F33\"] = \"\\u5E7A\";\n t[\"\\u2F34\"] = \"\\u5E7F\";\n t[\"\\u2F35\"] = \"\\u5EF4\";\n t[\"\\u2F36\"] = \"\\u5EFE\";\n t[\"\\u2F37\"] = \"\\u5F0B\";\n t[\"\\u2F38\"] = \"\\u5F13\";\n t[\"\\u2F39\"] = \"\\u5F50\";\n t[\"\\u2F3A\"] = \"\\u5F61\";\n t[\"\\u2F3B\"] = \"\\u5F73\";\n t[\"\\u2F3C\"] = \"\\u5FC3\";\n t[\"\\u2F3D\"] = \"\\u6208\";\n t[\"\\u2F3E\"] = \"\\u6236\";\n t[\"\\u2F3F\"] = \"\\u624B\";\n t[\"\\u2F40\"] = \"\\u652F\";\n t[\"\\u2F41\"] = \"\\u6534\";\n t[\"\\u2F42\"] = \"\\u6587\";\n t[\"\\u2F43\"] = \"\\u6597\";\n t[\"\\u2F44\"] = \"\\u65A4\";\n t[\"\\u2F45\"] = \"\\u65B9\";\n t[\"\\u2F46\"] = \"\\u65E0\";\n t[\"\\u2F47\"] = \"\\u65E5\";\n t[\"\\u2F48\"] = \"\\u66F0\";\n t[\"\\u2F49\"] = \"\\u6708\";\n t[\"\\u2F4A\"] = \"\\u6728\";\n t[\"\\u2F4B\"] = \"\\u6B20\";\n t[\"\\u2F4C\"] = \"\\u6B62\";\n t[\"\\u2F4D\"] = \"\\u6B79\";\n t[\"\\u2F4E\"] = \"\\u6BB3\";\n t[\"\\u2F4F\"] = \"\\u6BCB\";\n t[\"\\u2F50\"] = \"\\u6BD4\";\n t[\"\\u2F51\"] = \"\\u6BDB\";\n t[\"\\u2F52\"] = \"\\u6C0F\";\n t[\"\\u2F53\"] = \"\\u6C14\";\n t[\"\\u2F54\"] = \"\\u6C34\";\n t[\"\\u2F55\"] = \"\\u706B\";\n t[\"\\u2F56\"] = \"\\u722A\";\n t[\"\\u2F57\"] = \"\\u7236\";\n t[\"\\u2F58\"] = \"\\u723B\";\n t[\"\\u2F59\"] = \"\\u723F\";\n t[\"\\u2F5A\"] = \"\\u7247\";\n t[\"\\u2F5B\"] = \"\\u7259\";\n t[\"\\u2F5C\"] = \"\\u725B\";\n t[\"\\u2F5D\"] = \"\\u72AC\";\n t[\"\\u2F5E\"] = \"\\u7384\";\n t[\"\\u2F5F\"] = \"\\u7389\";\n t[\"\\u2F60\"] = \"\\u74DC\";\n t[\"\\u2F61\"] = \"\\u74E6\";\n t[\"\\u2F62\"] = \"\\u7518\";\n t[\"\\u2F63\"] = \"\\u751F\";\n t[\"\\u2F64\"] = \"\\u7528\";\n t[\"\\u2F65\"] = \"\\u7530\";\n t[\"\\u2F66\"] = \"\\u758B\";\n t[\"\\u2F67\"] = \"\\u7592\";\n t[\"\\u2F68\"] = \"\\u7676\";\n t[\"\\u2F69\"] = \"\\u767D\";\n t[\"\\u2F6A\"] = \"\\u76AE\";\n t[\"\\u2F6B\"] = \"\\u76BF\";\n t[\"\\u2F6C\"] = \"\\u76EE\";\n t[\"\\u2F6D\"] = \"\\u77DB\";\n t[\"\\u2F6E\"] = \"\\u77E2\";\n t[\"\\u2F6F\"] = \"\\u77F3\";\n t[\"\\u2F70\"] = \"\\u793A\";\n t[\"\\u2F71\"] = \"\\u79B8\";\n t[\"\\u2F72\"] = \"\\u79BE\";\n t[\"\\u2F73\"] = \"\\u7A74\";\n t[\"\\u2F74\"] = \"\\u7ACB\";\n t[\"\\u2F75\"] = \"\\u7AF9\";\n t[\"\\u2F76\"] = \"\\u7C73\";\n t[\"\\u2F77\"] = \"\\u7CF8\";\n t[\"\\u2F78\"] = \"\\u7F36\";\n t[\"\\u2F79\"] = \"\\u7F51\";\n t[\"\\u2F7A\"] = \"\\u7F8A\";\n t[\"\\u2F7B\"] = \"\\u7FBD\";\n t[\"\\u2F7C\"] = \"\\u8001\";\n t[\"\\u2F7D\"] = \"\\u800C\";\n t[\"\\u2F7E\"] = \"\\u8012\";\n t[\"\\u2F7F\"] = \"\\u8033\";\n t[\"\\u2F80\"] = \"\\u807F\";\n t[\"\\u2F81\"] = \"\\u8089\";\n t[\"\\u2F82\"] = \"\\u81E3\";\n t[\"\\u2F83\"] = \"\\u81EA\";\n t[\"\\u2F84\"] = \"\\u81F3\";\n t[\"\\u2F85\"] = \"\\u81FC\";\n t[\"\\u2F86\"] = \"\\u820C\";\n t[\"\\u2F87\"] = \"\\u821B\";\n t[\"\\u2F88\"] = \"\\u821F\";\n t[\"\\u2F89\"] = \"\\u826E\";\n t[\"\\u2F8A\"] = \"\\u8272\";\n t[\"\\u2F8B\"] = \"\\u8278\";\n t[\"\\u2F8C\"] = \"\\u864D\";\n t[\"\\u2F8D\"] = \"\\u866B\";\n t[\"\\u2F8E\"] = \"\\u8840\";\n t[\"\\u2F8F\"] = \"\\u884C\";\n t[\"\\u2F90\"] = \"\\u8863\";\n t[\"\\u2F91\"] = \"\\u897E\";\n t[\"\\u2F92\"] = \"\\u898B\";\n t[\"\\u2F93\"] = \"\\u89D2\";\n t[\"\\u2F94\"] = \"\\u8A00\";\n t[\"\\u2F95\"] = \"\\u8C37\";\n t[\"\\u2F96\"] = \"\\u8C46\";\n t[\"\\u2F97\"] = \"\\u8C55\";\n t[\"\\u2F98\"] = \"\\u8C78\";\n t[\"\\u2F99\"] = \"\\u8C9D\";\n t[\"\\u2F9A\"] = \"\\u8D64\";\n t[\"\\u2F9B\"] = \"\\u8D70\";\n t[\"\\u2F9C\"] = \"\\u8DB3\";\n t[\"\\u2F9D\"] = \"\\u8EAB\";\n t[\"\\u2F9E\"] = \"\\u8ECA\";\n t[\"\\u2F9F\"] = \"\\u8F9B\";\n t[\"\\u2FA0\"] = \"\\u8FB0\";\n t[\"\\u2FA1\"] = \"\\u8FB5\";\n t[\"\\u2FA2\"] = \"\\u9091\";\n t[\"\\u2FA3\"] = \"\\u9149\";\n t[\"\\u2FA4\"] = \"\\u91C6\";\n t[\"\\u2FA5\"] = \"\\u91CC\";\n t[\"\\u2FA6\"] = \"\\u91D1\";\n t[\"\\u2FA7\"] = \"\\u9577\";\n t[\"\\u2FA8\"] = \"\\u9580\";\n t[\"\\u2FA9\"] = \"\\u961C\";\n t[\"\\u2FAA\"] = \"\\u96B6\";\n t[\"\\u2FAB\"] = \"\\u96B9\";\n t[\"\\u2FAC\"] = \"\\u96E8\";\n t[\"\\u2FAD\"] = \"\\u9751\";\n t[\"\\u2FAE\"] = \"\\u975E\";\n t[\"\\u2FAF\"] = \"\\u9762\";\n t[\"\\u2FB0\"] = \"\\u9769\";\n t[\"\\u2FB1\"] = \"\\u97CB\";\n t[\"\\u2FB2\"] = \"\\u97ED\";\n t[\"\\u2FB3\"] = \"\\u97F3\";\n t[\"\\u2FB4\"] = \"\\u9801\";\n t[\"\\u2FB5\"] = \"\\u98A8\";\n t[\"\\u2FB6\"] = \"\\u98DB\";\n t[\"\\u2FB7\"] = \"\\u98DF\";\n t[\"\\u2FB8\"] = \"\\u9996\";\n t[\"\\u2FB9\"] = \"\\u9999\";\n t[\"\\u2FBA\"] = \"\\u99AC\";\n t[\"\\u2FBB\"] = \"\\u9AA8\";\n t[\"\\u2FBC\"] = \"\\u9AD8\";\n t[\"\\u2FBD\"] = \"\\u9ADF\";\n t[\"\\u2FBE\"] = \"\\u9B25\";\n t[\"\\u2FBF\"] = \"\\u9B2F\";\n t[\"\\u2FC0\"] = \"\\u9B32\";\n t[\"\\u2FC1\"] = \"\\u9B3C\";\n t[\"\\u2FC2\"] = \"\\u9B5A\";\n t[\"\\u2FC3\"] = \"\\u9CE5\";\n t[\"\\u2FC4\"] = \"\\u9E75\";\n t[\"\\u2FC5\"] = \"\\u9E7F\";\n t[\"\\u2FC6\"] = \"\\u9EA5\";\n t[\"\\u2FC7\"] = \"\\u9EBB\";\n t[\"\\u2FC8\"] = \"\\u9EC3\";\n t[\"\\u2FC9\"] = \"\\u9ECD\";\n t[\"\\u2FCA\"] = \"\\u9ED1\";\n t[\"\\u2FCB\"] = \"\\u9EF9\";\n t[\"\\u2FCC\"] = \"\\u9EFD\";\n t[\"\\u2FCD\"] = \"\\u9F0E\";\n t[\"\\u2FCE\"] = \"\\u9F13\";\n t[\"\\u2FCF\"] = \"\\u9F20\";\n t[\"\\u2FD0\"] = \"\\u9F3B\";\n t[\"\\u2FD1\"] = \"\\u9F4A\";\n t[\"\\u2FD2\"] = \"\\u9F52\";\n t[\"\\u2FD3\"] = \"\\u9F8D\";\n t[\"\\u2FD4\"] = \"\\u9F9C\";\n t[\"\\u2FD5\"] = \"\\u9FA0\";\n t[\"\\u3036\"] = \"\\u3012\";\n t[\"\\u3038\"] = \"\\u5341\";\n t[\"\\u3039\"] = \"\\u5344\";\n t[\"\\u303A\"] = \"\\u5345\";\n t[\"\\u309B\"] = \"\\u0020\\u3099\";\n t[\"\\u309C\"] = \"\\u0020\\u309A\";\n t[\"\\u3131\"] = \"\\u1100\";\n t[\"\\u3132\"] = \"\\u1101\";\n t[\"\\u3133\"] = \"\\u11AA\";\n t[\"\\u3134\"] = \"\\u1102\";\n t[\"\\u3135\"] = \"\\u11AC\";\n t[\"\\u3136\"] = \"\\u11AD\";\n t[\"\\u3137\"] = \"\\u1103\";\n t[\"\\u3138\"] = \"\\u1104\";\n t[\"\\u3139\"] = \"\\u1105\";\n t[\"\\u313A\"] = \"\\u11B0\";\n t[\"\\u313B\"] = \"\\u11B1\";\n t[\"\\u313C\"] = \"\\u11B2\";\n t[\"\\u313D\"] = \"\\u11B3\";\n t[\"\\u313E\"] = \"\\u11B4\";\n t[\"\\u313F\"] = \"\\u11B5\";\n t[\"\\u3140\"] = \"\\u111A\";\n t[\"\\u3141\"] = \"\\u1106\";\n t[\"\\u3142\"] = \"\\u1107\";\n t[\"\\u3143\"] = \"\\u1108\";\n t[\"\\u3144\"] = \"\\u1121\";\n t[\"\\u3145\"] = \"\\u1109\";\n t[\"\\u3146\"] = \"\\u110A\";\n t[\"\\u3147\"] = \"\\u110B\";\n t[\"\\u3148\"] = \"\\u110C\";\n t[\"\\u3149\"] = \"\\u110D\";\n t[\"\\u314A\"] = \"\\u110E\";\n t[\"\\u314B\"] = \"\\u110F\";\n t[\"\\u314C\"] = \"\\u1110\";\n t[\"\\u314D\"] = \"\\u1111\";\n t[\"\\u314E\"] = \"\\u1112\";\n t[\"\\u314F\"] = \"\\u1161\";\n t[\"\\u3150\"] = \"\\u1162\";\n t[\"\\u3151\"] = \"\\u1163\";\n t[\"\\u3152\"] = \"\\u1164\";\n t[\"\\u3153\"] = \"\\u1165\";\n t[\"\\u3154\"] = \"\\u1166\";\n t[\"\\u3155\"] = \"\\u1167\";\n t[\"\\u3156\"] = \"\\u1168\";\n t[\"\\u3157\"] = \"\\u1169\";\n t[\"\\u3158\"] = \"\\u116A\";\n t[\"\\u3159\"] = \"\\u116B\";\n t[\"\\u315A\"] = \"\\u116C\";\n t[\"\\u315B\"] = \"\\u116D\";\n t[\"\\u315C\"] = \"\\u116E\";\n t[\"\\u315D\"] = \"\\u116F\";\n t[\"\\u315E\"] = \"\\u1170\";\n t[\"\\u315F\"] = \"\\u1171\";\n t[\"\\u3160\"] = \"\\u1172\";\n t[\"\\u3161\"] = \"\\u1173\";\n t[\"\\u3162\"] = \"\\u1174\";\n t[\"\\u3163\"] = \"\\u1175\";\n t[\"\\u3164\"] = \"\\u1160\";\n t[\"\\u3165\"] = \"\\u1114\";\n t[\"\\u3166\"] = \"\\u1115\";\n t[\"\\u3167\"] = \"\\u11C7\";\n t[\"\\u3168\"] = \"\\u11C8\";\n t[\"\\u3169\"] = \"\\u11CC\";\n t[\"\\u316A\"] = \"\\u11CE\";\n t[\"\\u316B\"] = \"\\u11D3\";\n t[\"\\u316C\"] = \"\\u11D7\";\n t[\"\\u316D\"] = \"\\u11D9\";\n t[\"\\u316E\"] = \"\\u111C\";\n t[\"\\u316F\"] = \"\\u11DD\";\n t[\"\\u3170\"] = \"\\u11DF\";\n t[\"\\u3171\"] = \"\\u111D\";\n t[\"\\u3172\"] = \"\\u111E\";\n t[\"\\u3173\"] = \"\\u1120\";\n t[\"\\u3174\"] = \"\\u1122\";\n t[\"\\u3175\"] = \"\\u1123\";\n t[\"\\u3176\"] = \"\\u1127\";\n t[\"\\u3177\"] = \"\\u1129\";\n t[\"\\u3178\"] = \"\\u112B\";\n t[\"\\u3179\"] = \"\\u112C\";\n t[\"\\u317A\"] = \"\\u112D\";\n t[\"\\u317B\"] = \"\\u112E\";\n t[\"\\u317C\"] = \"\\u112F\";\n t[\"\\u317D\"] = \"\\u1132\";\n t[\"\\u317E\"] = \"\\u1136\";\n t[\"\\u317F\"] = \"\\u1140\";\n t[\"\\u3180\"] = \"\\u1147\";\n t[\"\\u3181\"] = \"\\u114C\";\n t[\"\\u3182\"] = \"\\u11F1\";\n t[\"\\u3183\"] = \"\\u11F2\";\n t[\"\\u3184\"] = \"\\u1157\";\n t[\"\\u3185\"] = \"\\u1158\";\n t[\"\\u3186\"] = \"\\u1159\";\n t[\"\\u3187\"] = \"\\u1184\";\n t[\"\\u3188\"] = \"\\u1185\";\n t[\"\\u3189\"] = \"\\u1188\";\n t[\"\\u318A\"] = \"\\u1191\";\n t[\"\\u318B\"] = \"\\u1192\";\n t[\"\\u318C\"] = \"\\u1194\";\n t[\"\\u318D\"] = \"\\u119E\";\n t[\"\\u318E\"] = \"\\u11A1\";\n t[\"\\u3200\"] = \"\\u0028\\u1100\\u0029\";\n t[\"\\u3201\"] = \"\\u0028\\u1102\\u0029\";\n t[\"\\u3202\"] = \"\\u0028\\u1103\\u0029\";\n t[\"\\u3203\"] = \"\\u0028\\u1105\\u0029\";\n t[\"\\u3204\"] = \"\\u0028\\u1106\\u0029\";\n t[\"\\u3205\"] = \"\\u0028\\u1107\\u0029\";\n t[\"\\u3206\"] = \"\\u0028\\u1109\\u0029\";\n t[\"\\u3207\"] = \"\\u0028\\u110B\\u0029\";\n t[\"\\u3208\"] = \"\\u0028\\u110C\\u0029\";\n t[\"\\u3209\"] = \"\\u0028\\u110E\\u0029\";\n t[\"\\u320A\"] = \"\\u0028\\u110F\\u0029\";\n t[\"\\u320B\"] = \"\\u0028\\u1110\\u0029\";\n t[\"\\u320C\"] = \"\\u0028\\u1111\\u0029\";\n t[\"\\u320D\"] = \"\\u0028\\u1112\\u0029\";\n t[\"\\u320E\"] = \"\\u0028\\u1100\\u1161\\u0029\";\n t[\"\\u320F\"] = \"\\u0028\\u1102\\u1161\\u0029\";\n t[\"\\u3210\"] = \"\\u0028\\u1103\\u1161\\u0029\";\n t[\"\\u3211\"] = \"\\u0028\\u1105\\u1161\\u0029\";\n t[\"\\u3212\"] = \"\\u0028\\u1106\\u1161\\u0029\";\n t[\"\\u3213\"] = \"\\u0028\\u1107\\u1161\\u0029\";\n t[\"\\u3214\"] = \"\\u0028\\u1109\\u1161\\u0029\";\n t[\"\\u3215\"] = \"\\u0028\\u110B\\u1161\\u0029\";\n t[\"\\u3216\"] = \"\\u0028\\u110C\\u1161\\u0029\";\n t[\"\\u3217\"] = \"\\u0028\\u110E\\u1161\\u0029\";\n t[\"\\u3218\"] = \"\\u0028\\u110F\\u1161\\u0029\";\n t[\"\\u3219\"] = \"\\u0028\\u1110\\u1161\\u0029\";\n t[\"\\u321A\"] = \"\\u0028\\u1111\\u1161\\u0029\";\n t[\"\\u321B\"] = \"\\u0028\\u1112\\u1161\\u0029\";\n t[\"\\u321C\"] = \"\\u0028\\u110C\\u116E\\u0029\";\n t[\"\\u321D\"] = \"\\u0028\\u110B\\u1169\\u110C\\u1165\\u11AB\\u0029\";\n t[\"\\u321E\"] = \"\\u0028\\u110B\\u1169\\u1112\\u116E\\u0029\";\n t[\"\\u3220\"] = \"\\u0028\\u4E00\\u0029\";\n t[\"\\u3221\"] = \"\\u0028\\u4E8C\\u0029\";\n t[\"\\u3222\"] = \"\\u0028\\u4E09\\u0029\";\n t[\"\\u3223\"] = \"\\u0028\\u56DB\\u0029\";\n t[\"\\u3224\"] = \"\\u0028\\u4E94\\u0029\";\n t[\"\\u3225\"] = \"\\u0028\\u516D\\u0029\";\n t[\"\\u3226\"] = \"\\u0028\\u4E03\\u0029\";\n t[\"\\u3227\"] = \"\\u0028\\u516B\\u0029\";\n t[\"\\u3228\"] = \"\\u0028\\u4E5D\\u0029\";\n t[\"\\u3229\"] = \"\\u0028\\u5341\\u0029\";\n t[\"\\u322A\"] = \"\\u0028\\u6708\\u0029\";\n t[\"\\u322B\"] = \"\\u0028\\u706B\\u0029\";\n t[\"\\u322C\"] = \"\\u0028\\u6C34\\u0029\";\n t[\"\\u322D\"] = \"\\u0028\\u6728\\u0029\";\n t[\"\\u322E\"] = \"\\u0028\\u91D1\\u0029\";\n t[\"\\u322F\"] = \"\\u0028\\u571F\\u0029\";\n t[\"\\u3230\"] = \"\\u0028\\u65E5\\u0029\";\n t[\"\\u3231\"] = \"\\u0028\\u682A\\u0029\";\n t[\"\\u3232\"] = \"\\u0028\\u6709\\u0029\";\n t[\"\\u3233\"] = \"\\u0028\\u793E\\u0029\";\n t[\"\\u3234\"] = \"\\u0028\\u540D\\u0029\";\n t[\"\\u3235\"] = \"\\u0028\\u7279\\u0029\";\n t[\"\\u3236\"] = \"\\u0028\\u8CA1\\u0029\";\n t[\"\\u3237\"] = \"\\u0028\\u795D\\u0029\";\n t[\"\\u3238\"] = \"\\u0028\\u52B4\\u0029\";\n t[\"\\u3239\"] = \"\\u0028\\u4EE3\\u0029\";\n t[\"\\u323A\"] = \"\\u0028\\u547C\\u0029\";\n t[\"\\u323B\"] = \"\\u0028\\u5B66\\u0029\";\n t[\"\\u323C\"] = \"\\u0028\\u76E3\\u0029\";\n t[\"\\u323D\"] = \"\\u0028\\u4F01\\u0029\";\n t[\"\\u323E\"] = \"\\u0028\\u8CC7\\u0029\";\n t[\"\\u323F\"] = \"\\u0028\\u5354\\u0029\";\n t[\"\\u3240\"] = \"\\u0028\\u796D\\u0029\";\n t[\"\\u3241\"] = \"\\u0028\\u4F11\\u0029\";\n t[\"\\u3242\"] = \"\\u0028\\u81EA\\u0029\";\n t[\"\\u3243\"] = \"\\u0028\\u81F3\\u0029\";\n t[\"\\u32C0\"] = \"\\u0031\\u6708\";\n t[\"\\u32C1\"] = \"\\u0032\\u6708\";\n t[\"\\u32C2\"] = \"\\u0033\\u6708\";\n t[\"\\u32C3\"] = \"\\u0034\\u6708\";\n t[\"\\u32C4\"] = \"\\u0035\\u6708\";\n t[\"\\u32C5\"] = \"\\u0036\\u6708\";\n t[\"\\u32C6\"] = \"\\u0037\\u6708\";\n t[\"\\u32C7\"] = \"\\u0038\\u6708\";\n t[\"\\u32C8\"] = \"\\u0039\\u6708\";\n t[\"\\u32C9\"] = \"\\u0031\\u0030\\u6708\";\n t[\"\\u32CA\"] = \"\\u0031\\u0031\\u6708\";\n t[\"\\u32CB\"] = \"\\u0031\\u0032\\u6708\";\n t[\"\\u3358\"] = \"\\u0030\\u70B9\";\n t[\"\\u3359\"] = \"\\u0031\\u70B9\";\n t[\"\\u335A\"] = \"\\u0032\\u70B9\";\n t[\"\\u335B\"] = \"\\u0033\\u70B9\";\n t[\"\\u335C\"] = \"\\u0034\\u70B9\";\n t[\"\\u335D\"] = \"\\u0035\\u70B9\";\n t[\"\\u335E\"] = \"\\u0036\\u70B9\";\n t[\"\\u335F\"] = \"\\u0037\\u70B9\";\n t[\"\\u3360\"] = \"\\u0038\\u70B9\";\n t[\"\\u3361\"] = \"\\u0039\\u70B9\";\n t[\"\\u3362\"] = \"\\u0031\\u0030\\u70B9\";\n t[\"\\u3363\"] = \"\\u0031\\u0031\\u70B9\";\n t[\"\\u3364\"] = \"\\u0031\\u0032\\u70B9\";\n t[\"\\u3365\"] = \"\\u0031\\u0033\\u70B9\";\n t[\"\\u3366\"] = \"\\u0031\\u0034\\u70B9\";\n t[\"\\u3367\"] = \"\\u0031\\u0035\\u70B9\";\n t[\"\\u3368\"] = \"\\u0031\\u0036\\u70B9\";\n t[\"\\u3369\"] = \"\\u0031\\u0037\\u70B9\";\n t[\"\\u336A\"] = \"\\u0031\\u0038\\u70B9\";\n t[\"\\u336B\"] = \"\\u0031\\u0039\\u70B9\";\n t[\"\\u336C\"] = \"\\u0032\\u0030\\u70B9\";\n t[\"\\u336D\"] = \"\\u0032\\u0031\\u70B9\";\n t[\"\\u336E\"] = \"\\u0032\\u0032\\u70B9\";\n t[\"\\u336F\"] = \"\\u0032\\u0033\\u70B9\";\n t[\"\\u3370\"] = \"\\u0032\\u0034\\u70B9\";\n t[\"\\u33E0\"] = \"\\u0031\\u65E5\";\n t[\"\\u33E1\"] = \"\\u0032\\u65E5\";\n t[\"\\u33E2\"] = \"\\u0033\\u65E5\";\n t[\"\\u33E3\"] = \"\\u0034\\u65E5\";\n t[\"\\u33E4\"] = \"\\u0035\\u65E5\";\n t[\"\\u33E5\"] = \"\\u0036\\u65E5\";\n t[\"\\u33E6\"] = \"\\u0037\\u65E5\";\n t[\"\\u33E7\"] = \"\\u0038\\u65E5\";\n t[\"\\u33E8\"] = \"\\u0039\\u65E5\";\n t[\"\\u33E9\"] = \"\\u0031\\u0030\\u65E5\";\n t[\"\\u33EA\"] = \"\\u0031\\u0031\\u65E5\";\n t[\"\\u33EB\"] = \"\\u0031\\u0032\\u65E5\";\n t[\"\\u33EC\"] = \"\\u0031\\u0033\\u65E5\";\n t[\"\\u33ED\"] = \"\\u0031\\u0034\\u65E5\";\n t[\"\\u33EE\"] = \"\\u0031\\u0035\\u65E5\";\n t[\"\\u33EF\"] = \"\\u0031\\u0036\\u65E5\";\n t[\"\\u33F0\"] = \"\\u0031\\u0037\\u65E5\";\n t[\"\\u33F1\"] = \"\\u0031\\u0038\\u65E5\";\n t[\"\\u33F2\"] = \"\\u0031\\u0039\\u65E5\";\n t[\"\\u33F3\"] = \"\\u0032\\u0030\\u65E5\";\n t[\"\\u33F4\"] = \"\\u0032\\u0031\\u65E5\";\n t[\"\\u33F5\"] = \"\\u0032\\u0032\\u65E5\";\n t[\"\\u33F6\"] = \"\\u0032\\u0033\\u65E5\";\n t[\"\\u33F7\"] = \"\\u0032\\u0034\\u65E5\";\n t[\"\\u33F8\"] = \"\\u0032\\u0035\\u65E5\";\n t[\"\\u33F9\"] = \"\\u0032\\u0036\\u65E5\";\n t[\"\\u33FA\"] = \"\\u0032\\u0037\\u65E5\";\n t[\"\\u33FB\"] = \"\\u0032\\u0038\\u65E5\";\n t[\"\\u33FC\"] = \"\\u0032\\u0039\\u65E5\";\n t[\"\\u33FD\"] = \"\\u0033\\u0030\\u65E5\";\n t[\"\\u33FE\"] = \"\\u0033\\u0031\\u65E5\";\n t[\"\\uFB00\"] = \"\\u0066\\u0066\";\n t[\"\\uFB01\"] = \"\\u0066\\u0069\";\n t[\"\\uFB02\"] = \"\\u0066\\u006C\";\n t[\"\\uFB03\"] = \"\\u0066\\u0066\\u0069\";\n t[\"\\uFB04\"] = \"\\u0066\\u0066\\u006C\";\n t[\"\\uFB05\"] = \"\\u017F\\u0074\";\n t[\"\\uFB06\"] = \"\\u0073\\u0074\";\n t[\"\\uFB13\"] = \"\\u0574\\u0576\";\n t[\"\\uFB14\"] = \"\\u0574\\u0565\";\n t[\"\\uFB15\"] = \"\\u0574\\u056B\";\n t[\"\\uFB16\"] = \"\\u057E\\u0576\";\n t[\"\\uFB17\"] = \"\\u0574\\u056D\";\n t[\"\\uFB4F\"] = \"\\u05D0\\u05DC\";\n t[\"\\uFB50\"] = \"\\u0671\";\n t[\"\\uFB51\"] = \"\\u0671\";\n t[\"\\uFB52\"] = \"\\u067B\";\n t[\"\\uFB53\"] = \"\\u067B\";\n t[\"\\uFB54\"] = \"\\u067B\";\n t[\"\\uFB55\"] = \"\\u067B\";\n t[\"\\uFB56\"] = \"\\u067E\";\n t[\"\\uFB57\"] = \"\\u067E\";\n t[\"\\uFB58\"] = \"\\u067E\";\n t[\"\\uFB59\"] = \"\\u067E\";\n t[\"\\uFB5A\"] = \"\\u0680\";\n t[\"\\uFB5B\"] = \"\\u0680\";\n t[\"\\uFB5C\"] = \"\\u0680\";\n t[\"\\uFB5D\"] = \"\\u0680\";\n t[\"\\uFB5E\"] = \"\\u067A\";\n t[\"\\uFB5F\"] = \"\\u067A\";\n t[\"\\uFB60\"] = \"\\u067A\";\n t[\"\\uFB61\"] = \"\\u067A\";\n t[\"\\uFB62\"] = \"\\u067F\";\n t[\"\\uFB63\"] = \"\\u067F\";\n t[\"\\uFB64\"] = \"\\u067F\";\n t[\"\\uFB65\"] = \"\\u067F\";\n t[\"\\uFB66\"] = \"\\u0679\";\n t[\"\\uFB67\"] = \"\\u0679\";\n t[\"\\uFB68\"] = \"\\u0679\";\n t[\"\\uFB69\"] = \"\\u0679\";\n t[\"\\uFB6A\"] = \"\\u06A4\";\n t[\"\\uFB6B\"] = \"\\u06A4\";\n t[\"\\uFB6C\"] = \"\\u06A4\";\n t[\"\\uFB6D\"] = \"\\u06A4\";\n t[\"\\uFB6E\"] = \"\\u06A6\";\n t[\"\\uFB6F\"] = \"\\u06A6\";\n t[\"\\uFB70\"] = \"\\u06A6\";\n t[\"\\uFB71\"] = \"\\u06A6\";\n t[\"\\uFB72\"] = \"\\u0684\";\n t[\"\\uFB73\"] = \"\\u0684\";\n t[\"\\uFB74\"] = \"\\u0684\";\n t[\"\\uFB75\"] = \"\\u0684\";\n t[\"\\uFB76\"] = \"\\u0683\";\n t[\"\\uFB77\"] = \"\\u0683\";\n t[\"\\uFB78\"] = \"\\u0683\";\n t[\"\\uFB79\"] = \"\\u0683\";\n t[\"\\uFB7A\"] = \"\\u0686\";\n t[\"\\uFB7B\"] = \"\\u0686\";\n t[\"\\uFB7C\"] = \"\\u0686\";\n t[\"\\uFB7D\"] = \"\\u0686\";\n t[\"\\uFB7E\"] = \"\\u0687\";\n t[\"\\uFB7F\"] = \"\\u0687\";\n t[\"\\uFB80\"] = \"\\u0687\";\n t[\"\\uFB81\"] = \"\\u0687\";\n t[\"\\uFB82\"] = \"\\u068D\";\n t[\"\\uFB83\"] = \"\\u068D\";\n t[\"\\uFB84\"] = \"\\u068C\";\n t[\"\\uFB85\"] = \"\\u068C\";\n t[\"\\uFB86\"] = \"\\u068E\";\n t[\"\\uFB87\"] = \"\\u068E\";\n t[\"\\uFB88\"] = \"\\u0688\";\n t[\"\\uFB89\"] = \"\\u0688\";\n t[\"\\uFB8A\"] = \"\\u0698\";\n t[\"\\uFB8B\"] = \"\\u0698\";\n t[\"\\uFB8C\"] = \"\\u0691\";\n t[\"\\uFB8D\"] = \"\\u0691\";\n t[\"\\uFB8E\"] = \"\\u06A9\";\n t[\"\\uFB8F\"] = \"\\u06A9\";\n t[\"\\uFB90\"] = \"\\u06A9\";\n t[\"\\uFB91\"] = \"\\u06A9\";\n t[\"\\uFB92\"] = \"\\u06AF\";\n t[\"\\uFB93\"] = \"\\u06AF\";\n t[\"\\uFB94\"] = \"\\u06AF\";\n t[\"\\uFB95\"] = \"\\u06AF\";\n t[\"\\uFB96\"] = \"\\u06B3\";\n t[\"\\uFB97\"] = \"\\u06B3\";\n t[\"\\uFB98\"] = \"\\u06B3\";\n t[\"\\uFB99\"] = \"\\u06B3\";\n t[\"\\uFB9A\"] = \"\\u06B1\";\n t[\"\\uFB9B\"] = \"\\u06B1\";\n t[\"\\uFB9C\"] = \"\\u06B1\";\n t[\"\\uFB9D\"] = \"\\u06B1\";\n t[\"\\uFB9E\"] = \"\\u06BA\";\n t[\"\\uFB9F\"] = \"\\u06BA\";\n t[\"\\uFBA0\"] = \"\\u06BB\";\n t[\"\\uFBA1\"] = \"\\u06BB\";\n t[\"\\uFBA2\"] = \"\\u06BB\";\n t[\"\\uFBA3\"] = \"\\u06BB\";\n t[\"\\uFBA4\"] = \"\\u06C0\";\n t[\"\\uFBA5\"] = \"\\u06C0\";\n t[\"\\uFBA6\"] = \"\\u06C1\";\n t[\"\\uFBA7\"] = \"\\u06C1\";\n t[\"\\uFBA8\"] = \"\\u06C1\";\n t[\"\\uFBA9\"] = \"\\u06C1\";\n t[\"\\uFBAA\"] = \"\\u06BE\";\n t[\"\\uFBAB\"] = \"\\u06BE\";\n t[\"\\uFBAC\"] = \"\\u06BE\";\n t[\"\\uFBAD\"] = \"\\u06BE\";\n t[\"\\uFBAE\"] = \"\\u06D2\";\n t[\"\\uFBAF\"] = \"\\u06D2\";\n t[\"\\uFBB0\"] = \"\\u06D3\";\n t[\"\\uFBB1\"] = \"\\u06D3\";\n t[\"\\uFBD3\"] = \"\\u06AD\";\n t[\"\\uFBD4\"] = \"\\u06AD\";\n t[\"\\uFBD5\"] = \"\\u06AD\";\n t[\"\\uFBD6\"] = \"\\u06AD\";\n t[\"\\uFBD7\"] = \"\\u06C7\";\n t[\"\\uFBD8\"] = \"\\u06C7\";\n t[\"\\uFBD9\"] = \"\\u06C6\";\n t[\"\\uFBDA\"] = \"\\u06C6\";\n t[\"\\uFBDB\"] = \"\\u06C8\";\n t[\"\\uFBDC\"] = \"\\u06C8\";\n t[\"\\uFBDD\"] = \"\\u0677\";\n t[\"\\uFBDE\"] = \"\\u06CB\";\n t[\"\\uFBDF\"] = \"\\u06CB\";\n t[\"\\uFBE0\"] = \"\\u06C5\";\n t[\"\\uFBE1\"] = \"\\u06C5\";\n t[\"\\uFBE2\"] = \"\\u06C9\";\n t[\"\\uFBE3\"] = \"\\u06C9\";\n t[\"\\uFBE4\"] = \"\\u06D0\";\n t[\"\\uFBE5\"] = \"\\u06D0\";\n t[\"\\uFBE6\"] = \"\\u06D0\";\n t[\"\\uFBE7\"] = \"\\u06D0\";\n t[\"\\uFBE8\"] = \"\\u0649\";\n t[\"\\uFBE9\"] = \"\\u0649\";\n t[\"\\uFBEA\"] = \"\\u0626\\u0627\";\n t[\"\\uFBEB\"] = \"\\u0626\\u0627\";\n t[\"\\uFBEC\"] = \"\\u0626\\u06D5\";\n t[\"\\uFBED\"] = \"\\u0626\\u06D5\";\n t[\"\\uFBEE\"] = \"\\u0626\\u0648\";\n t[\"\\uFBEF\"] = \"\\u0626\\u0648\";\n t[\"\\uFBF0\"] = \"\\u0626\\u06C7\";\n t[\"\\uFBF1\"] = \"\\u0626\\u06C7\";\n t[\"\\uFBF2\"] = \"\\u0626\\u06C6\";\n t[\"\\uFBF3\"] = \"\\u0626\\u06C6\";\n t[\"\\uFBF4\"] = \"\\u0626\\u06C8\";\n t[\"\\uFBF5\"] = \"\\u0626\\u06C8\";\n t[\"\\uFBF6\"] = \"\\u0626\\u06D0\";\n t[\"\\uFBF7\"] = \"\\u0626\\u06D0\";\n t[\"\\uFBF8\"] = \"\\u0626\\u06D0\";\n t[\"\\uFBF9\"] = \"\\u0626\\u0649\";\n t[\"\\uFBFA\"] = \"\\u0626\\u0649\";\n t[\"\\uFBFB\"] = \"\\u0626\\u0649\";\n t[\"\\uFBFC\"] = \"\\u06CC\";\n t[\"\\uFBFD\"] = \"\\u06CC\";\n t[\"\\uFBFE\"] = \"\\u06CC\";\n t[\"\\uFBFF\"] = \"\\u06CC\";\n t[\"\\uFC00\"] = \"\\u0626\\u062C\";\n t[\"\\uFC01\"] = \"\\u0626\\u062D\";\n t[\"\\uFC02\"] = \"\\u0626\\u0645\";\n t[\"\\uFC03\"] = \"\\u0626\\u0649\";\n t[\"\\uFC04\"] = \"\\u0626\\u064A\";\n t[\"\\uFC05\"] = \"\\u0628\\u062C\";\n t[\"\\uFC06\"] = \"\\u0628\\u062D\";\n t[\"\\uFC07\"] = \"\\u0628\\u062E\";\n t[\"\\uFC08\"] = \"\\u0628\\u0645\";\n t[\"\\uFC09\"] = \"\\u0628\\u0649\";\n t[\"\\uFC0A\"] = \"\\u0628\\u064A\";\n t[\"\\uFC0B\"] = \"\\u062A\\u062C\";\n t[\"\\uFC0C\"] = \"\\u062A\\u062D\";\n t[\"\\uFC0D\"] = \"\\u062A\\u062E\";\n t[\"\\uFC0E\"] = \"\\u062A\\u0645\";\n t[\"\\uFC0F\"] = \"\\u062A\\u0649\";\n t[\"\\uFC10\"] = \"\\u062A\\u064A\";\n t[\"\\uFC11\"] = \"\\u062B\\u062C\";\n t[\"\\uFC12\"] = \"\\u062B\\u0645\";\n t[\"\\uFC13\"] = \"\\u062B\\u0649\";\n t[\"\\uFC14\"] = \"\\u062B\\u064A\";\n t[\"\\uFC15\"] = \"\\u062C\\u062D\";\n t[\"\\uFC16\"] = \"\\u062C\\u0645\";\n t[\"\\uFC17\"] = \"\\u062D\\u062C\";\n t[\"\\uFC18\"] = \"\\u062D\\u0645\";\n t[\"\\uFC19\"] = \"\\u062E\\u062C\";\n t[\"\\uFC1A\"] = \"\\u062E\\u062D\";\n t[\"\\uFC1B\"] = \"\\u062E\\u0645\";\n t[\"\\uFC1C\"] = \"\\u0633\\u062C\";\n t[\"\\uFC1D\"] = \"\\u0633\\u062D\";\n t[\"\\uFC1E\"] = \"\\u0633\\u062E\";\n t[\"\\uFC1F\"] = \"\\u0633\\u0645\";\n t[\"\\uFC20\"] = \"\\u0635\\u062D\";\n t[\"\\uFC21\"] = \"\\u0635\\u0645\";\n t[\"\\uFC22\"] = \"\\u0636\\u062C\";\n t[\"\\uFC23\"] = \"\\u0636\\u062D\";\n t[\"\\uFC24\"] = \"\\u0636\\u062E\";\n t[\"\\uFC25\"] = \"\\u0636\\u0645\";\n t[\"\\uFC26\"] = \"\\u0637\\u062D\";\n t[\"\\uFC27\"] = \"\\u0637\\u0645\";\n t[\"\\uFC28\"] = \"\\u0638\\u0645\";\n t[\"\\uFC29\"] = \"\\u0639\\u062C\";\n t[\"\\uFC2A\"] = \"\\u0639\\u0645\";\n t[\"\\uFC2B\"] = \"\\u063A\\u062C\";\n t[\"\\uFC2C\"] = \"\\u063A\\u0645\";\n t[\"\\uFC2D\"] = \"\\u0641\\u062C\";\n t[\"\\uFC2E\"] = \"\\u0641\\u062D\";\n t[\"\\uFC2F\"] = \"\\u0641\\u062E\";\n t[\"\\uFC30\"] = \"\\u0641\\u0645\";\n t[\"\\uFC31\"] = \"\\u0641\\u0649\";\n t[\"\\uFC32\"] = \"\\u0641\\u064A\";\n t[\"\\uFC33\"] = \"\\u0642\\u062D\";\n t[\"\\uFC34\"] = \"\\u0642\\u0645\";\n t[\"\\uFC35\"] = \"\\u0642\\u0649\";\n t[\"\\uFC36\"] = \"\\u0642\\u064A\";\n t[\"\\uFC37\"] = \"\\u0643\\u0627\";\n t[\"\\uFC38\"] = \"\\u0643\\u062C\";\n t[\"\\uFC39\"] = \"\\u0643\\u062D\";\n t[\"\\uFC3A\"] = \"\\u0643\\u062E\";\n t[\"\\uFC3B\"] = \"\\u0643\\u0644\";\n t[\"\\uFC3C\"] = \"\\u0643\\u0645\";\n t[\"\\uFC3D\"] = \"\\u0643\\u0649\";\n t[\"\\uFC3E\"] = \"\\u0643\\u064A\";\n t[\"\\uFC3F\"] = \"\\u0644\\u062C\";\n t[\"\\uFC40\"] = \"\\u0644\\u062D\";\n t[\"\\uFC41\"] = \"\\u0644\\u062E\";\n t[\"\\uFC42\"] = \"\\u0644\\u0645\";\n t[\"\\uFC43\"] = \"\\u0644\\u0649\";\n t[\"\\uFC44\"] = \"\\u0644\\u064A\";\n t[\"\\uFC45\"] = \"\\u0645\\u062C\";\n t[\"\\uFC46\"] = \"\\u0645\\u062D\";\n t[\"\\uFC47\"] = \"\\u0645\\u062E\";\n t[\"\\uFC48\"] = \"\\u0645\\u0645\";\n t[\"\\uFC49\"] = \"\\u0645\\u0649\";\n t[\"\\uFC4A\"] = \"\\u0645\\u064A\";\n t[\"\\uFC4B\"] = \"\\u0646\\u062C\";\n t[\"\\uFC4C\"] = \"\\u0646\\u062D\";\n t[\"\\uFC4D\"] = \"\\u0646\\u062E\";\n t[\"\\uFC4E\"] = \"\\u0646\\u0645\";\n t[\"\\uFC4F\"] = \"\\u0646\\u0649\";\n t[\"\\uFC50\"] = \"\\u0646\\u064A\";\n t[\"\\uFC51\"] = \"\\u0647\\u062C\";\n t[\"\\uFC52\"] = \"\\u0647\\u0645\";\n t[\"\\uFC53\"] = \"\\u0647\\u0649\";\n t[\"\\uFC54\"] = \"\\u0647\\u064A\";\n t[\"\\uFC55\"] = \"\\u064A\\u062C\";\n t[\"\\uFC56\"] = \"\\u064A\\u062D\";\n t[\"\\uFC57\"] = \"\\u064A\\u062E\";\n t[\"\\uFC58\"] = \"\\u064A\\u0645\";\n t[\"\\uFC59\"] = \"\\u064A\\u0649\";\n t[\"\\uFC5A\"] = \"\\u064A\\u064A\";\n t[\"\\uFC5B\"] = \"\\u0630\\u0670\";\n t[\"\\uFC5C\"] = \"\\u0631\\u0670\";\n t[\"\\uFC5D\"] = \"\\u0649\\u0670\";\n t[\"\\uFC5E\"] = \"\\u0020\\u064C\\u0651\";\n t[\"\\uFC5F\"] = \"\\u0020\\u064D\\u0651\";\n t[\"\\uFC60\"] = \"\\u0020\\u064E\\u0651\";\n t[\"\\uFC61\"] = \"\\u0020\\u064F\\u0651\";\n t[\"\\uFC62\"] = \"\\u0020\\u0650\\u0651\";\n t[\"\\uFC63\"] = \"\\u0020\\u0651\\u0670\";\n t[\"\\uFC64\"] = \"\\u0626\\u0631\";\n t[\"\\uFC65\"] = \"\\u0626\\u0632\";\n t[\"\\uFC66\"] = \"\\u0626\\u0645\";\n t[\"\\uFC67\"] = \"\\u0626\\u0646\";\n t[\"\\uFC68\"] = \"\\u0626\\u0649\";\n t[\"\\uFC69\"] = \"\\u0626\\u064A\";\n t[\"\\uFC6A\"] = \"\\u0628\\u0631\";\n t[\"\\uFC6B\"] = \"\\u0628\\u0632\";\n t[\"\\uFC6C\"] = \"\\u0628\\u0645\";\n t[\"\\uFC6D\"] = \"\\u0628\\u0646\";\n t[\"\\uFC6E\"] = \"\\u0628\\u0649\";\n t[\"\\uFC6F\"] = \"\\u0628\\u064A\";\n t[\"\\uFC70\"] = \"\\u062A\\u0631\";\n t[\"\\uFC71\"] = \"\\u062A\\u0632\";\n t[\"\\uFC72\"] = \"\\u062A\\u0645\";\n t[\"\\uFC73\"] = \"\\u062A\\u0646\";\n t[\"\\uFC74\"] = \"\\u062A\\u0649\";\n t[\"\\uFC75\"] = \"\\u062A\\u064A\";\n t[\"\\uFC76\"] = \"\\u062B\\u0631\";\n t[\"\\uFC77\"] = \"\\u062B\\u0632\";\n t[\"\\uFC78\"] = \"\\u062B\\u0645\";\n t[\"\\uFC79\"] = \"\\u062B\\u0646\";\n t[\"\\uFC7A\"] = \"\\u062B\\u0649\";\n t[\"\\uFC7B\"] = \"\\u062B\\u064A\";\n t[\"\\uFC7C\"] = \"\\u0641\\u0649\";\n t[\"\\uFC7D\"] = \"\\u0641\\u064A\";\n t[\"\\uFC7E\"] = \"\\u0642\\u0649\";\n t[\"\\uFC7F\"] = \"\\u0642\\u064A\";\n t[\"\\uFC80\"] = \"\\u0643\\u0627\";\n t[\"\\uFC81\"] = \"\\u0643\\u0644\";\n t[\"\\uFC82\"] = \"\\u0643\\u0645\";\n t[\"\\uFC83\"] = \"\\u0643\\u0649\";\n t[\"\\uFC84\"] = \"\\u0643\\u064A\";\n t[\"\\uFC85\"] = \"\\u0644\\u0645\";\n t[\"\\uFC86\"] = \"\\u0644\\u0649\";\n t[\"\\uFC87\"] = \"\\u0644\\u064A\";\n t[\"\\uFC88\"] = \"\\u0645\\u0627\";\n t[\"\\uFC89\"] = \"\\u0645\\u0645\";\n t[\"\\uFC8A\"] = \"\\u0646\\u0631\";\n t[\"\\uFC8B\"] = \"\\u0646\\u0632\";\n t[\"\\uFC8C\"] = \"\\u0646\\u0645\";\n t[\"\\uFC8D\"] = \"\\u0646\\u0646\";\n t[\"\\uFC8E\"] = \"\\u0646\\u0649\";\n t[\"\\uFC8F\"] = \"\\u0646\\u064A\";\n t[\"\\uFC90\"] = \"\\u0649\\u0670\";\n t[\"\\uFC91\"] = \"\\u064A\\u0631\";\n t[\"\\uFC92\"] = \"\\u064A\\u0632\";\n t[\"\\uFC93\"] = \"\\u064A\\u0645\";\n t[\"\\uFC94\"] = \"\\u064A\\u0646\";\n t[\"\\uFC95\"] = \"\\u064A\\u0649\";\n t[\"\\uFC96\"] = \"\\u064A\\u064A\";\n t[\"\\uFC97\"] = \"\\u0626\\u062C\";\n t[\"\\uFC98\"] = \"\\u0626\\u062D\";\n t[\"\\uFC99\"] = \"\\u0626\\u062E\";\n t[\"\\uFC9A\"] = \"\\u0626\\u0645\";\n t[\"\\uFC9B\"] = \"\\u0626\\u0647\";\n t[\"\\uFC9C\"] = \"\\u0628\\u062C\";\n t[\"\\uFC9D\"] = \"\\u0628\\u062D\";\n t[\"\\uFC9E\"] = \"\\u0628\\u062E\";\n t[\"\\uFC9F\"] = \"\\u0628\\u0645\";\n t[\"\\uFCA0\"] = \"\\u0628\\u0647\";\n t[\"\\uFCA1\"] = \"\\u062A\\u062C\";\n t[\"\\uFCA2\"] = \"\\u062A\\u062D\";\n t[\"\\uFCA3\"] = \"\\u062A\\u062E\";\n t[\"\\uFCA4\"] = \"\\u062A\\u0645\";\n t[\"\\uFCA5\"] = \"\\u062A\\u0647\";\n t[\"\\uFCA6\"] = \"\\u062B\\u0645\";\n t[\"\\uFCA7\"] = \"\\u062C\\u062D\";\n t[\"\\uFCA8\"] = \"\\u062C\\u0645\";\n t[\"\\uFCA9\"] = \"\\u062D\\u062C\";\n t[\"\\uFCAA\"] = \"\\u062D\\u0645\";\n t[\"\\uFCAB\"] = \"\\u062E\\u062C\";\n t[\"\\uFCAC\"] = \"\\u062E\\u0645\";\n t[\"\\uFCAD\"] = \"\\u0633\\u062C\";\n t[\"\\uFCAE\"] = \"\\u0633\\u062D\";\n t[\"\\uFCAF\"] = \"\\u0633\\u062E\";\n t[\"\\uFCB0\"] = \"\\u0633\\u0645\";\n t[\"\\uFCB1\"] = \"\\u0635\\u062D\";\n t[\"\\uFCB2\"] = \"\\u0635\\u062E\";\n t[\"\\uFCB3\"] = \"\\u0635\\u0645\";\n t[\"\\uFCB4\"] = \"\\u0636\\u062C\";\n t[\"\\uFCB5\"] = \"\\u0636\\u062D\";\n t[\"\\uFCB6\"] = \"\\u0636\\u062E\";\n t[\"\\uFCB7\"] = \"\\u0636\\u0645\";\n t[\"\\uFCB8\"] = \"\\u0637\\u062D\";\n t[\"\\uFCB9\"] = \"\\u0638\\u0645\";\n t[\"\\uFCBA\"] = \"\\u0639\\u062C\";\n t[\"\\uFCBB\"] = \"\\u0639\\u0645\";\n t[\"\\uFCBC\"] = \"\\u063A\\u062C\";\n t[\"\\uFCBD\"] = \"\\u063A\\u0645\";\n t[\"\\uFCBE\"] = \"\\u0641\\u062C\";\n t[\"\\uFCBF\"] = \"\\u0641\\u062D\";\n t[\"\\uFCC0\"] = \"\\u0641\\u062E\";\n t[\"\\uFCC1\"] = \"\\u0641\\u0645\";\n t[\"\\uFCC2\"] = \"\\u0642\\u062D\";\n t[\"\\uFCC3\"] = \"\\u0642\\u0645\";\n t[\"\\uFCC4\"] = \"\\u0643\\u062C\";\n t[\"\\uFCC5\"] = \"\\u0643\\u062D\";\n t[\"\\uFCC6\"] = \"\\u0643\\u062E\";\n t[\"\\uFCC7\"] = \"\\u0643\\u0644\";\n t[\"\\uFCC8\"] = \"\\u0643\\u0645\";\n t[\"\\uFCC9\"] = \"\\u0644\\u062C\";\n t[\"\\uFCCA\"] = \"\\u0644\\u062D\";\n t[\"\\uFCCB\"] = \"\\u0644\\u062E\";\n t[\"\\uFCCC\"] = \"\\u0644\\u0645\";\n t[\"\\uFCCD\"] = \"\\u0644\\u0647\";\n t[\"\\uFCCE\"] = \"\\u0645\\u062C\";\n t[\"\\uFCCF\"] = \"\\u0645\\u062D\";\n t[\"\\uFCD0\"] = \"\\u0645\\u062E\";\n t[\"\\uFCD1\"] = \"\\u0645\\u0645\";\n t[\"\\uFCD2\"] = \"\\u0646\\u062C\";\n t[\"\\uFCD3\"] = \"\\u0646\\u062D\";\n t[\"\\uFCD4\"] = \"\\u0646\\u062E\";\n t[\"\\uFCD5\"] = \"\\u0646\\u0645\";\n t[\"\\uFCD6\"] = \"\\u0646\\u0647\";\n t[\"\\uFCD7\"] = \"\\u0647\\u062C\";\n t[\"\\uFCD8\"] = \"\\u0647\\u0645\";\n t[\"\\uFCD9\"] = \"\\u0647\\u0670\";\n t[\"\\uFCDA\"] = \"\\u064A\\u062C\";\n t[\"\\uFCDB\"] = \"\\u064A\\u062D\";\n t[\"\\uFCDC\"] = \"\\u064A\\u062E\";\n t[\"\\uFCDD\"] = \"\\u064A\\u0645\";\n t[\"\\uFCDE\"] = \"\\u064A\\u0647\";\n t[\"\\uFCDF\"] = \"\\u0626\\u0645\";\n t[\"\\uFCE0\"] = \"\\u0626\\u0647\";\n t[\"\\uFCE1\"] = \"\\u0628\\u0645\";\n t[\"\\uFCE2\"] = \"\\u0628\\u0647\";\n t[\"\\uFCE3\"] = \"\\u062A\\u0645\";\n t[\"\\uFCE4\"] = \"\\u062A\\u0647\";\n t[\"\\uFCE5\"] = \"\\u062B\\u0645\";\n t[\"\\uFCE6\"] = \"\\u062B\\u0647\";\n t[\"\\uFCE7\"] = \"\\u0633\\u0645\";\n t[\"\\uFCE8\"] = \"\\u0633\\u0647\";\n t[\"\\uFCE9\"] = \"\\u0634\\u0645\";\n t[\"\\uFCEA\"] = \"\\u0634\\u0647\";\n t[\"\\uFCEB\"] = \"\\u0643\\u0644\";\n t[\"\\uFCEC\"] = \"\\u0643\\u0645\";\n t[\"\\uFCED\"] = \"\\u0644\\u0645\";\n t[\"\\uFCEE\"] = \"\\u0646\\u0645\";\n t[\"\\uFCEF\"] = \"\\u0646\\u0647\";\n t[\"\\uFCF0\"] = \"\\u064A\\u0645\";\n t[\"\\uFCF1\"] = \"\\u064A\\u0647\";\n t[\"\\uFCF2\"] = \"\\u0640\\u064E\\u0651\";\n t[\"\\uFCF3\"] = \"\\u0640\\u064F\\u0651\";\n t[\"\\uFCF4\"] = \"\\u0640\\u0650\\u0651\";\n t[\"\\uFCF5\"] = \"\\u0637\\u0649\";\n t[\"\\uFCF6\"] = \"\\u0637\\u064A\";\n t[\"\\uFCF7\"] = \"\\u0639\\u0649\";\n t[\"\\uFCF8\"] = \"\\u0639\\u064A\";\n t[\"\\uFCF9\"] = \"\\u063A\\u0649\";\n t[\"\\uFCFA\"] = \"\\u063A\\u064A\";\n t[\"\\uFCFB\"] = \"\\u0633\\u0649\";\n t[\"\\uFCFC\"] = \"\\u0633\\u064A\";\n t[\"\\uFCFD\"] = \"\\u0634\\u0649\";\n t[\"\\uFCFE\"] = \"\\u0634\\u064A\";\n t[\"\\uFCFF\"] = \"\\u062D\\u0649\";\n t[\"\\uFD00\"] = \"\\u062D\\u064A\";\n t[\"\\uFD01\"] = \"\\u062C\\u0649\";\n t[\"\\uFD02\"] = \"\\u062C\\u064A\";\n t[\"\\uFD03\"] = \"\\u062E\\u0649\";\n t[\"\\uFD04\"] = \"\\u062E\\u064A\";\n t[\"\\uFD05\"] = \"\\u0635\\u0649\";\n t[\"\\uFD06\"] = \"\\u0635\\u064A\";\n t[\"\\uFD07\"] = \"\\u0636\\u0649\";\n t[\"\\uFD08\"] = \"\\u0636\\u064A\";\n t[\"\\uFD09\"] = \"\\u0634\\u062C\";\n t[\"\\uFD0A\"] = \"\\u0634\\u062D\";\n t[\"\\uFD0B\"] = \"\\u0634\\u062E\";\n t[\"\\uFD0C\"] = \"\\u0634\\u0645\";\n t[\"\\uFD0D\"] = \"\\u0634\\u0631\";\n t[\"\\uFD0E\"] = \"\\u0633\\u0631\";\n t[\"\\uFD0F\"] = \"\\u0635\\u0631\";\n t[\"\\uFD10\"] = \"\\u0636\\u0631\";\n t[\"\\uFD11\"] = \"\\u0637\\u0649\";\n t[\"\\uFD12\"] = \"\\u0637\\u064A\";\n t[\"\\uFD13\"] = \"\\u0639\\u0649\";\n t[\"\\uFD14\"] = \"\\u0639\\u064A\";\n t[\"\\uFD15\"] = \"\\u063A\\u0649\";\n t[\"\\uFD16\"] = \"\\u063A\\u064A\";\n t[\"\\uFD17\"] = \"\\u0633\\u0649\";\n t[\"\\uFD18\"] = \"\\u0633\\u064A\";\n t[\"\\uFD19\"] = \"\\u0634\\u0649\";\n t[\"\\uFD1A\"] = \"\\u0634\\u064A\";\n t[\"\\uFD1B\"] = \"\\u062D\\u0649\";\n t[\"\\uFD1C\"] = \"\\u062D\\u064A\";\n t[\"\\uFD1D\"] = \"\\u062C\\u0649\";\n t[\"\\uFD1E\"] = \"\\u062C\\u064A\";\n t[\"\\uFD1F\"] = \"\\u062E\\u0649\";\n t[\"\\uFD20\"] = \"\\u062E\\u064A\";\n t[\"\\uFD21\"] = \"\\u0635\\u0649\";\n t[\"\\uFD22\"] = \"\\u0635\\u064A\";\n t[\"\\uFD23\"] = \"\\u0636\\u0649\";\n t[\"\\uFD24\"] = \"\\u0636\\u064A\";\n t[\"\\uFD25\"] = \"\\u0634\\u062C\";\n t[\"\\uFD26\"] = \"\\u0634\\u062D\";\n t[\"\\uFD27\"] = \"\\u0634\\u062E\";\n t[\"\\uFD28\"] = \"\\u0634\\u0645\";\n t[\"\\uFD29\"] = \"\\u0634\\u0631\";\n t[\"\\uFD2A\"] = \"\\u0633\\u0631\";\n t[\"\\uFD2B\"] = \"\\u0635\\u0631\";\n t[\"\\uFD2C\"] = \"\\u0636\\u0631\";\n t[\"\\uFD2D\"] = \"\\u0634\\u062C\";\n t[\"\\uFD2E\"] = \"\\u0634\\u062D\";\n t[\"\\uFD2F\"] = \"\\u0634\\u062E\";\n t[\"\\uFD30\"] = \"\\u0634\\u0645\";\n t[\"\\uFD31\"] = \"\\u0633\\u0647\";\n t[\"\\uFD32\"] = \"\\u0634\\u0647\";\n t[\"\\uFD33\"] = \"\\u0637\\u0645\";\n t[\"\\uFD34\"] = \"\\u0633\\u062C\";\n t[\"\\uFD35\"] = \"\\u0633\\u062D\";\n t[\"\\uFD36\"] = \"\\u0633\\u062E\";\n t[\"\\uFD37\"] = \"\\u0634\\u062C\";\n t[\"\\uFD38\"] = \"\\u0634\\u062D\";\n t[\"\\uFD39\"] = \"\\u0634\\u062E\";\n t[\"\\uFD3A\"] = \"\\u0637\\u0645\";\n t[\"\\uFD3B\"] = \"\\u0638\\u0645\";\n t[\"\\uFD3C\"] = \"\\u0627\\u064B\";\n t[\"\\uFD3D\"] = \"\\u0627\\u064B\";\n t[\"\\uFD50\"] = \"\\u062A\\u062C\\u0645\";\n t[\"\\uFD51\"] = \"\\u062A\\u062D\\u062C\";\n t[\"\\uFD52\"] = \"\\u062A\\u062D\\u062C\";\n t[\"\\uFD53\"] = \"\\u062A\\u062D\\u0645\";\n t[\"\\uFD54\"] = \"\\u062A\\u062E\\u0645\";\n t[\"\\uFD55\"] = \"\\u062A\\u0645\\u062C\";\n t[\"\\uFD56\"] = \"\\u062A\\u0645\\u062D\";\n t[\"\\uFD57\"] = \"\\u062A\\u0645\\u062E\";\n t[\"\\uFD58\"] = \"\\u062C\\u0645\\u062D\";\n t[\"\\uFD59\"] = \"\\u062C\\u0645\\u062D\";\n t[\"\\uFD5A\"] = \"\\u062D\\u0645\\u064A\";\n t[\"\\uFD5B\"] = \"\\u062D\\u0645\\u0649\";\n t[\"\\uFD5C\"] = \"\\u0633\\u062D\\u062C\";\n t[\"\\uFD5D\"] = \"\\u0633\\u062C\\u062D\";\n t[\"\\uFD5E\"] = \"\\u0633\\u062C\\u0649\";\n t[\"\\uFD5F\"] = \"\\u0633\\u0645\\u062D\";\n t[\"\\uFD60\"] = \"\\u0633\\u0645\\u062D\";\n t[\"\\uFD61\"] = \"\\u0633\\u0645\\u062C\";\n t[\"\\uFD62\"] = \"\\u0633\\u0645\\u0645\";\n t[\"\\uFD63\"] = \"\\u0633\\u0645\\u0645\";\n t[\"\\uFD64\"] = \"\\u0635\\u062D\\u062D\";\n t[\"\\uFD65\"] = \"\\u0635\\u062D\\u062D\";\n t[\"\\uFD66\"] = \"\\u0635\\u0645\\u0645\";\n t[\"\\uFD67\"] = \"\\u0634\\u062D\\u0645\";\n t[\"\\uFD68\"] = \"\\u0634\\u062D\\u0645\";\n t[\"\\uFD69\"] = \"\\u0634\\u062C\\u064A\";\n t[\"\\uFD6A\"] = \"\\u0634\\u0645\\u062E\";\n t[\"\\uFD6B\"] = \"\\u0634\\u0645\\u062E\";\n t[\"\\uFD6C\"] = \"\\u0634\\u0645\\u0645\";\n t[\"\\uFD6D\"] = \"\\u0634\\u0645\\u0645\";\n t[\"\\uFD6E\"] = \"\\u0636\\u062D\\u0649\";\n t[\"\\uFD6F\"] = \"\\u0636\\u062E\\u0645\";\n t[\"\\uFD70\"] = \"\\u0636\\u062E\\u0645\";\n t[\"\\uFD71\"] = \"\\u0637\\u0645\\u062D\";\n t[\"\\uFD72\"] = \"\\u0637\\u0645\\u062D\";\n t[\"\\uFD73\"] = \"\\u0637\\u0645\\u0645\";\n t[\"\\uFD74\"] = \"\\u0637\\u0645\\u064A\";\n t[\"\\uFD75\"] = \"\\u0639\\u062C\\u0645\";\n t[\"\\uFD76\"] = \"\\u0639\\u0645\\u0645\";\n t[\"\\uFD77\"] = \"\\u0639\\u0645\\u0645\";\n t[\"\\uFD78\"] = \"\\u0639\\u0645\\u0649\";\n t[\"\\uFD79\"] = \"\\u063A\\u0645\\u0645\";\n t[\"\\uFD7A\"] = \"\\u063A\\u0645\\u064A\";\n t[\"\\uFD7B\"] = \"\\u063A\\u0645\\u0649\";\n t[\"\\uFD7C\"] = \"\\u0641\\u062E\\u0645\";\n t[\"\\uFD7D\"] = \"\\u0641\\u062E\\u0645\";\n t[\"\\uFD7E\"] = \"\\u0642\\u0645\\u062D\";\n t[\"\\uFD7F\"] = \"\\u0642\\u0645\\u0645\";\n t[\"\\uFD80\"] = \"\\u0644\\u062D\\u0645\";\n t[\"\\uFD81\"] = \"\\u0644\\u062D\\u064A\";\n t[\"\\uFD82\"] = \"\\u0644\\u062D\\u0649\";\n t[\"\\uFD83\"] = \"\\u0644\\u062C\\u062C\";\n t[\"\\uFD84\"] = \"\\u0644\\u062C\\u062C\";\n t[\"\\uFD85\"] = \"\\u0644\\u062E\\u0645\";\n t[\"\\uFD86\"] = \"\\u0644\\u062E\\u0645\";\n t[\"\\uFD87\"] = \"\\u0644\\u0645\\u062D\";\n t[\"\\uFD88\"] = \"\\u0644\\u0645\\u062D\";\n t[\"\\uFD89\"] = \"\\u0645\\u062D\\u062C\";\n t[\"\\uFD8A\"] = \"\\u0645\\u062D\\u0645\";\n t[\"\\uFD8B\"] = \"\\u0645\\u062D\\u064A\";\n t[\"\\uFD8C\"] = \"\\u0645\\u062C\\u062D\";\n t[\"\\uFD8D\"] = \"\\u0645\\u062C\\u0645\";\n t[\"\\uFD8E\"] = \"\\u0645\\u062E\\u062C\";\n t[\"\\uFD8F\"] = \"\\u0645\\u062E\\u0645\";\n t[\"\\uFD92\"] = \"\\u0645\\u062C\\u062E\";\n t[\"\\uFD93\"] = \"\\u0647\\u0645\\u062C\";\n t[\"\\uFD94\"] = \"\\u0647\\u0645\\u0645\";\n t[\"\\uFD95\"] = \"\\u0646\\u062D\\u0645\";\n t[\"\\uFD96\"] = \"\\u0646\\u062D\\u0649\";\n t[\"\\uFD97\"] = \"\\u0646\\u062C\\u0645\";\n t[\"\\uFD98\"] = \"\\u0646\\u062C\\u0645\";\n t[\"\\uFD99\"] = \"\\u0646\\u062C\\u0649\";\n t[\"\\uFD9A\"] = \"\\u0646\\u0645\\u064A\";\n t[\"\\uFD9B\"] = \"\\u0646\\u0645\\u0649\";\n t[\"\\uFD9C\"] = \"\\u064A\\u0645\\u0645\";\n t[\"\\uFD9D\"] = \"\\u064A\\u0645\\u0645\";\n t[\"\\uFD9E\"] = \"\\u0628\\u062E\\u064A\";\n t[\"\\uFD9F\"] = \"\\u062A\\u062C\\u064A\";\n t[\"\\uFDA0\"] = \"\\u062A\\u062C\\u0649\";\n t[\"\\uFDA1\"] = \"\\u062A\\u062E\\u064A\";\n t[\"\\uFDA2\"] = \"\\u062A\\u062E\\u0649\";\n t[\"\\uFDA3\"] = \"\\u062A\\u0645\\u064A\";\n t[\"\\uFDA4\"] = \"\\u062A\\u0645\\u0649\";\n t[\"\\uFDA5\"] = \"\\u062C\\u0645\\u064A\";\n t[\"\\uFDA6\"] = \"\\u062C\\u062D\\u0649\";\n t[\"\\uFDA7\"] = \"\\u062C\\u0645\\u0649\";\n t[\"\\uFDA8\"] = \"\\u0633\\u062E\\u0649\";\n t[\"\\uFDA9\"] = \"\\u0635\\u062D\\u064A\";\n t[\"\\uFDAA\"] = \"\\u0634\\u062D\\u064A\";\n t[\"\\uFDAB\"] = \"\\u0636\\u062D\\u064A\";\n t[\"\\uFDAC\"] = \"\\u0644\\u062C\\u064A\";\n t[\"\\uFDAD\"] = \"\\u0644\\u0645\\u064A\";\n t[\"\\uFDAE\"] = \"\\u064A\\u062D\\u064A\";\n t[\"\\uFDAF\"] = \"\\u064A\\u062C\\u064A\";\n t[\"\\uFDB0\"] = \"\\u064A\\u0645\\u064A\";\n t[\"\\uFDB1\"] = \"\\u0645\\u0645\\u064A\";\n t[\"\\uFDB2\"] = \"\\u0642\\u0645\\u064A\";\n t[\"\\uFDB3\"] = \"\\u0646\\u062D\\u064A\";\n t[\"\\uFDB4\"] = \"\\u0642\\u0645\\u062D\";\n t[\"\\uFDB5\"] = \"\\u0644\\u062D\\u0645\";\n t[\"\\uFDB6\"] = \"\\u0639\\u0645\\u064A\";\n t[\"\\uFDB7\"] = \"\\u0643\\u0645\\u064A\";\n t[\"\\uFDB8\"] = \"\\u0646\\u062C\\u062D\";\n t[\"\\uFDB9\"] = \"\\u0645\\u062E\\u064A\";\n t[\"\\uFDBA\"] = \"\\u0644\\u062C\\u0645\";\n t[\"\\uFDBB\"] = \"\\u0643\\u0645\\u0645\";\n t[\"\\uFDBC\"] = \"\\u0644\\u062C\\u0645\";\n t[\"\\uFDBD\"] = \"\\u0646\\u062C\\u062D\";\n t[\"\\uFDBE\"] = \"\\u062C\\u062D\\u064A\";\n t[\"\\uFDBF\"] = \"\\u062D\\u062C\\u064A\";\n t[\"\\uFDC0\"] = \"\\u0645\\u062C\\u064A\";\n t[\"\\uFDC1\"] = \"\\u0641\\u0645\\u064A\";\n t[\"\\uFDC2\"] = \"\\u0628\\u062D\\u064A\";\n t[\"\\uFDC3\"] = \"\\u0643\\u0645\\u0645\";\n t[\"\\uFDC4\"] = \"\\u0639\\u062C\\u0645\";\n t[\"\\uFDC5\"] = \"\\u0635\\u0645\\u0645\";\n t[\"\\uFDC6\"] = \"\\u0633\\u062E\\u064A\";\n t[\"\\uFDC7\"] = \"\\u0646\\u062C\\u064A\";\n t[\"\\uFE49\"] = \"\\u203E\";\n t[\"\\uFE4A\"] = \"\\u203E\";\n t[\"\\uFE4B\"] = \"\\u203E\";\n t[\"\\uFE4C\"] = \"\\u203E\";\n t[\"\\uFE4D\"] = \"\\u005F\";\n t[\"\\uFE4E\"] = \"\\u005F\";\n t[\"\\uFE4F\"] = \"\\u005F\";\n t[\"\\uFE80\"] = \"\\u0621\";\n t[\"\\uFE81\"] = \"\\u0622\";\n t[\"\\uFE82\"] = \"\\u0622\";\n t[\"\\uFE83\"] = \"\\u0623\";\n t[\"\\uFE84\"] = \"\\u0623\";\n t[\"\\uFE85\"] = \"\\u0624\";\n t[\"\\uFE86\"] = \"\\u0624\";\n t[\"\\uFE87\"] = \"\\u0625\";\n t[\"\\uFE88\"] = \"\\u0625\";\n t[\"\\uFE89\"] = \"\\u0626\";\n t[\"\\uFE8A\"] = \"\\u0626\";\n t[\"\\uFE8B\"] = \"\\u0626\";\n t[\"\\uFE8C\"] = \"\\u0626\";\n t[\"\\uFE8D\"] = \"\\u0627\";\n t[\"\\uFE8E\"] = \"\\u0627\";\n t[\"\\uFE8F\"] = \"\\u0628\";\n t[\"\\uFE90\"] = \"\\u0628\";\n t[\"\\uFE91\"] = \"\\u0628\";\n t[\"\\uFE92\"] = \"\\u0628\";\n t[\"\\uFE93\"] = \"\\u0629\";\n t[\"\\uFE94\"] = \"\\u0629\";\n t[\"\\uFE95\"] = \"\\u062A\";\n t[\"\\uFE96\"] = \"\\u062A\";\n t[\"\\uFE97\"] = \"\\u062A\";\n t[\"\\uFE98\"] = \"\\u062A\";\n t[\"\\uFE99\"] = \"\\u062B\";\n t[\"\\uFE9A\"] = \"\\u062B\";\n t[\"\\uFE9B\"] = \"\\u062B\";\n t[\"\\uFE9C\"] = \"\\u062B\";\n t[\"\\uFE9D\"] = \"\\u062C\";\n t[\"\\uFE9E\"] = \"\\u062C\";\n t[\"\\uFE9F\"] = \"\\u062C\";\n t[\"\\uFEA0\"] = \"\\u062C\";\n t[\"\\uFEA1\"] = \"\\u062D\";\n t[\"\\uFEA2\"] = \"\\u062D\";\n t[\"\\uFEA3\"] = \"\\u062D\";\n t[\"\\uFEA4\"] = \"\\u062D\";\n t[\"\\uFEA5\"] = \"\\u062E\";\n t[\"\\uFEA6\"] = \"\\u062E\";\n t[\"\\uFEA7\"] = \"\\u062E\";\n t[\"\\uFEA8\"] = \"\\u062E\";\n t[\"\\uFEA9\"] = \"\\u062F\";\n t[\"\\uFEAA\"] = \"\\u062F\";\n t[\"\\uFEAB\"] = \"\\u0630\";\n t[\"\\uFEAC\"] = \"\\u0630\";\n t[\"\\uFEAD\"] = \"\\u0631\";\n t[\"\\uFEAE\"] = \"\\u0631\";\n t[\"\\uFEAF\"] = \"\\u0632\";\n t[\"\\uFEB0\"] = \"\\u0632\";\n t[\"\\uFEB1\"] = \"\\u0633\";\n t[\"\\uFEB2\"] = \"\\u0633\";\n t[\"\\uFEB3\"] = \"\\u0633\";\n t[\"\\uFEB4\"] = \"\\u0633\";\n t[\"\\uFEB5\"] = \"\\u0634\";\n t[\"\\uFEB6\"] = \"\\u0634\";\n t[\"\\uFEB7\"] = \"\\u0634\";\n t[\"\\uFEB8\"] = \"\\u0634\";\n t[\"\\uFEB9\"] = \"\\u0635\";\n t[\"\\uFEBA\"] = \"\\u0635\";\n t[\"\\uFEBB\"] = \"\\u0635\";\n t[\"\\uFEBC\"] = \"\\u0635\";\n t[\"\\uFEBD\"] = \"\\u0636\";\n t[\"\\uFEBE\"] = \"\\u0636\";\n t[\"\\uFEBF\"] = \"\\u0636\";\n t[\"\\uFEC0\"] = \"\\u0636\";\n t[\"\\uFEC1\"] = \"\\u0637\";\n t[\"\\uFEC2\"] = \"\\u0637\";\n t[\"\\uFEC3\"] = \"\\u0637\";\n t[\"\\uFEC4\"] = \"\\u0637\";\n t[\"\\uFEC5\"] = \"\\u0638\";\n t[\"\\uFEC6\"] = \"\\u0638\";\n t[\"\\uFEC7\"] = \"\\u0638\";\n t[\"\\uFEC8\"] = \"\\u0638\";\n t[\"\\uFEC9\"] = \"\\u0639\";\n t[\"\\uFECA\"] = \"\\u0639\";\n t[\"\\uFECB\"] = \"\\u0639\";\n t[\"\\uFECC\"] = \"\\u0639\";\n t[\"\\uFECD\"] = \"\\u063A\";\n t[\"\\uFECE\"] = \"\\u063A\";\n t[\"\\uFECF\"] = \"\\u063A\";\n t[\"\\uFED0\"] = \"\\u063A\";\n t[\"\\uFED1\"] = \"\\u0641\";\n t[\"\\uFED2\"] = \"\\u0641\";\n t[\"\\uFED3\"] = \"\\u0641\";\n t[\"\\uFED4\"] = \"\\u0641\";\n t[\"\\uFED5\"] = \"\\u0642\";\n t[\"\\uFED6\"] = \"\\u0642\";\n t[\"\\uFED7\"] = \"\\u0642\";\n t[\"\\uFED8\"] = \"\\u0642\";\n t[\"\\uFED9\"] = \"\\u0643\";\n t[\"\\uFEDA\"] = \"\\u0643\";\n t[\"\\uFEDB\"] = \"\\u0643\";\n t[\"\\uFEDC\"] = \"\\u0643\";\n t[\"\\uFEDD\"] = \"\\u0644\";\n t[\"\\uFEDE\"] = \"\\u0644\";\n t[\"\\uFEDF\"] = \"\\u0644\";\n t[\"\\uFEE0\"] = \"\\u0644\";\n t[\"\\uFEE1\"] = \"\\u0645\";\n t[\"\\uFEE2\"] = \"\\u0645\";\n t[\"\\uFEE3\"] = \"\\u0645\";\n t[\"\\uFEE4\"] = \"\\u0645\";\n t[\"\\uFEE5\"] = \"\\u0646\";\n t[\"\\uFEE6\"] = \"\\u0646\";\n t[\"\\uFEE7\"] = \"\\u0646\";\n t[\"\\uFEE8\"] = \"\\u0646\";\n t[\"\\uFEE9\"] = \"\\u0647\";\n t[\"\\uFEEA\"] = \"\\u0647\";\n t[\"\\uFEEB\"] = \"\\u0647\";\n t[\"\\uFEEC\"] = \"\\u0647\";\n t[\"\\uFEED\"] = \"\\u0648\";\n t[\"\\uFEEE\"] = \"\\u0648\";\n t[\"\\uFEEF\"] = \"\\u0649\";\n t[\"\\uFEF0\"] = \"\\u0649\";\n t[\"\\uFEF1\"] = \"\\u064A\";\n t[\"\\uFEF2\"] = \"\\u064A\";\n t[\"\\uFEF3\"] = \"\\u064A\";\n t[\"\\uFEF4\"] = \"\\u064A\";\n t[\"\\uFEF5\"] = \"\\u0644\\u0622\";\n t[\"\\uFEF6\"] = \"\\u0644\\u0622\";\n t[\"\\uFEF7\"] = \"\\u0644\\u0623\";\n t[\"\\uFEF8\"] = \"\\u0644\\u0623\";\n t[\"\\uFEF9\"] = \"\\u0644\\u0625\";\n t[\"\\uFEFA\"] = \"\\u0644\\u0625\";\n t[\"\\uFEFB\"] = \"\\u0644\\u0627\";\n t[\"\\uFEFC\"] = \"\\u0644\\u0627\";\n});\nfunction reverseIfRtl(chars) {\n var charsLength = chars.length;\n if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {\n return chars;\n }\n var s = \"\";\n for (var ii = charsLength - 1; ii >= 0; ii--) {\n s += chars[ii];\n }\n return s;\n}\nexports.mapSpecialUnicodeValues = mapSpecialUnicodeValues;\nexports.reverseIfRtl = reverseIfRtl;\nexports.getUnicodeRangeFor = getUnicodeRangeFor;\nexports.getNormalizedUnicodes = getNormalizedUnicodes;\nexports.getUnicodeForGlyph = getUnicodeForGlyph;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FontRendererFactory = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _cff_parser = __w_pdfjs_require__(31);\n\nvar _glyphlist = __w_pdfjs_require__(34);\n\nvar _encodings = __w_pdfjs_require__(33);\n\nvar _stream = __w_pdfjs_require__(12);\n\nvar FontRendererFactory = function FontRendererFactoryClosure() {\n function getLong(data, offset) {\n return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];\n }\n\n function getUshort(data, offset) {\n return data[offset] << 8 | data[offset + 1];\n }\n\n function getSubroutineBias(subrs) {\n const numSubrs = subrs.length;\n let bias = 32768;\n\n if (numSubrs < 1240) {\n bias = 107;\n } else if (numSubrs < 33900) {\n bias = 1131;\n }\n\n return bias;\n }\n\n function parseCmap(data, start, end) {\n var offset = getUshort(data, start + 2) === 1 ? getLong(data, start + 8) : getLong(data, start + 16);\n var format = getUshort(data, start + offset);\n var ranges, p, i;\n\n if (format === 4) {\n getUshort(data, start + offset + 2);\n var segCount = getUshort(data, start + offset + 6) >> 1;\n p = start + offset + 14;\n ranges = [];\n\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i] = {\n end: getUshort(data, p)\n };\n }\n\n p += 2;\n\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].start = getUshort(data, p);\n }\n\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].idDelta = getUshort(data, p);\n }\n\n for (i = 0; i < segCount; i++, p += 2) {\n var idOffset = getUshort(data, p);\n\n if (idOffset === 0) {\n continue;\n }\n\n ranges[i].ids = [];\n\n for (var j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n ranges[i].ids[j] = getUshort(data, p + idOffset);\n idOffset += 2;\n }\n }\n\n return ranges;\n } else if (format === 12) {\n getLong(data, start + offset + 4);\n var groups = getLong(data, start + offset + 12);\n p = start + offset + 16;\n ranges = [];\n\n for (i = 0; i < groups; i++) {\n ranges.push({\n start: getLong(data, p),\n end: getLong(data, p + 4),\n idDelta: getLong(data, p + 8) - getLong(data, p)\n });\n p += 12;\n }\n\n return ranges;\n }\n\n throw new _util.FormatError(`unsupported cmap: ${format}`);\n }\n\n function parseCff(data, start, end, seacAnalysisEnabled) {\n var properties = {};\n var parser = new _cff_parser.CFFParser(new _stream.Stream(data, start, end - start), properties, seacAnalysisEnabled);\n var cff = parser.parse();\n return {\n glyphs: cff.charStrings.objects,\n subrs: cff.topDict.privateDict && cff.topDict.privateDict.subrsIndex && cff.topDict.privateDict.subrsIndex.objects,\n gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects,\n isCFFCIDFont: cff.isCIDFont,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray\n };\n }\n\n function parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n var itemSize, itemDecode;\n\n if (isGlyphLocationsLong) {\n itemSize = 4;\n\n itemDecode = function fontItemDecodeLong(data, offset) {\n return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];\n };\n } else {\n itemSize = 2;\n\n itemDecode = function fontItemDecode(data, offset) {\n return data[offset] << 9 | data[offset + 1] << 1;\n };\n }\n\n var glyphs = [];\n var startOffset = itemDecode(loca, 0);\n\n for (var j = itemSize; j < loca.length; j += itemSize) {\n var endOffset = itemDecode(loca, j);\n glyphs.push(glyf.subarray(startOffset, endOffset));\n startOffset = endOffset;\n }\n\n return glyphs;\n }\n\n function lookupCmap(ranges, unicode) {\n var code = unicode.codePointAt(0),\n gid = 0;\n var l = 0,\n r = ranges.length - 1;\n\n while (l < r) {\n var c = l + r + 1 >> 1;\n\n if (code < ranges[c].start) {\n r = c - 1;\n } else {\n l = c;\n }\n }\n\n if (ranges[l].start <= code && code <= ranges[l].end) {\n gid = ranges[l].idDelta + (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code) & 0xffff;\n }\n\n return {\n charCode: code,\n glyphId: gid\n };\n }\n\n function compileGlyf(code, cmds, font) {\n function moveTo(x, y) {\n cmds.push({\n cmd: \"moveTo\",\n args: [x, y]\n });\n }\n\n function lineTo(x, y) {\n cmds.push({\n cmd: \"lineTo\",\n args: [x, y]\n });\n }\n\n function quadraticCurveTo(xa, ya, x, y) {\n cmds.push({\n cmd: \"quadraticCurveTo\",\n args: [xa, ya, x, y]\n });\n }\n\n var i = 0;\n var numberOfContours = (code[i] << 24 | code[i + 1] << 16) >> 16;\n var flags;\n var x = 0,\n y = 0;\n i += 10;\n\n if (numberOfContours < 0) {\n do {\n flags = code[i] << 8 | code[i + 1];\n var glyphIndex = code[i + 2] << 8 | code[i + 3];\n i += 4;\n var arg1, arg2;\n\n if (flags & 0x01) {\n arg1 = (code[i] << 24 | code[i + 1] << 16) >> 16;\n arg2 = (code[i + 2] << 24 | code[i + 3] << 16) >> 16;\n i += 4;\n } else {\n arg1 = code[i++];\n arg2 = code[i++];\n }\n\n if (flags & 0x02) {\n x = arg1;\n y = arg2;\n } else {\n x = 0;\n y = 0;\n }\n\n var scaleX = 1,\n scaleY = 1,\n scale01 = 0,\n scale10 = 0;\n\n if (flags & 0x08) {\n scaleX = scaleY = (code[i] << 24 | code[i + 1] << 16) / 1073741824;\n i += 2;\n } else if (flags & 0x40) {\n scaleX = (code[i] << 24 | code[i + 1] << 16) / 1073741824;\n scaleY = (code[i + 2] << 24 | code[i + 3] << 16) / 1073741824;\n i += 4;\n } else if (flags & 0x80) {\n scaleX = (code[i] << 24 | code[i + 1] << 16) / 1073741824;\n scale01 = (code[i + 2] << 24 | code[i + 3] << 16) / 1073741824;\n scale10 = (code[i + 4] << 24 | code[i + 5] << 16) / 1073741824;\n scaleY = (code[i + 6] << 24 | code[i + 7] << 16) / 1073741824;\n i += 8;\n }\n\n var subglyph = font.glyphs[glyphIndex];\n\n if (subglyph) {\n cmds.push({\n cmd: \"save\"\n });\n cmds.push({\n cmd: \"transform\",\n args: [scaleX, scale01, scale10, scaleY, x, y]\n });\n compileGlyf(subglyph, cmds, font);\n cmds.push({\n cmd: \"restore\"\n });\n }\n } while (flags & 0x20);\n } else {\n var endPtsOfContours = [];\n var j, jj;\n\n for (j = 0; j < numberOfContours; j++) {\n endPtsOfContours.push(code[i] << 8 | code[i + 1]);\n i += 2;\n }\n\n var instructionLength = code[i] << 8 | code[i + 1];\n i += 2 + instructionLength;\n var numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n var points = [];\n\n while (points.length < numberOfPoints) {\n flags = code[i++];\n var repeat = 1;\n\n if (flags & 0x08) {\n repeat += code[i++];\n }\n\n while (repeat-- > 0) {\n points.push({\n flags\n });\n }\n }\n\n for (j = 0; j < numberOfPoints; j++) {\n switch (points[j].flags & 0x12) {\n case 0x00:\n x += (code[i] << 24 | code[i + 1] << 16) >> 16;\n i += 2;\n break;\n\n case 0x02:\n x -= code[i++];\n break;\n\n case 0x12:\n x += code[i++];\n break;\n }\n\n points[j].x = x;\n }\n\n for (j = 0; j < numberOfPoints; j++) {\n switch (points[j].flags & 0x24) {\n case 0x00:\n y += (code[i] << 24 | code[i + 1] << 16) >> 16;\n i += 2;\n break;\n\n case 0x04:\n y -= code[i++];\n break;\n\n case 0x24:\n y += code[i++];\n break;\n }\n\n points[j].y = y;\n }\n\n var startPoint = 0;\n\n for (i = 0; i < numberOfContours; i++) {\n var endPoint = endPtsOfContours[i];\n var contour = points.slice(startPoint, endPoint + 1);\n\n if (contour[0].flags & 1) {\n contour.push(contour[0]);\n } else if (contour[contour.length - 1].flags & 1) {\n contour.unshift(contour[contour.length - 1]);\n } else {\n var p = {\n flags: 1,\n x: (contour[0].x + contour[contour.length - 1].x) / 2,\n y: (contour[0].y + contour[contour.length - 1].y) / 2\n };\n contour.unshift(p);\n contour.push(p);\n }\n\n moveTo(contour[0].x, contour[0].y);\n\n for (j = 1, jj = contour.length; j < jj; j++) {\n if (contour[j].flags & 1) {\n lineTo(contour[j].x, contour[j].y);\n } else if (contour[j + 1].flags & 1) {\n quadraticCurveTo(contour[j].x, contour[j].y, contour[j + 1].x, contour[j + 1].y);\n j++;\n } else {\n quadraticCurveTo(contour[j].x, contour[j].y, (contour[j].x + contour[j + 1].x) / 2, (contour[j].y + contour[j + 1].y) / 2);\n }\n }\n\n startPoint = endPoint + 1;\n }\n }\n }\n\n function compileCharString(charStringCode, cmds, font, glyphId) {\n function moveTo(x, y) {\n cmds.push({\n cmd: \"moveTo\",\n args: [x, y]\n });\n }\n\n function lineTo(x, y) {\n cmds.push({\n cmd: \"lineTo\",\n args: [x, y]\n });\n }\n\n function bezierCurveTo(x1, y1, x2, y2, x, y) {\n cmds.push({\n cmd: \"bezierCurveTo\",\n args: [x1, y1, x2, y2, x, y]\n });\n }\n\n var stack = [];\n var x = 0,\n y = 0;\n var stems = 0;\n\n function parse(code) {\n var i = 0;\n\n while (i < code.length) {\n var stackClean = false;\n var v = code[i++];\n var xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n\n switch (v) {\n case 1:\n stems += stack.length >> 1;\n stackClean = true;\n break;\n\n case 3:\n stems += stack.length >> 1;\n stackClean = true;\n break;\n\n case 4:\n y += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n\n case 5:\n while (stack.length > 0) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n\n break;\n\n case 6:\n while (stack.length > 0) {\n x += stack.shift();\n lineTo(x, y);\n\n if (stack.length === 0) {\n break;\n }\n\n y += stack.shift();\n lineTo(x, y);\n }\n\n break;\n\n case 7:\n while (stack.length > 0) {\n y += stack.shift();\n lineTo(x, y);\n\n if (stack.length === 0) {\n break;\n }\n\n x += stack.shift();\n lineTo(x, y);\n }\n\n break;\n\n case 8:\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n\n break;\n\n case 10:\n n = stack.pop();\n subrCode = null;\n\n if (font.isCFFCIDFont) {\n const fdIndex = font.fdSelect.getFDIndex(glyphId);\n\n if (fdIndex >= 0 && fdIndex < font.fdArray.length) {\n const fontDict = font.fdArray[fdIndex];\n let subrs;\n\n if (fontDict.privateDict && fontDict.privateDict.subrsIndex) {\n subrs = fontDict.privateDict.subrsIndex.objects;\n }\n\n if (subrs) {\n n += getSubroutineBias(subrs);\n subrCode = subrs[n];\n }\n } else {\n (0, _util.warn)(\"Invalid fd index for glyph index.\");\n }\n } else {\n subrCode = font.subrs[n + font.subrsBias];\n }\n\n if (subrCode) {\n parse(subrCode);\n }\n\n break;\n\n case 11:\n return;\n\n case 12:\n v = code[i++];\n\n switch (v) {\n case 34:\n xa = x + stack.shift();\n xb = xa + stack.shift();\n y1 = y + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y, xb, y1, x, y1);\n xa = x + stack.shift();\n xb = xa + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y1, xb, y, x, y);\n break;\n\n case 35:\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n stack.pop();\n break;\n\n case 36:\n xa = x + stack.shift();\n y1 = y + stack.shift();\n xb = xa + stack.shift();\n y2 = y1 + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y1, xb, y2, x, y2);\n xa = x + stack.shift();\n xb = xa + stack.shift();\n y3 = y2 + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y2, xb, y3, x, y);\n break;\n\n case 37:\n var x0 = x,\n y0 = y;\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb;\n y = yb;\n\n if (Math.abs(x - x0) > Math.abs(y - y0)) {\n x += stack.shift();\n } else {\n y += stack.shift();\n }\n\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n\n default:\n throw new _util.FormatError(`unknown operator: 12 ${v}`);\n }\n\n break;\n\n case 14:\n if (stack.length >= 4) {\n var achar = stack.pop();\n var bchar = stack.pop();\n y = stack.pop();\n x = stack.pop();\n cmds.push({\n cmd: \"save\"\n });\n cmds.push({\n cmd: \"translate\",\n args: [x, y]\n });\n var cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[achar]]));\n compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);\n cmds.push({\n cmd: \"restore\"\n });\n cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[bchar]]));\n compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);\n }\n\n return;\n\n case 18:\n stems += stack.length >> 1;\n stackClean = true;\n break;\n\n case 19:\n stems += stack.length >> 1;\n i += stems + 7 >> 3;\n stackClean = true;\n break;\n\n case 20:\n stems += stack.length >> 1;\n i += stems + 7 >> 3;\n stackClean = true;\n break;\n\n case 21:\n y += stack.pop();\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n\n case 22:\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n\n case 23:\n stems += stack.length >> 1;\n stackClean = true;\n break;\n\n case 24:\n while (stack.length > 2) {\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n break;\n\n case 25:\n while (stack.length > 6) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n\n case 26:\n if (stack.length % 2) {\n x += stack.shift();\n }\n\n while (stack.length > 0) {\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb;\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n\n break;\n\n case 27:\n if (stack.length % 2) {\n y += stack.shift();\n }\n\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb;\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n\n break;\n\n case 28:\n stack.push((code[i] << 24 | code[i + 1] << 16) >> 16);\n i += 2;\n break;\n\n case 29:\n n = stack.pop() + font.gsubrsBias;\n subrCode = font.gsubrs[n];\n\n if (subrCode) {\n parse(subrCode);\n }\n\n break;\n\n case 30:\n while (stack.length > 0) {\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n\n if (stack.length === 0) {\n break;\n }\n\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n y = yb + stack.shift();\n x = xb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n\n break;\n\n case 31:\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n y = yb + stack.shift();\n x = xb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n\n if (stack.length === 0) {\n break;\n }\n\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n\n break;\n\n default:\n if (v < 32) {\n throw new _util.FormatError(`unknown operator: ${v}`);\n }\n\n if (v < 247) {\n stack.push(v - 139);\n } else if (v < 251) {\n stack.push((v - 247) * 256 + code[i++] + 108);\n } else if (v < 255) {\n stack.push(-(v - 251) * 256 - code[i++] - 108);\n } else {\n stack.push((code[i] << 24 | code[i + 1] << 16 | code[i + 2] << 8 | code[i + 3]) / 65536);\n i += 4;\n }\n\n break;\n }\n\n if (stackClean) {\n stack.length = 0;\n }\n }\n }\n\n parse(charStringCode);\n }\n\n const NOOP = [];\n\n class CompiledFont {\n constructor(fontMatrix) {\n if (this.constructor === CompiledFont) {\n (0, _util.unreachable)(\"Cannot initialize CompiledFont.\");\n }\n\n this.fontMatrix = fontMatrix;\n this.compiledGlyphs = Object.create(null);\n this.compiledCharCodeToGlyphId = Object.create(null);\n }\n\n getPathJs(unicode) {\n const cmap = lookupCmap(this.cmap, unicode);\n let fn = this.compiledGlyphs[cmap.glyphId];\n\n if (!fn) {\n fn = this.compileGlyph(this.glyphs[cmap.glyphId], cmap.glyphId);\n this.compiledGlyphs[cmap.glyphId] = fn;\n }\n\n if (this.compiledCharCodeToGlyphId[cmap.charCode] === undefined) {\n this.compiledCharCodeToGlyphId[cmap.charCode] = cmap.glyphId;\n }\n\n return fn;\n }\n\n compileGlyph(code, glyphId) {\n if (!code || code.length === 0 || code[0] === 14) {\n return NOOP;\n }\n\n let fontMatrix = this.fontMatrix;\n\n if (this.isCFFCIDFont) {\n const fdIndex = this.fdSelect.getFDIndex(glyphId);\n\n if (fdIndex >= 0 && fdIndex < this.fdArray.length) {\n const fontDict = this.fdArray[fdIndex];\n fontMatrix = fontDict.getByName(\"FontMatrix\") || _util.FONT_IDENTITY_MATRIX;\n } else {\n (0, _util.warn)(\"Invalid fd index for glyph index.\");\n }\n }\n\n const cmds = [];\n cmds.push({\n cmd: \"save\"\n });\n cmds.push({\n cmd: \"transform\",\n args: fontMatrix.slice()\n });\n cmds.push({\n cmd: \"scale\",\n args: [\"size\", \"-size\"]\n });\n this.compileGlyphImpl(code, cmds, glyphId);\n cmds.push({\n cmd: \"restore\"\n });\n return cmds;\n }\n\n compileGlyphImpl() {\n (0, _util.unreachable)(\"Children classes should implement this.\");\n }\n\n hasBuiltPath(unicode) {\n const cmap = lookupCmap(this.cmap, unicode);\n return this.compiledGlyphs[cmap.glyphId] !== undefined && this.compiledCharCodeToGlyphId[cmap.charCode] !== undefined;\n }\n\n }\n\n class TrueTypeCompiled extends CompiledFont {\n constructor(glyphs, cmap, fontMatrix) {\n super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\n this.glyphs = glyphs;\n this.cmap = cmap;\n }\n\n compileGlyphImpl(code, cmds) {\n compileGlyf(code, cmds, this);\n }\n\n }\n\n class Type2Compiled extends CompiledFont {\n constructor(cffInfo, cmap, fontMatrix, glyphNameMap) {\n super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n this.glyphs = cffInfo.glyphs;\n this.gsubrs = cffInfo.gsubrs || [];\n this.subrs = cffInfo.subrs || [];\n this.cmap = cmap;\n this.glyphNameMap = glyphNameMap || (0, _glyphlist.getGlyphsUnicode)();\n this.gsubrsBias = getSubroutineBias(this.gsubrs);\n this.subrsBias = getSubroutineBias(this.subrs);\n this.isCFFCIDFont = cffInfo.isCFFCIDFont;\n this.fdSelect = cffInfo.fdSelect;\n this.fdArray = cffInfo.fdArray;\n }\n\n compileGlyphImpl(code, cmds, glyphId) {\n compileCharString(code, cmds, this, glyphId);\n }\n\n }\n\n return {\n create: function FontRendererFactory_create(font, seacAnalysisEnabled) {\n var data = new Uint8Array(font.data);\n var cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n var numTables = getUshort(data, 4);\n\n for (var i = 0, p = 12; i < numTables; i++, p += 16) {\n var tag = (0, _util.bytesToString)(data.subarray(p, p + 4));\n var offset = getLong(data, p + 8);\n var length = getLong(data, p + 12);\n\n switch (tag) {\n case \"cmap\":\n cmap = parseCmap(data, offset, offset + length);\n break;\n\n case \"glyf\":\n glyf = data.subarray(offset, offset + length);\n break;\n\n case \"loca\":\n loca = data.subarray(offset, offset + length);\n break;\n\n case \"head\":\n unitsPerEm = getUshort(data, offset + 18);\n indexToLocFormat = getUshort(data, offset + 50);\n break;\n\n case \"CFF \":\n cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n break;\n }\n }\n\n if (glyf) {\n var fontMatrix = !unitsPerEm ? font.fontMatrix : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];\n return new TrueTypeCompiled(parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix);\n }\n\n return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\n }\n };\n}();\n\nexports.FontRendererFactory = FontRendererFactory;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Type1Parser = void 0;\n\nvar _encodings = __w_pdfjs_require__(33);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _stream = __w_pdfjs_require__(12);\n\nvar _util = __w_pdfjs_require__(2);\n\nvar HINTING_ENABLED = false;\n\nvar Type1CharString = function Type1CharStringClosure() {\n var COMMAND_MAP = {\n hstem: [1],\n vstem: [3],\n vmoveto: [4],\n rlineto: [5],\n hlineto: [6],\n vlineto: [7],\n rrcurveto: [8],\n callsubr: [10],\n flex: [12, 35],\n drop: [12, 18],\n endchar: [14],\n rmoveto: [21],\n hmoveto: [22],\n vhcurveto: [30],\n hvcurveto: [31]\n };\n\n function Type1CharString() {\n this.width = 0;\n this.lsb = 0;\n this.flexing = false;\n this.output = [];\n this.stack = [];\n }\n\n Type1CharString.prototype = {\n convert: function Type1CharString_convert(encoded, subrs, seacAnalysisEnabled) {\n var count = encoded.length;\n var error = false;\n var wx, sbx, subrNumber;\n\n for (var i = 0; i < count; i++) {\n var value = encoded[i];\n\n if (value < 32) {\n if (value === 12) {\n value = (value << 8) + encoded[++i];\n }\n\n switch (value) {\n case 1:\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n\n case 3:\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n\n case 4:\n if (this.flexing) {\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n\n var dy = this.stack.pop();\n this.stack.push(0, dy);\n break;\n }\n\n error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n break;\n\n case 5:\n error = this.executeCommand(2, COMMAND_MAP.rlineto);\n break;\n\n case 6:\n error = this.executeCommand(1, COMMAND_MAP.hlineto);\n break;\n\n case 7:\n error = this.executeCommand(1, COMMAND_MAP.vlineto);\n break;\n\n case 8:\n error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n break;\n\n case 9:\n this.stack = [];\n break;\n\n case 10:\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n\n subrNumber = this.stack.pop();\n\n if (!subrs[subrNumber]) {\n error = true;\n break;\n }\n\n error = this.convert(subrs[subrNumber], subrs, seacAnalysisEnabled);\n break;\n\n case 11:\n return error;\n\n case 13:\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n\n wx = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx);\n error = this.executeCommand(2, COMMAND_MAP.hmoveto);\n break;\n\n case 14:\n this.output.push(COMMAND_MAP.endchar[0]);\n break;\n\n case 21:\n if (this.flexing) {\n break;\n }\n\n error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n break;\n\n case 22:\n if (this.flexing) {\n this.stack.push(0);\n break;\n }\n\n error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n break;\n\n case 30:\n error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n break;\n\n case 31:\n error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n break;\n\n case (12 << 8) + 0:\n this.stack = [];\n break;\n\n case (12 << 8) + 1:\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n\n case (12 << 8) + 2:\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n\n case (12 << 8) + 6:\n if (seacAnalysisEnabled) {\n const asb = this.stack[this.stack.length - 5];\n this.seac = this.stack.splice(-4, 4);\n this.seac[0] += this.lsb - asb;\n error = this.executeCommand(0, COMMAND_MAP.endchar);\n } else {\n error = this.executeCommand(4, COMMAND_MAP.endchar);\n }\n\n break;\n\n case (12 << 8) + 7:\n if (this.stack.length < 4) {\n error = true;\n break;\n }\n\n this.stack.pop();\n wx = this.stack.pop();\n var sby = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx, sby);\n error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n break;\n\n case (12 << 8) + 12:\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n\n var num2 = this.stack.pop();\n var num1 = this.stack.pop();\n this.stack.push(num1 / num2);\n break;\n\n case (12 << 8) + 16:\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n\n subrNumber = this.stack.pop();\n var numArgs = this.stack.pop();\n\n if (subrNumber === 0 && numArgs === 3) {\n var flexArgs = this.stack.splice(this.stack.length - 17, 17);\n this.stack.push(flexArgs[2] + flexArgs[0], flexArgs[3] + flexArgs[1], flexArgs[4], flexArgs[5], flexArgs[6], flexArgs[7], flexArgs[8], flexArgs[9], flexArgs[10], flexArgs[11], flexArgs[12], flexArgs[13], flexArgs[14]);\n error = this.executeCommand(13, COMMAND_MAP.flex, true);\n this.flexing = false;\n this.stack.push(flexArgs[15], flexArgs[16]);\n } else if (subrNumber === 1 && numArgs === 0) {\n this.flexing = true;\n }\n\n break;\n\n case (12 << 8) + 17:\n break;\n\n case (12 << 8) + 33:\n this.stack = [];\n break;\n\n default:\n (0, _util.warn)('Unknown type 1 charstring command of \"' + value + '\"');\n break;\n }\n\n if (error) {\n break;\n }\n\n continue;\n } else if (value <= 246) {\n value = value - 139;\n } else if (value <= 250) {\n value = (value - 247) * 256 + encoded[++i] + 108;\n } else if (value <= 254) {\n value = -((value - 251) * 256) - encoded[++i] - 108;\n } else {\n value = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 | (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0;\n }\n\n this.stack.push(value);\n }\n\n return error;\n },\n\n executeCommand(howManyArgs, command, keepStack) {\n var stackLength = this.stack.length;\n\n if (howManyArgs > stackLength) {\n return true;\n }\n\n var start = stackLength - howManyArgs;\n\n for (var i = start; i < stackLength; i++) {\n var value = this.stack[i];\n\n if (Number.isInteger(value)) {\n this.output.push(28, value >> 8 & 0xff, value & 0xff);\n } else {\n value = 65536 * value | 0;\n this.output.push(255, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n }\n }\n\n this.output.push.apply(this.output, command);\n\n if (keepStack) {\n this.stack.splice(start, howManyArgs);\n } else {\n this.stack.length = 0;\n }\n\n return false;\n }\n\n };\n return Type1CharString;\n}();\n\nvar Type1Parser = function Type1ParserClosure() {\n var EEXEC_ENCRYPT_KEY = 55665;\n var CHAR_STRS_ENCRYPT_KEY = 4330;\n\n function isHexDigit(code) {\n return code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102;\n }\n\n function decrypt(data, key, discardNumber) {\n if (discardNumber >= data.length) {\n return new Uint8Array(0);\n }\n\n var r = key | 0,\n c1 = 52845,\n c2 = 22719,\n i,\n j;\n\n for (i = 0; i < discardNumber; i++) {\n r = (data[i] + r) * c1 + c2 & (1 << 16) - 1;\n }\n\n var count = data.length - discardNumber;\n var decrypted = new Uint8Array(count);\n\n for (i = discardNumber, j = 0; j < count; i++, j++) {\n var value = data[i];\n decrypted[j] = value ^ r >> 8;\n r = (value + r) * c1 + c2 & (1 << 16) - 1;\n }\n\n return decrypted;\n }\n\n function decryptAscii(data, key, discardNumber) {\n var r = key | 0,\n c1 = 52845,\n c2 = 22719;\n var count = data.length,\n maybeLength = count >>> 1;\n var decrypted = new Uint8Array(maybeLength);\n var i, j;\n\n for (i = 0, j = 0; i < count; i++) {\n var digit1 = data[i];\n\n if (!isHexDigit(digit1)) {\n continue;\n }\n\n i++;\n var digit2;\n\n while (i < count && !isHexDigit(digit2 = data[i])) {\n i++;\n }\n\n if (i < count) {\n var value = parseInt(String.fromCharCode(digit1, digit2), 16);\n decrypted[j++] = value ^ r >> 8;\n r = (value + r) * c1 + c2 & (1 << 16) - 1;\n }\n }\n\n return decrypted.slice(discardNumber, j);\n }\n\n function isSpecial(c) {\n return c === 0x2f || c === 0x5b || c === 0x5d || c === 0x7b || c === 0x7d || c === 0x28 || c === 0x29;\n }\n\n function Type1Parser(stream, encrypted, seacAnalysisEnabled) {\n if (encrypted) {\n var data = stream.getBytes();\n var isBinary = !((isHexDigit(data[0]) || (0, _core_utils.isWhiteSpace)(data[0])) && isHexDigit(data[1]) && isHexDigit(data[2]) && isHexDigit(data[3]) && isHexDigit(data[4]) && isHexDigit(data[5]) && isHexDigit(data[6]) && isHexDigit(data[7]));\n stream = new _stream.Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4));\n }\n\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n this.stream = stream;\n this.nextChar();\n }\n\n Type1Parser.prototype = {\n readNumberArray: function Type1Parser_readNumberArray() {\n this.getToken();\n var array = [];\n\n while (true) {\n var token = this.getToken();\n\n if (token === null || token === \"]\" || token === \"}\") {\n break;\n }\n\n array.push(parseFloat(token || 0));\n }\n\n return array;\n },\n readNumber: function Type1Parser_readNumber() {\n var token = this.getToken();\n return parseFloat(token || 0);\n },\n readInt: function Type1Parser_readInt() {\n var token = this.getToken();\n return parseInt(token || 0, 10) | 0;\n },\n readBoolean: function Type1Parser_readBoolean() {\n var token = this.getToken();\n return token === \"true\" ? 1 : 0;\n },\n nextChar: function Type1_nextChar() {\n return this.currentChar = this.stream.getByte();\n },\n getToken: function Type1Parser_getToken() {\n var comment = false;\n var ch = this.currentChar;\n\n while (true) {\n if (ch === -1) {\n return null;\n }\n\n if (comment) {\n if (ch === 0x0a || ch === 0x0d) {\n comment = false;\n }\n } else if (ch === 0x25) {\n comment = true;\n } else if (!(0, _core_utils.isWhiteSpace)(ch)) {\n break;\n }\n\n ch = this.nextChar();\n }\n\n if (isSpecial(ch)) {\n this.nextChar();\n return String.fromCharCode(ch);\n }\n\n var token = \"\";\n\n do {\n token += String.fromCharCode(ch);\n ch = this.nextChar();\n } while (ch >= 0 && !(0, _core_utils.isWhiteSpace)(ch) && !isSpecial(ch));\n\n return token;\n },\n readCharStrings: function Type1Parser_readCharStrings(bytes, lenIV) {\n if (lenIV === -1) {\n return bytes;\n }\n\n return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n },\n extractFontProgram: function Type1Parser_extractFontProgram(properties) {\n var stream = this.stream;\n var subrs = [],\n charstrings = [];\n var privateData = Object.create(null);\n privateData.lenIV = 4;\n var program = {\n subrs: [],\n charstrings: [],\n properties: {\n privateData\n }\n };\n var token, length, data, lenIV, encoded;\n\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n\n token = this.getToken();\n\n switch (token) {\n case \"CharStrings\":\n this.getToken();\n this.getToken();\n this.getToken();\n this.getToken();\n\n while (true) {\n token = this.getToken();\n\n if (token === null || token === \"end\") {\n break;\n }\n\n if (token !== \"/\") {\n continue;\n }\n\n var glyph = this.getToken();\n length = this.readInt();\n this.getToken();\n data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n lenIV = program.properties.privateData.lenIV;\n encoded = this.readCharStrings(data, lenIV);\n this.nextChar();\n token = this.getToken();\n\n if (token === \"noaccess\") {\n this.getToken();\n }\n\n charstrings.push({\n glyph,\n encoded\n });\n }\n\n break;\n\n case \"Subrs\":\n this.readInt();\n this.getToken();\n\n while (this.getToken() === \"dup\") {\n const index = this.readInt();\n length = this.readInt();\n this.getToken();\n data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n lenIV = program.properties.privateData.lenIV;\n encoded = this.readCharStrings(data, lenIV);\n this.nextChar();\n token = this.getToken();\n\n if (token === \"noaccess\") {\n this.getToken();\n }\n\n subrs[index] = encoded;\n }\n\n break;\n\n case \"BlueValues\":\n case \"OtherBlues\":\n case \"FamilyBlues\":\n case \"FamilyOtherBlues\":\n var blueArray = this.readNumberArray();\n\n if (blueArray.length > 0 && blueArray.length % 2 === 0 && HINTING_ENABLED) {\n program.properties.privateData[token] = blueArray;\n }\n\n break;\n\n case \"StemSnapH\":\n case \"StemSnapV\":\n program.properties.privateData[token] = this.readNumberArray();\n break;\n\n case \"StdHW\":\n case \"StdVW\":\n program.properties.privateData[token] = this.readNumberArray()[0];\n break;\n\n case \"BlueShift\":\n case \"lenIV\":\n case \"BlueFuzz\":\n case \"BlueScale\":\n case \"LanguageGroup\":\n case \"ExpansionFactor\":\n program.properties.privateData[token] = this.readNumber();\n break;\n\n case \"ForceBold\":\n program.properties.privateData[token] = this.readBoolean();\n break;\n }\n }\n\n for (var i = 0; i < charstrings.length; i++) {\n glyph = charstrings[i].glyph;\n encoded = charstrings[i].encoded;\n var charString = new Type1CharString();\n var error = charString.convert(encoded, subrs, this.seacAnalysisEnabled);\n var output = charString.output;\n\n if (error) {\n output = [14];\n }\n\n const charStringObject = {\n glyphName: glyph,\n charstring: output,\n width: charString.width,\n lsb: charString.lsb,\n seac: charString.seac\n };\n\n if (glyph === \".notdef\") {\n program.charstrings.unshift(charStringObject);\n } else {\n program.charstrings.push(charStringObject);\n }\n\n if (properties.builtInEncoding) {\n const index = properties.builtInEncoding.indexOf(glyph);\n\n if (index > -1 && properties.widths[index] === undefined && index >= properties.firstChar && index <= properties.lastChar) {\n properties.widths[index] = charString.width;\n }\n }\n }\n\n return program;\n },\n extractFontHeader: function Type1Parser_extractFontHeader(properties) {\n var token;\n\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n\n token = this.getToken();\n\n switch (token) {\n case \"FontMatrix\":\n var matrix = this.readNumberArray();\n properties.fontMatrix = matrix;\n break;\n\n case \"Encoding\":\n var encodingArg = this.getToken();\n var encoding;\n\n if (!/^\\d+$/.test(encodingArg)) {\n encoding = (0, _encodings.getEncoding)(encodingArg);\n } else {\n encoding = [];\n var size = parseInt(encodingArg, 10) | 0;\n this.getToken();\n\n for (var j = 0; j < size; j++) {\n token = this.getToken();\n\n while (token !== \"dup\" && token !== \"def\") {\n token = this.getToken();\n\n if (token === null) {\n return;\n }\n }\n\n if (token === \"def\") {\n break;\n }\n\n var index = this.readInt();\n this.getToken();\n var glyph = this.getToken();\n encoding[index] = glyph;\n this.getToken();\n }\n }\n\n properties.builtInEncoding = encoding;\n break;\n\n case \"FontBBox\":\n var fontBBox = this.readNumberArray();\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n break;\n }\n }\n }\n };\n return Type1Parser;\n}();\n\nexports.Type1Parser = Type1Parser;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getTilingPatternIR = getTilingPatternIR;\nexports.Pattern = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _colorspace = __w_pdfjs_require__(23);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar ShadingType = {\n FUNCTION_BASED: 1,\n AXIAL: 2,\n RADIAL: 3,\n FREE_FORM_MESH: 4,\n LATTICE_FORM_MESH: 5,\n COONS_PATCH_MESH: 6,\n TENSOR_PATCH_MESH: 7\n};\n\nvar Pattern = function PatternClosure() {\n function Pattern() {\n (0, _util.unreachable)(\"should not call Pattern constructor\");\n }\n\n Pattern.prototype = {\n getPattern: function Pattern_getPattern(ctx) {\n (0, _util.unreachable)(`Should not call Pattern.getStyle: ${ctx}`);\n }\n };\n\n Pattern.parseShading = function (shading, matrix, xref, res, handler, pdfFunctionFactory, localColorSpaceCache) {\n var dict = (0, _primitives.isStream)(shading) ? shading.dict : shading;\n var type = dict.get(\"ShadingType\");\n\n try {\n switch (type) {\n case ShadingType.AXIAL:\n case ShadingType.RADIAL:\n return new Shadings.RadialAxial(dict, matrix, xref, res, pdfFunctionFactory, localColorSpaceCache);\n\n case ShadingType.FREE_FORM_MESH:\n case ShadingType.LATTICE_FORM_MESH:\n case ShadingType.COONS_PATCH_MESH:\n case ShadingType.TENSOR_PATCH_MESH:\n return new Shadings.Mesh(shading, matrix, xref, res, pdfFunctionFactory, localColorSpaceCache);\n\n default:\n throw new _util.FormatError(\"Unsupported ShadingType: \" + type);\n }\n } catch (ex) {\n if (ex instanceof _core_utils.MissingDataException) {\n throw ex;\n }\n\n handler.send(\"UnsupportedFeature\", {\n featureId: _util.UNSUPPORTED_FEATURES.shadingPattern\n });\n (0, _util.warn)(ex);\n return new Shadings.Dummy();\n }\n };\n\n return Pattern;\n}();\n\nexports.Pattern = Pattern;\nvar Shadings = {};\nShadings.SMALL_NUMBER = 1e-6;\n\nShadings.RadialAxial = function RadialAxialClosure() {\n function RadialAxial(dict, matrix, xref, resources, pdfFunctionFactory, localColorSpaceCache) {\n this.matrix = matrix;\n this.coordsArr = dict.getArray(\"Coords\");\n this.shadingType = dict.get(\"ShadingType\");\n this.type = \"Pattern\";\n\n const cs = _colorspace.ColorSpace.parse({\n cs: dict.getRaw(\"ColorSpace\") || dict.getRaw(\"CS\"),\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache\n });\n\n this.cs = cs;\n const bbox = dict.getArray(\"BBox\");\n\n if (Array.isArray(bbox) && bbox.length === 4) {\n this.bbox = _util.Util.normalizeRect(bbox);\n } else {\n this.bbox = null;\n }\n\n var t0 = 0.0,\n t1 = 1.0;\n\n if (dict.has(\"Domain\")) {\n var domainArr = dict.getArray(\"Domain\");\n t0 = domainArr[0];\n t1 = domainArr[1];\n }\n\n var extendStart = false,\n extendEnd = false;\n\n if (dict.has(\"Extend\")) {\n var extendArr = dict.getArray(\"Extend\");\n extendStart = extendArr[0];\n extendEnd = extendArr[1];\n }\n\n if (this.shadingType === ShadingType.RADIAL && (!extendStart || !extendEnd)) {\n var x1 = this.coordsArr[0];\n var y1 = this.coordsArr[1];\n var r1 = this.coordsArr[2];\n var x2 = this.coordsArr[3];\n var y2 = this.coordsArr[4];\n var r2 = this.coordsArr[5];\n var distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));\n\n if (r1 <= r2 + distance && r2 <= r1 + distance) {\n (0, _util.warn)(\"Unsupported radial gradient.\");\n }\n }\n\n this.extendStart = extendStart;\n this.extendEnd = extendEnd;\n var fnObj = dict.getRaw(\"Function\");\n var fn = pdfFunctionFactory.createFromArray(fnObj);\n const NUMBER_OF_SAMPLES = 10;\n const step = (t1 - t0) / NUMBER_OF_SAMPLES;\n var colorStops = this.colorStops = [];\n\n if (t0 >= t1 || step <= 0) {\n (0, _util.info)(\"Bad shading domain.\");\n return;\n }\n\n var color = new Float32Array(cs.numComps),\n ratio = new Float32Array(1);\n var rgbColor;\n\n for (let i = 0; i <= NUMBER_OF_SAMPLES; i++) {\n ratio[0] = t0 + i * step;\n fn(ratio, 0, color, 0);\n rgbColor = cs.getRgb(color, 0);\n\n var cssColor = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);\n\n colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]);\n }\n\n var background = \"transparent\";\n\n if (dict.has(\"Background\")) {\n rgbColor = cs.getRgb(dict.get(\"Background\"), 0);\n background = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);\n }\n\n if (!extendStart) {\n colorStops.unshift([0, background]);\n colorStops[1][0] += Shadings.SMALL_NUMBER;\n }\n\n if (!extendEnd) {\n colorStops[colorStops.length - 1][0] -= Shadings.SMALL_NUMBER;\n colorStops.push([1, background]);\n }\n\n this.colorStops = colorStops;\n }\n\n RadialAxial.prototype = {\n getIR: function RadialAxial_getIR() {\n var coordsArr = this.coordsArr;\n var shadingType = this.shadingType;\n var type, p0, p1, r0, r1;\n\n if (shadingType === ShadingType.AXIAL) {\n p0 = [coordsArr[0], coordsArr[1]];\n p1 = [coordsArr[2], coordsArr[3]];\n r0 = null;\n r1 = null;\n type = \"axial\";\n } else if (shadingType === ShadingType.RADIAL) {\n p0 = [coordsArr[0], coordsArr[1]];\n p1 = [coordsArr[3], coordsArr[4]];\n r0 = coordsArr[2];\n r1 = coordsArr[5];\n type = \"radial\";\n } else {\n (0, _util.unreachable)(`getPattern type unknown: ${shadingType}`);\n }\n\n var matrix = this.matrix;\n\n if (matrix) {\n p0 = _util.Util.applyTransform(p0, matrix);\n p1 = _util.Util.applyTransform(p1, matrix);\n\n if (shadingType === ShadingType.RADIAL) {\n var scale = _util.Util.singularValueDecompose2dScale(matrix);\n\n r0 *= scale[0];\n r1 *= scale[1];\n }\n }\n\n return [\"RadialAxial\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\n }\n };\n return RadialAxial;\n}();\n\nShadings.Mesh = function MeshClosure() {\n function MeshStreamReader(stream, context) {\n this.stream = stream;\n this.context = context;\n this.buffer = 0;\n this.bufferLength = 0;\n var numComps = context.numComps;\n this.tmpCompsBuf = new Float32Array(numComps);\n var csNumComps = context.colorSpace.numComps;\n this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) : this.tmpCompsBuf;\n }\n\n MeshStreamReader.prototype = {\n get hasData() {\n if (this.stream.end) {\n return this.stream.pos < this.stream.end;\n }\n\n if (this.bufferLength > 0) {\n return true;\n }\n\n var nextByte = this.stream.getByte();\n\n if (nextByte < 0) {\n return false;\n }\n\n this.buffer = nextByte;\n this.bufferLength = 8;\n return true;\n },\n\n readBits: function MeshStreamReader_readBits(n) {\n var buffer = this.buffer;\n var bufferLength = this.bufferLength;\n\n if (n === 32) {\n if (bufferLength === 0) {\n return (this.stream.getByte() << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte()) >>> 0;\n }\n\n buffer = buffer << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte();\n var nextByte = this.stream.getByte();\n this.buffer = nextByte & (1 << bufferLength) - 1;\n return (buffer << 8 - bufferLength | (nextByte & 0xff) >> bufferLength) >>> 0;\n }\n\n if (n === 8 && bufferLength === 0) {\n return this.stream.getByte();\n }\n\n while (bufferLength < n) {\n buffer = buffer << 8 | this.stream.getByte();\n bufferLength += 8;\n }\n\n bufferLength -= n;\n this.bufferLength = bufferLength;\n this.buffer = buffer & (1 << bufferLength) - 1;\n return buffer >> bufferLength;\n },\n align: function MeshStreamReader_align() {\n this.buffer = 0;\n this.bufferLength = 0;\n },\n readFlag: function MeshStreamReader_readFlag() {\n return this.readBits(this.context.bitsPerFlag);\n },\n readCoordinate: function MeshStreamReader_readCoordinate() {\n var bitsPerCoordinate = this.context.bitsPerCoordinate;\n var xi = this.readBits(bitsPerCoordinate);\n var yi = this.readBits(bitsPerCoordinate);\n var decode = this.context.decode;\n var scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) : 2.3283064365386963e-10;\n return [xi * scale * (decode[1] - decode[0]) + decode[0], yi * scale * (decode[3] - decode[2]) + decode[2]];\n },\n readComponents: function MeshStreamReader_readComponents() {\n var numComps = this.context.numComps;\n var bitsPerComponent = this.context.bitsPerComponent;\n var scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : 2.3283064365386963e-10;\n var decode = this.context.decode;\n var components = this.tmpCompsBuf;\n\n for (var i = 0, j = 4; i < numComps; i++, j += 2) {\n var ci = this.readBits(bitsPerComponent);\n components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n }\n\n var color = this.tmpCsCompsBuf;\n\n if (this.context.colorFn) {\n this.context.colorFn(components, 0, color, 0);\n }\n\n return this.context.colorSpace.getRgb(color, 0);\n }\n };\n\n function decodeType4Shading(mesh, reader) {\n var coords = mesh.coords;\n var colors = mesh.colors;\n var operators = [];\n var ps = [];\n var verticesLeft = 0;\n\n while (reader.hasData) {\n var f = reader.readFlag();\n var coord = reader.readCoordinate();\n var color = reader.readComponents();\n\n if (verticesLeft === 0) {\n if (!(0 <= f && f <= 2)) {\n throw new _util.FormatError(\"Unknown type4 flag\");\n }\n\n switch (f) {\n case 0:\n verticesLeft = 3;\n break;\n\n case 1:\n ps.push(ps[ps.length - 2], ps[ps.length - 1]);\n verticesLeft = 1;\n break;\n\n case 2:\n ps.push(ps[ps.length - 3], ps[ps.length - 1]);\n verticesLeft = 1;\n break;\n }\n\n operators.push(f);\n }\n\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n verticesLeft--;\n reader.align();\n }\n\n mesh.figures.push({\n type: \"triangles\",\n coords: new Int32Array(ps),\n colors: new Int32Array(ps)\n });\n }\n\n function decodeType5Shading(mesh, reader, verticesPerRow) {\n var coords = mesh.coords;\n var colors = mesh.colors;\n var ps = [];\n\n while (reader.hasData) {\n var coord = reader.readCoordinate();\n var color = reader.readComponents();\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n }\n\n mesh.figures.push({\n type: \"lattice\",\n coords: new Int32Array(ps),\n colors: new Int32Array(ps),\n verticesPerRow\n });\n }\n\n var MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;\n var MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;\n var TRIANGLE_DENSITY = 20;\n\n var getB = function getBClosure() {\n function buildB(count) {\n var lut = [];\n\n for (var i = 0; i <= count; i++) {\n var t = i / count,\n t_ = 1 - t;\n lut.push(new Float32Array([t_ * t_ * t_, 3 * t * t_ * t_, 3 * t * t * t_, t * t * t]));\n }\n\n return lut;\n }\n\n var cache = [];\n return function getB(count) {\n if (!cache[count]) {\n cache[count] = buildB(count);\n }\n\n return cache[count];\n };\n }();\n\n function buildFigureFromPatch(mesh, index) {\n var figure = mesh.figures[index];\n (0, _util.assert)(figure.type === \"patch\", \"Unexpected patch mesh figure\");\n var coords = mesh.coords,\n colors = mesh.colors;\n var pi = figure.coords;\n var ci = figure.colors;\n var figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);\n var figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);\n var figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);\n var figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);\n var splitXBy = Math.ceil((figureMaxX - figureMinX) * TRIANGLE_DENSITY / (mesh.bounds[2] - mesh.bounds[0]));\n splitXBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy));\n var splitYBy = Math.ceil((figureMaxY - figureMinY) * TRIANGLE_DENSITY / (mesh.bounds[3] - mesh.bounds[1]));\n splitYBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy));\n var verticesPerRow = splitXBy + 1;\n var figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n var figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n var k = 0;\n var cl = new Uint8Array(3),\n cr = new Uint8Array(3);\n var c0 = colors[ci[0]],\n c1 = colors[ci[1]],\n c2 = colors[ci[2]],\n c3 = colors[ci[3]];\n var bRow = getB(splitYBy),\n bCol = getB(splitXBy);\n\n for (var row = 0; row <= splitYBy; row++) {\n cl[0] = (c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy | 0;\n cl[1] = (c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy | 0;\n cl[2] = (c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy | 0;\n cr[0] = (c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy | 0;\n cr[1] = (c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy | 0;\n cr[2] = (c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy | 0;\n\n for (var col = 0; col <= splitXBy; col++, k++) {\n if ((row === 0 || row === splitYBy) && (col === 0 || col === splitXBy)) {\n continue;\n }\n\n var x = 0,\n y = 0;\n var q = 0;\n\n for (var i = 0; i <= 3; i++) {\n for (var j = 0; j <= 3; j++, q++) {\n var m = bRow[row][i] * bCol[col][j];\n x += coords[pi[q]][0] * m;\n y += coords[pi[q]][1] * m;\n }\n }\n\n figureCoords[k] = coords.length;\n coords.push([x, y]);\n figureColors[k] = colors.length;\n var newColor = new Uint8Array(3);\n newColor[0] = (cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy | 0;\n newColor[1] = (cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy | 0;\n newColor[2] = (cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy | 0;\n colors.push(newColor);\n }\n }\n\n figureCoords[0] = pi[0];\n figureColors[0] = ci[0];\n figureCoords[splitXBy] = pi[3];\n figureColors[splitXBy] = ci[1];\n figureCoords[verticesPerRow * splitYBy] = pi[12];\n figureColors[verticesPerRow * splitYBy] = ci[2];\n figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\n figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\n mesh.figures[index] = {\n type: \"lattice\",\n coords: figureCoords,\n colors: figureColors,\n verticesPerRow\n };\n }\n\n function decodeType6Shading(mesh, reader) {\n var coords = mesh.coords;\n var colors = mesh.colors;\n var ps = new Int32Array(16);\n var cs = new Int32Array(4);\n\n while (reader.hasData) {\n var f = reader.readFlag();\n\n if (!(0 <= f && f <= 3)) {\n throw new _util.FormatError(\"Unknown type6 flag\");\n }\n\n var i, ii;\n var pi = coords.length;\n\n for (i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n\n var ci = colors.length;\n\n for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n\n var tmp1, tmp2, tmp3, tmp4;\n\n switch (f) {\n case 0:\n ps[12] = pi + 3;\n ps[13] = pi + 4;\n ps[14] = pi + 5;\n ps[15] = pi + 6;\n ps[8] = pi + 2;\n ps[11] = pi + 7;\n ps[4] = pi + 1;\n ps[7] = pi + 8;\n ps[0] = pi;\n ps[1] = pi + 11;\n ps[2] = pi + 10;\n ps[3] = pi + 9;\n cs[2] = ci + 1;\n cs[3] = ci + 2;\n cs[0] = ci;\n cs[1] = ci + 3;\n break;\n\n case 1:\n tmp1 = ps[12];\n tmp2 = ps[13];\n tmp3 = ps[14];\n tmp4 = ps[15];\n ps[12] = tmp4;\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = tmp3;\n ps[11] = pi + 3;\n ps[4] = tmp2;\n ps[7] = pi + 4;\n ps[0] = tmp1;\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n tmp1 = cs[2];\n tmp2 = cs[3];\n cs[2] = tmp2;\n cs[3] = ci;\n cs[0] = tmp1;\n cs[1] = ci + 1;\n break;\n\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3];\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = ps[7];\n ps[11] = pi + 3;\n ps[4] = tmp2;\n ps[7] = pi + 4;\n ps[0] = tmp1;\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1];\n cs[3] = ci;\n cs[0] = tmp1;\n cs[1] = ci + 1;\n break;\n\n case 3:\n ps[12] = ps[0];\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = ps[1];\n ps[11] = pi + 3;\n ps[4] = ps[2];\n ps[7] = pi + 4;\n ps[0] = ps[3];\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n cs[2] = cs[0];\n cs[3] = ci;\n cs[0] = cs[1];\n cs[1] = ci + 1;\n break;\n }\n\n ps[5] = coords.length;\n coords.push([(-4 * coords[ps[0]][0] - coords[ps[15]][0] + 6 * (coords[ps[4]][0] + coords[ps[1]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9, (-4 * coords[ps[0]][1] - coords[ps[15]][1] + 6 * (coords[ps[4]][1] + coords[ps[1]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9]);\n ps[6] = coords.length;\n coords.push([(-4 * coords[ps[3]][0] - coords[ps[12]][0] + 6 * (coords[ps[2]][0] + coords[ps[7]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[4]][0] + coords[ps[14]][0])) / 9, (-4 * coords[ps[3]][1] - coords[ps[12]][1] + 6 * (coords[ps[2]][1] + coords[ps[7]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[4]][1] + coords[ps[14]][1])) / 9]);\n ps[9] = coords.length;\n coords.push([(-4 * coords[ps[12]][0] - coords[ps[3]][0] + 6 * (coords[ps[8]][0] + coords[ps[13]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9, (-4 * coords[ps[12]][1] - coords[ps[3]][1] + 6 * (coords[ps[8]][1] + coords[ps[13]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9]);\n ps[10] = coords.length;\n coords.push([(-4 * coords[ps[15]][0] - coords[ps[0]][0] + 6 * (coords[ps[11]][0] + coords[ps[14]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9, (-4 * coords[ps[15]][1] - coords[ps[0]][1] + 6 * (coords[ps[11]][1] + coords[ps[14]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9]);\n mesh.figures.push({\n type: \"patch\",\n coords: new Int32Array(ps),\n colors: new Int32Array(cs)\n });\n }\n }\n\n function decodeType7Shading(mesh, reader) {\n var coords = mesh.coords;\n var colors = mesh.colors;\n var ps = new Int32Array(16);\n var cs = new Int32Array(4);\n\n while (reader.hasData) {\n var f = reader.readFlag();\n\n if (!(0 <= f && f <= 3)) {\n throw new _util.FormatError(\"Unknown type7 flag\");\n }\n\n var i, ii;\n var pi = coords.length;\n\n for (i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n\n var ci = colors.length;\n\n for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n\n var tmp1, tmp2, tmp3, tmp4;\n\n switch (f) {\n case 0:\n ps[12] = pi + 3;\n ps[13] = pi + 4;\n ps[14] = pi + 5;\n ps[15] = pi + 6;\n ps[8] = pi + 2;\n ps[9] = pi + 13;\n ps[10] = pi + 14;\n ps[11] = pi + 7;\n ps[4] = pi + 1;\n ps[5] = pi + 12;\n ps[6] = pi + 15;\n ps[7] = pi + 8;\n ps[0] = pi;\n ps[1] = pi + 11;\n ps[2] = pi + 10;\n ps[3] = pi + 9;\n cs[2] = ci + 1;\n cs[3] = ci + 2;\n cs[0] = ci;\n cs[1] = ci + 3;\n break;\n\n case 1:\n tmp1 = ps[12];\n tmp2 = ps[13];\n tmp3 = ps[14];\n tmp4 = ps[15];\n ps[12] = tmp4;\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = tmp3;\n ps[9] = pi + 9;\n ps[10] = pi + 10;\n ps[11] = pi + 3;\n ps[4] = tmp2;\n ps[5] = pi + 8;\n ps[6] = pi + 11;\n ps[7] = pi + 4;\n ps[0] = tmp1;\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n tmp1 = cs[2];\n tmp2 = cs[3];\n cs[2] = tmp2;\n cs[3] = ci;\n cs[0] = tmp1;\n cs[1] = ci + 1;\n break;\n\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3];\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = ps[7];\n ps[9] = pi + 9;\n ps[10] = pi + 10;\n ps[11] = pi + 3;\n ps[4] = tmp2;\n ps[5] = pi + 8;\n ps[6] = pi + 11;\n ps[7] = pi + 4;\n ps[0] = tmp1;\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1];\n cs[3] = ci;\n cs[0] = tmp1;\n cs[1] = ci + 1;\n break;\n\n case 3:\n ps[12] = ps[0];\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = ps[1];\n ps[9] = pi + 9;\n ps[10] = pi + 10;\n ps[11] = pi + 3;\n ps[4] = ps[2];\n ps[5] = pi + 8;\n ps[6] = pi + 11;\n ps[7] = pi + 4;\n ps[0] = ps[3];\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n cs[2] = cs[0];\n cs[3] = ci;\n cs[0] = cs[1];\n cs[1] = ci + 1;\n break;\n }\n\n mesh.figures.push({\n type: \"patch\",\n coords: new Int32Array(ps),\n colors: new Int32Array(cs)\n });\n }\n }\n\n function updateBounds(mesh) {\n var minX = mesh.coords[0][0],\n minY = mesh.coords[0][1],\n maxX = minX,\n maxY = minY;\n\n for (var i = 1, ii = mesh.coords.length; i < ii; i++) {\n var x = mesh.coords[i][0],\n y = mesh.coords[i][1];\n minX = minX > x ? x : minX;\n minY = minY > y ? y : minY;\n maxX = maxX < x ? x : maxX;\n maxY = maxY < y ? y : maxY;\n }\n\n mesh.bounds = [minX, minY, maxX, maxY];\n }\n\n function packData(mesh) {\n var i, ii, j, jj;\n var coords = mesh.coords;\n var coordsPacked = new Float32Array(coords.length * 2);\n\n for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n var xy = coords[i];\n coordsPacked[j++] = xy[0];\n coordsPacked[j++] = xy[1];\n }\n\n mesh.coords = coordsPacked;\n var colors = mesh.colors;\n var colorsPacked = new Uint8Array(colors.length * 3);\n\n for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n var c = colors[i];\n colorsPacked[j++] = c[0];\n colorsPacked[j++] = c[1];\n colorsPacked[j++] = c[2];\n }\n\n mesh.colors = colorsPacked;\n var figures = mesh.figures;\n\n for (i = 0, ii = figures.length; i < ii; i++) {\n var figure = figures[i],\n ps = figure.coords,\n cs = figure.colors;\n\n for (j = 0, jj = ps.length; j < jj; j++) {\n ps[j] *= 2;\n cs[j] *= 3;\n }\n }\n }\n\n function Mesh(stream, matrix, xref, resources, pdfFunctionFactory, localColorSpaceCache) {\n if (!(0, _primitives.isStream)(stream)) {\n throw new _util.FormatError(\"Mesh data is not a stream\");\n }\n\n var dict = stream.dict;\n this.matrix = matrix;\n this.shadingType = dict.get(\"ShadingType\");\n this.type = \"Pattern\";\n const bbox = dict.getArray(\"BBox\");\n\n if (Array.isArray(bbox) && bbox.length === 4) {\n this.bbox = _util.Util.normalizeRect(bbox);\n } else {\n this.bbox = null;\n }\n\n const cs = _colorspace.ColorSpace.parse({\n cs: dict.getRaw(\"ColorSpace\") || dict.getRaw(\"CS\"),\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache\n });\n\n this.cs = cs;\n this.background = dict.has(\"Background\") ? cs.getRgb(dict.get(\"Background\"), 0) : null;\n var fnObj = dict.getRaw(\"Function\");\n var fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n this.coords = [];\n this.colors = [];\n this.figures = [];\n var decodeContext = {\n bitsPerCoordinate: dict.get(\"BitsPerCoordinate\"),\n bitsPerComponent: dict.get(\"BitsPerComponent\"),\n bitsPerFlag: dict.get(\"BitsPerFlag\"),\n decode: dict.getArray(\"Decode\"),\n colorFn: fn,\n colorSpace: cs,\n numComps: fn ? 1 : cs.numComps\n };\n var reader = new MeshStreamReader(stream, decodeContext);\n var patchMesh = false;\n\n switch (this.shadingType) {\n case ShadingType.FREE_FORM_MESH:\n decodeType4Shading(this, reader);\n break;\n\n case ShadingType.LATTICE_FORM_MESH:\n var verticesPerRow = dict.get(\"VerticesPerRow\") | 0;\n\n if (verticesPerRow < 2) {\n throw new _util.FormatError(\"Invalid VerticesPerRow\");\n }\n\n decodeType5Shading(this, reader, verticesPerRow);\n break;\n\n case ShadingType.COONS_PATCH_MESH:\n decodeType6Shading(this, reader);\n patchMesh = true;\n break;\n\n case ShadingType.TENSOR_PATCH_MESH:\n decodeType7Shading(this, reader);\n patchMesh = true;\n break;\n\n default:\n (0, _util.unreachable)(\"Unsupported mesh type.\");\n break;\n }\n\n if (patchMesh) {\n updateBounds(this);\n\n for (var i = 0, ii = this.figures.length; i < ii; i++) {\n buildFigureFromPatch(this, i);\n }\n }\n\n updateBounds(this);\n packData(this);\n }\n\n Mesh.prototype = {\n getIR: function Mesh_getIR() {\n return [\"Mesh\", this.shadingType, this.coords, this.colors, this.figures, this.bounds, this.matrix, this.bbox, this.background];\n }\n };\n return Mesh;\n}();\n\nShadings.Dummy = function DummyClosure() {\n function Dummy() {\n this.type = \"Pattern\";\n }\n\n Dummy.prototype = {\n getIR: function Dummy_getIR() {\n return [\"Dummy\"];\n }\n };\n return Dummy;\n}();\n\nfunction getTilingPatternIR(operatorList, dict, args) {\n const matrix = dict.getArray(\"Matrix\");\n\n const bbox = _util.Util.normalizeRect(dict.getArray(\"BBox\"));\n\n const xstep = dict.get(\"XStep\");\n const ystep = dict.get(\"YStep\");\n const paintType = dict.get(\"PaintType\");\n const tilingType = dict.get(\"TilingType\");\n\n if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\n throw new _util.FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`);\n }\n\n return [\"TilingPattern\", args, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType];\n}\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isPDFFunction = isPDFFunction;\nexports.PostScriptCompiler = exports.PostScriptEvaluator = exports.PDFFunctionFactory = void 0;\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _ps_parser = __w_pdfjs_require__(41);\n\nvar _image_utils = __w_pdfjs_require__(24);\n\nclass PDFFunctionFactory {\n constructor({\n xref,\n isEvalSupported = true\n }) {\n this.xref = xref;\n this.isEvalSupported = isEvalSupported !== false;\n this._localFunctionCache = null;\n }\n\n create(fn) {\n const cachedFunction = this.getCached(fn);\n\n if (cachedFunction) {\n return cachedFunction;\n }\n\n const parsedFunction = PDFFunction.parse({\n xref: this.xref,\n isEvalSupported: this.isEvalSupported,\n fn: fn instanceof _primitives.Ref ? this.xref.fetch(fn) : fn\n });\n\n this._cache(fn, parsedFunction);\n\n return parsedFunction;\n }\n\n createFromArray(fnObj) {\n const cachedFunction = this.getCached(fnObj);\n\n if (cachedFunction) {\n return cachedFunction;\n }\n\n const parsedFunction = PDFFunction.parseArray({\n xref: this.xref,\n isEvalSupported: this.isEvalSupported,\n fnObj: fnObj instanceof _primitives.Ref ? this.xref.fetch(fnObj) : fnObj\n });\n\n this._cache(fnObj, parsedFunction);\n\n return parsedFunction;\n }\n\n getCached(cacheKey) {\n let fnRef;\n\n if (cacheKey instanceof _primitives.Ref) {\n fnRef = cacheKey;\n } else if (cacheKey instanceof _primitives.Dict) {\n fnRef = cacheKey.objId;\n } else if ((0, _primitives.isStream)(cacheKey)) {\n fnRef = cacheKey.dict && cacheKey.dict.objId;\n }\n\n if (fnRef) {\n if (!this._localFunctionCache) {\n this._localFunctionCache = new _image_utils.LocalFunctionCache();\n }\n\n const localFunction = this._localFunctionCache.getByRef(fnRef);\n\n if (localFunction) {\n return localFunction;\n }\n }\n\n return null;\n }\n\n _cache(cacheKey, parsedFunction) {\n if (!parsedFunction) {\n throw new Error('PDFFunctionFactory._cache - expected \"parsedFunction\" argument.');\n }\n\n let fnRef;\n\n if (cacheKey instanceof _primitives.Ref) {\n fnRef = cacheKey;\n } else if (cacheKey instanceof _primitives.Dict) {\n fnRef = cacheKey.objId;\n } else if ((0, _primitives.isStream)(cacheKey)) {\n fnRef = cacheKey.dict && cacheKey.dict.objId;\n }\n\n if (fnRef) {\n if (!this._localFunctionCache) {\n this._localFunctionCache = new _image_utils.LocalFunctionCache();\n }\n\n this._localFunctionCache.set(null, fnRef, parsedFunction);\n }\n }\n\n}\n\nexports.PDFFunctionFactory = PDFFunctionFactory;\n\nfunction toNumberArray(arr) {\n if (!Array.isArray(arr)) {\n return null;\n }\n\n const length = arr.length;\n\n for (let i = 0; i < length; i++) {\n if (typeof arr[i] !== \"number\") {\n const result = new Array(length);\n\n for (let j = 0; j < length; j++) {\n result[j] = +arr[j];\n }\n\n return result;\n }\n }\n\n return arr;\n}\n\nvar PDFFunction = function PDFFunctionClosure() {\n const CONSTRUCT_SAMPLED = 0;\n const CONSTRUCT_INTERPOLATED = 2;\n const CONSTRUCT_STICHED = 3;\n const CONSTRUCT_POSTSCRIPT = 4;\n return {\n getSampleArray(size, outputSize, bps, stream) {\n var i, ii;\n var length = 1;\n\n for (i = 0, ii = size.length; i < ii; i++) {\n length *= size[i];\n }\n\n length *= outputSize;\n var array = new Array(length);\n var codeSize = 0;\n var codeBuf = 0;\n var sampleMul = 1.0 / (2.0 ** bps - 1);\n var strBytes = stream.getBytes((length * bps + 7) / 8);\n var strIdx = 0;\n\n for (i = 0; i < length; i++) {\n while (codeSize < bps) {\n codeBuf <<= 8;\n codeBuf |= strBytes[strIdx++];\n codeSize += 8;\n }\n\n codeSize -= bps;\n array[i] = (codeBuf >> codeSize) * sampleMul;\n codeBuf &= (1 << codeSize) - 1;\n }\n\n return array;\n },\n\n getIR({\n xref,\n isEvalSupported,\n fn\n }) {\n var dict = fn.dict;\n\n if (!dict) {\n dict = fn;\n }\n\n var types = [this.constructSampled, null, this.constructInterpolated, this.constructStiched, this.constructPostScript];\n var typeNum = dict.get(\"FunctionType\");\n var typeFn = types[typeNum];\n\n if (!typeFn) {\n throw new _util.FormatError(\"Unknown type of function\");\n }\n\n return typeFn.call(this, {\n xref,\n isEvalSupported,\n fn,\n dict\n });\n },\n\n fromIR({\n xref,\n isEvalSupported,\n IR\n }) {\n var type = IR[0];\n\n switch (type) {\n case CONSTRUCT_SAMPLED:\n return this.constructSampledFromIR({\n xref,\n isEvalSupported,\n IR\n });\n\n case CONSTRUCT_INTERPOLATED:\n return this.constructInterpolatedFromIR({\n xref,\n isEvalSupported,\n IR\n });\n\n case CONSTRUCT_STICHED:\n return this.constructStichedFromIR({\n xref,\n isEvalSupported,\n IR\n });\n\n default:\n return this.constructPostScriptFromIR({\n xref,\n isEvalSupported,\n IR\n });\n }\n },\n\n parse({\n xref,\n isEvalSupported,\n fn\n }) {\n const IR = this.getIR({\n xref,\n isEvalSupported,\n fn\n });\n return this.fromIR({\n xref,\n isEvalSupported,\n IR\n });\n },\n\n parseArray({\n xref,\n isEvalSupported,\n fnObj\n }) {\n if (!Array.isArray(fnObj)) {\n return this.parse({\n xref,\n isEvalSupported,\n fn: fnObj\n });\n }\n\n var fnArray = [];\n\n for (var j = 0, jj = fnObj.length; j < jj; j++) {\n fnArray.push(this.parse({\n xref,\n isEvalSupported,\n fn: xref.fetchIfRef(fnObj[j])\n }));\n }\n\n return function (src, srcOffset, dest, destOffset) {\n for (var i = 0, ii = fnArray.length; i < ii; i++) {\n fnArray[i](src, srcOffset, dest, destOffset + i);\n }\n };\n },\n\n constructSampled({\n xref,\n isEvalSupported,\n fn,\n dict\n }) {\n function toMultiArray(arr) {\n var inputLength = arr.length;\n var out = [];\n var index = 0;\n\n for (var i = 0; i < inputLength; i += 2) {\n out[index] = [arr[i], arr[i + 1]];\n ++index;\n }\n\n return out;\n }\n\n var domain = toNumberArray(dict.getArray(\"Domain\"));\n var range = toNumberArray(dict.getArray(\"Range\"));\n\n if (!domain || !range) {\n throw new _util.FormatError(\"No domain or range\");\n }\n\n var inputSize = domain.length / 2;\n var outputSize = range.length / 2;\n domain = toMultiArray(domain);\n range = toMultiArray(range);\n var size = toNumberArray(dict.getArray(\"Size\"));\n var bps = dict.get(\"BitsPerSample\");\n var order = dict.get(\"Order\") || 1;\n\n if (order !== 1) {\n (0, _util.info)(\"No support for cubic spline interpolation: \" + order);\n }\n\n var encode = toNumberArray(dict.getArray(\"Encode\"));\n\n if (!encode) {\n encode = [];\n\n for (var i = 0; i < inputSize; ++i) {\n encode.push([0, size[i] - 1]);\n }\n } else {\n encode = toMultiArray(encode);\n }\n\n var decode = toNumberArray(dict.getArray(\"Decode\"));\n\n if (!decode) {\n decode = range;\n } else {\n decode = toMultiArray(decode);\n }\n\n var samples = this.getSampleArray(size, outputSize, bps, fn);\n return [CONSTRUCT_SAMPLED, inputSize, domain, encode, decode, samples, size, outputSize, 2 ** bps - 1, range];\n },\n\n constructSampledFromIR({\n xref,\n isEvalSupported,\n IR\n }) {\n function interpolate(x, xmin, xmax, ymin, ymax) {\n return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));\n }\n\n return function constructSampledFromIRResult(src, srcOffset, dest, destOffset) {\n var m = IR[1];\n var domain = IR[2];\n var encode = IR[3];\n var decode = IR[4];\n var samples = IR[5];\n var size = IR[6];\n var n = IR[7];\n var range = IR[9];\n var cubeVertices = 1 << m;\n var cubeN = new Float64Array(cubeVertices);\n var cubeVertex = new Uint32Array(cubeVertices);\n var i, j;\n\n for (j = 0; j < cubeVertices; j++) {\n cubeN[j] = 1;\n }\n\n var k = n,\n pos = 1;\n\n for (i = 0; i < m; ++i) {\n var domain_2i = domain[i][0];\n var domain_2i_1 = domain[i][1];\n var xi = Math.min(Math.max(src[srcOffset + i], domain_2i), domain_2i_1);\n var e = interpolate(xi, domain_2i, domain_2i_1, encode[i][0], encode[i][1]);\n var size_i = size[i];\n e = Math.min(Math.max(e, 0), size_i - 1);\n var e0 = e < size_i - 1 ? Math.floor(e) : e - 1;\n var n0 = e0 + 1 - e;\n var n1 = e - e0;\n var offset0 = e0 * k;\n var offset1 = offset0 + k;\n\n for (j = 0; j < cubeVertices; j++) {\n if (j & pos) {\n cubeN[j] *= n1;\n cubeVertex[j] += offset1;\n } else {\n cubeN[j] *= n0;\n cubeVertex[j] += offset0;\n }\n }\n\n k *= size_i;\n pos <<= 1;\n }\n\n for (j = 0; j < n; ++j) {\n var rj = 0;\n\n for (i = 0; i < cubeVertices; i++) {\n rj += samples[cubeVertex[i] + j] * cubeN[i];\n }\n\n rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);\n }\n };\n },\n\n constructInterpolated({\n xref,\n isEvalSupported,\n fn,\n dict\n }) {\n var c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n var c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n var n = dict.get(\"N\");\n var length = c0.length;\n var diff = [];\n\n for (var i = 0; i < length; ++i) {\n diff.push(c1[i] - c0[i]);\n }\n\n return [CONSTRUCT_INTERPOLATED, c0, diff, n];\n },\n\n constructInterpolatedFromIR({\n xref,\n isEvalSupported,\n IR\n }) {\n var c0 = IR[1];\n var diff = IR[2];\n var n = IR[3];\n var length = diff.length;\n return function constructInterpolatedFromIRResult(src, srcOffset, dest, destOffset) {\n var x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\n\n for (var j = 0; j < length; ++j) {\n dest[destOffset + j] = c0[j] + x * diff[j];\n }\n };\n },\n\n constructStiched({\n xref,\n isEvalSupported,\n fn,\n dict\n }) {\n var domain = toNumberArray(dict.getArray(\"Domain\"));\n\n if (!domain) {\n throw new _util.FormatError(\"No domain\");\n }\n\n var inputSize = domain.length / 2;\n\n if (inputSize !== 1) {\n throw new _util.FormatError(\"Bad domain for stiched function\");\n }\n\n var fnRefs = dict.get(\"Functions\");\n var fns = [];\n\n for (var i = 0, ii = fnRefs.length; i < ii; ++i) {\n fns.push(this.parse({\n xref,\n isEvalSupported,\n fn: xref.fetchIfRef(fnRefs[i])\n }));\n }\n\n var bounds = toNumberArray(dict.getArray(\"Bounds\"));\n var encode = toNumberArray(dict.getArray(\"Encode\"));\n return [CONSTRUCT_STICHED, domain, bounds, encode, fns];\n },\n\n constructStichedFromIR({\n xref,\n isEvalSupported,\n IR\n }) {\n var domain = IR[1];\n var bounds = IR[2];\n var encode = IR[3];\n var fns = IR[4];\n var tmpBuf = new Float32Array(1);\n return function constructStichedFromIRResult(src, srcOffset, dest, destOffset) {\n var clip = function constructStichedFromIRClip(v, min, max) {\n if (v > max) {\n v = max;\n } else if (v < min) {\n v = min;\n }\n\n return v;\n };\n\n var v = clip(src[srcOffset], domain[0], domain[1]);\n\n for (var i = 0, ii = bounds.length; i < ii; ++i) {\n if (v < bounds[i]) {\n break;\n }\n }\n\n var dmin = domain[0];\n\n if (i > 0) {\n dmin = bounds[i - 1];\n }\n\n var dmax = domain[1];\n\n if (i < bounds.length) {\n dmax = bounds[i];\n }\n\n var rmin = encode[2 * i];\n var rmax = encode[2 * i + 1];\n tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin);\n fns[i](tmpBuf, 0, dest, destOffset);\n };\n },\n\n constructPostScript({\n xref,\n isEvalSupported,\n fn,\n dict\n }) {\n var domain = toNumberArray(dict.getArray(\"Domain\"));\n var range = toNumberArray(dict.getArray(\"Range\"));\n\n if (!domain) {\n throw new _util.FormatError(\"No domain.\");\n }\n\n if (!range) {\n throw new _util.FormatError(\"No range.\");\n }\n\n var lexer = new _ps_parser.PostScriptLexer(fn);\n var parser = new _ps_parser.PostScriptParser(lexer);\n var code = parser.parse();\n return [CONSTRUCT_POSTSCRIPT, domain, range, code];\n },\n\n constructPostScriptFromIR({\n xref,\n isEvalSupported,\n IR\n }) {\n var domain = IR[1];\n var range = IR[2];\n var code = IR[3];\n\n if (isEvalSupported && _util.IsEvalSupportedCached.value) {\n const compiled = new PostScriptCompiler().compile(code, domain, range);\n\n if (compiled) {\n return new Function(\"src\", \"srcOffset\", \"dest\", \"destOffset\", compiled);\n }\n }\n\n (0, _util.info)(\"Unable to compile PS function\");\n var numOutputs = range.length >> 1;\n var numInputs = domain.length >> 1;\n var evaluator = new PostScriptEvaluator(code);\n var cache = Object.create(null);\n var MAX_CACHE_SIZE = 2048 * 4;\n var cache_available = MAX_CACHE_SIZE;\n var tmpBuf = new Float32Array(numInputs);\n return function constructPostScriptFromIRResult(src, srcOffset, dest, destOffset) {\n var i, value;\n var key = \"\";\n var input = tmpBuf;\n\n for (i = 0; i < numInputs; i++) {\n value = src[srcOffset + i];\n input[i] = value;\n key += value + \"_\";\n }\n\n var cachedValue = cache[key];\n\n if (cachedValue !== undefined) {\n dest.set(cachedValue, destOffset);\n return;\n }\n\n var output = new Float32Array(numOutputs);\n var stack = evaluator.execute(input);\n var stackIndex = stack.length - numOutputs;\n\n for (i = 0; i < numOutputs; i++) {\n value = stack[stackIndex + i];\n var bound = range[i * 2];\n\n if (value < bound) {\n value = bound;\n } else {\n bound = range[i * 2 + 1];\n\n if (value > bound) {\n value = bound;\n }\n }\n\n output[i] = value;\n }\n\n if (cache_available > 0) {\n cache_available--;\n cache[key] = output;\n }\n\n dest.set(output, destOffset);\n };\n }\n\n };\n}();\n\nfunction isPDFFunction(v) {\n var fnDict;\n\n if (typeof v !== \"object\") {\n return false;\n } else if ((0, _primitives.isDict)(v)) {\n fnDict = v;\n } else if ((0, _primitives.isStream)(v)) {\n fnDict = v.dict;\n } else {\n return false;\n }\n\n return fnDict.has(\"FunctionType\");\n}\n\nvar PostScriptStack = function PostScriptStackClosure() {\n var MAX_STACK_SIZE = 100;\n\n function PostScriptStack(initialStack) {\n this.stack = !initialStack ? [] : Array.prototype.slice.call(initialStack, 0);\n }\n\n PostScriptStack.prototype = {\n push: function PostScriptStack_push(value) {\n if (this.stack.length >= MAX_STACK_SIZE) {\n throw new Error(\"PostScript function stack overflow.\");\n }\n\n this.stack.push(value);\n },\n pop: function PostScriptStack_pop() {\n if (this.stack.length <= 0) {\n throw new Error(\"PostScript function stack underflow.\");\n }\n\n return this.stack.pop();\n },\n copy: function PostScriptStack_copy(n) {\n if (this.stack.length + n >= MAX_STACK_SIZE) {\n throw new Error(\"PostScript function stack overflow.\");\n }\n\n var stack = this.stack;\n\n for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\n stack.push(stack[i]);\n }\n },\n index: function PostScriptStack_index(n) {\n this.push(this.stack[this.stack.length - n - 1]);\n },\n roll: function PostScriptStack_roll(n, p) {\n var stack = this.stack;\n var l = stack.length - n;\n var r = stack.length - 1,\n c = l + (p - Math.floor(p / n) * n),\n i,\n j,\n t;\n\n for (i = l, j = r; i < j; i++, j--) {\n t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n\n for (i = l, j = c - 1; i < j; i++, j--) {\n t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n\n for (i = c, j = r; i < j; i++, j--) {\n t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n }\n };\n return PostScriptStack;\n}();\n\nvar PostScriptEvaluator = function PostScriptEvaluatorClosure() {\n function PostScriptEvaluator(operators) {\n this.operators = operators;\n }\n\n PostScriptEvaluator.prototype = {\n execute: function PostScriptEvaluator_execute(initialStack) {\n var stack = new PostScriptStack(initialStack);\n var counter = 0;\n var operators = this.operators;\n var length = operators.length;\n var operator, a, b;\n\n while (counter < length) {\n operator = operators[counter++];\n\n if (typeof operator === \"number\") {\n stack.push(operator);\n continue;\n }\n\n switch (operator) {\n case \"jz\":\n b = stack.pop();\n a = stack.pop();\n\n if (!a) {\n counter = b;\n }\n\n break;\n\n case \"j\":\n a = stack.pop();\n counter = a;\n break;\n\n case \"abs\":\n a = stack.pop();\n stack.push(Math.abs(a));\n break;\n\n case \"add\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a + b);\n break;\n\n case \"and\":\n b = stack.pop();\n a = stack.pop();\n\n if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {\n stack.push(a && b);\n } else {\n stack.push(a & b);\n }\n\n break;\n\n case \"atan\":\n a = stack.pop();\n stack.push(Math.atan(a));\n break;\n\n case \"bitshift\":\n b = stack.pop();\n a = stack.pop();\n\n if (a > 0) {\n stack.push(a << b);\n } else {\n stack.push(a >> b);\n }\n\n break;\n\n case \"ceiling\":\n a = stack.pop();\n stack.push(Math.ceil(a));\n break;\n\n case \"copy\":\n a = stack.pop();\n stack.copy(a);\n break;\n\n case \"cos\":\n a = stack.pop();\n stack.push(Math.cos(a));\n break;\n\n case \"cvi\":\n a = stack.pop() | 0;\n stack.push(a);\n break;\n\n case \"cvr\":\n break;\n\n case \"div\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a / b);\n break;\n\n case \"dup\":\n stack.copy(1);\n break;\n\n case \"eq\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a === b);\n break;\n\n case \"exch\":\n stack.roll(2, 1);\n break;\n\n case \"exp\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a ** b);\n break;\n\n case \"false\":\n stack.push(false);\n break;\n\n case \"floor\":\n a = stack.pop();\n stack.push(Math.floor(a));\n break;\n\n case \"ge\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a >= b);\n break;\n\n case \"gt\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a > b);\n break;\n\n case \"idiv\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a / b | 0);\n break;\n\n case \"index\":\n a = stack.pop();\n stack.index(a);\n break;\n\n case \"le\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a <= b);\n break;\n\n case \"ln\":\n a = stack.pop();\n stack.push(Math.log(a));\n break;\n\n case \"log\":\n a = stack.pop();\n stack.push(Math.log(a) / Math.LN10);\n break;\n\n case \"lt\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a < b);\n break;\n\n case \"mod\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a % b);\n break;\n\n case \"mul\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a * b);\n break;\n\n case \"ne\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a !== b);\n break;\n\n case \"neg\":\n a = stack.pop();\n stack.push(-a);\n break;\n\n case \"not\":\n a = stack.pop();\n\n if ((0, _util.isBool)(a)) {\n stack.push(!a);\n } else {\n stack.push(~a);\n }\n\n break;\n\n case \"or\":\n b = stack.pop();\n a = stack.pop();\n\n if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {\n stack.push(a || b);\n } else {\n stack.push(a | b);\n }\n\n break;\n\n case \"pop\":\n stack.pop();\n break;\n\n case \"roll\":\n b = stack.pop();\n a = stack.pop();\n stack.roll(a, b);\n break;\n\n case \"round\":\n a = stack.pop();\n stack.push(Math.round(a));\n break;\n\n case \"sin\":\n a = stack.pop();\n stack.push(Math.sin(a));\n break;\n\n case \"sqrt\":\n a = stack.pop();\n stack.push(Math.sqrt(a));\n break;\n\n case \"sub\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a - b);\n break;\n\n case \"true\":\n stack.push(true);\n break;\n\n case \"truncate\":\n a = stack.pop();\n a = a < 0 ? Math.ceil(a) : Math.floor(a);\n stack.push(a);\n break;\n\n case \"xor\":\n b = stack.pop();\n a = stack.pop();\n\n if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {\n stack.push(a !== b);\n } else {\n stack.push(a ^ b);\n }\n\n break;\n\n default:\n throw new _util.FormatError(`Unknown operator ${operator}`);\n }\n }\n\n return stack.stack;\n }\n };\n return PostScriptEvaluator;\n}();\n\nexports.PostScriptEvaluator = PostScriptEvaluator;\n\nvar PostScriptCompiler = function PostScriptCompilerClosure() {\n function AstNode(type) {\n this.type = type;\n }\n\n AstNode.prototype.visit = function (visitor) {\n (0, _util.unreachable)(\"abstract method\");\n };\n\n function AstArgument(index, min, max) {\n AstNode.call(this, \"args\");\n this.index = index;\n this.min = min;\n this.max = max;\n }\n\n AstArgument.prototype = Object.create(AstNode.prototype);\n\n AstArgument.prototype.visit = function (visitor) {\n visitor.visitArgument(this);\n };\n\n function AstLiteral(number) {\n AstNode.call(this, \"literal\");\n this.number = number;\n this.min = number;\n this.max = number;\n }\n\n AstLiteral.prototype = Object.create(AstNode.prototype);\n\n AstLiteral.prototype.visit = function (visitor) {\n visitor.visitLiteral(this);\n };\n\n function AstBinaryOperation(op, arg1, arg2, min, max) {\n AstNode.call(this, \"binary\");\n this.op = op;\n this.arg1 = arg1;\n this.arg2 = arg2;\n this.min = min;\n this.max = max;\n }\n\n AstBinaryOperation.prototype = Object.create(AstNode.prototype);\n\n AstBinaryOperation.prototype.visit = function (visitor) {\n visitor.visitBinaryOperation(this);\n };\n\n function AstMin(arg, max) {\n AstNode.call(this, \"max\");\n this.arg = arg;\n this.min = arg.min;\n this.max = max;\n }\n\n AstMin.prototype = Object.create(AstNode.prototype);\n\n AstMin.prototype.visit = function (visitor) {\n visitor.visitMin(this);\n };\n\n function AstVariable(index, min, max) {\n AstNode.call(this, \"var\");\n this.index = index;\n this.min = min;\n this.max = max;\n }\n\n AstVariable.prototype = Object.create(AstNode.prototype);\n\n AstVariable.prototype.visit = function (visitor) {\n visitor.visitVariable(this);\n };\n\n function AstVariableDefinition(variable, arg) {\n AstNode.call(this, \"definition\");\n this.variable = variable;\n this.arg = arg;\n }\n\n AstVariableDefinition.prototype = Object.create(AstNode.prototype);\n\n AstVariableDefinition.prototype.visit = function (visitor) {\n visitor.visitVariableDefinition(this);\n };\n\n function ExpressionBuilderVisitor() {\n this.parts = [];\n }\n\n ExpressionBuilderVisitor.prototype = {\n visitArgument(arg) {\n this.parts.push(\"Math.max(\", arg.min, \", Math.min(\", arg.max, \", src[srcOffset + \", arg.index, \"]))\");\n },\n\n visitVariable(variable) {\n this.parts.push(\"v\", variable.index);\n },\n\n visitLiteral(literal) {\n this.parts.push(literal.number);\n },\n\n visitBinaryOperation(operation) {\n this.parts.push(\"(\");\n operation.arg1.visit(this);\n this.parts.push(\" \", operation.op, \" \");\n operation.arg2.visit(this);\n this.parts.push(\")\");\n },\n\n visitVariableDefinition(definition) {\n this.parts.push(\"var \");\n definition.variable.visit(this);\n this.parts.push(\" = \");\n definition.arg.visit(this);\n this.parts.push(\";\");\n },\n\n visitMin(max) {\n this.parts.push(\"Math.min(\");\n max.arg.visit(this);\n this.parts.push(\", \", max.max, \")\");\n },\n\n toString() {\n return this.parts.join(\"\");\n }\n\n };\n\n function buildAddOperation(num1, num2) {\n if (num2.type === \"literal\" && num2.number === 0) {\n return num1;\n }\n\n if (num1.type === \"literal\" && num1.number === 0) {\n return num2;\n }\n\n if (num2.type === \"literal\" && num1.type === \"literal\") {\n return new AstLiteral(num1.number + num2.number);\n }\n\n return new AstBinaryOperation(\"+\", num1, num2, num1.min + num2.min, num1.max + num2.max);\n }\n\n function buildMulOperation(num1, num2) {\n if (num2.type === \"literal\") {\n if (num2.number === 0) {\n return new AstLiteral(0);\n } else if (num2.number === 1) {\n return num1;\n } else if (num1.type === \"literal\") {\n return new AstLiteral(num1.number * num2.number);\n }\n }\n\n if (num1.type === \"literal\") {\n if (num1.number === 0) {\n return new AstLiteral(0);\n } else if (num1.number === 1) {\n return num2;\n }\n }\n\n var min = Math.min(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max);\n var max = Math.max(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max);\n return new AstBinaryOperation(\"*\", num1, num2, min, max);\n }\n\n function buildSubOperation(num1, num2) {\n if (num2.type === \"literal\") {\n if (num2.number === 0) {\n return num1;\n } else if (num1.type === \"literal\") {\n return new AstLiteral(num1.number - num2.number);\n }\n }\n\n if (num2.type === \"binary\" && num2.op === \"-\" && num1.type === \"literal\" && num1.number === 1 && num2.arg1.type === \"literal\" && num2.arg1.number === 1) {\n return num2.arg2;\n }\n\n return new AstBinaryOperation(\"-\", num1, num2, num1.min - num2.max, num1.max - num2.min);\n }\n\n function buildMinOperation(num1, max) {\n if (num1.min >= max) {\n return new AstLiteral(max);\n } else if (num1.max <= max) {\n return num1;\n }\n\n return new AstMin(num1, max);\n }\n\n function PostScriptCompiler() {}\n\n PostScriptCompiler.prototype = {\n compile: function PostScriptCompiler_compile(code, domain, range) {\n var stack = [];\n var instructions = [];\n var inputSize = domain.length >> 1,\n outputSize = range.length >> 1;\n var lastRegister = 0;\n var n, j;\n var num1, num2, ast1, ast2, tmpVar, item;\n\n for (let i = 0; i < inputSize; i++) {\n stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\n }\n\n for (let i = 0, ii = code.length; i < ii; i++) {\n item = code[i];\n\n if (typeof item === \"number\") {\n stack.push(new AstLiteral(item));\n continue;\n }\n\n switch (item) {\n case \"add\":\n if (stack.length < 2) {\n return null;\n }\n\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildAddOperation(num1, num2));\n break;\n\n case \"cvr\":\n if (stack.length < 1) {\n return null;\n }\n\n break;\n\n case \"mul\":\n if (stack.length < 2) {\n return null;\n }\n\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildMulOperation(num1, num2));\n break;\n\n case \"sub\":\n if (stack.length < 2) {\n return null;\n }\n\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildSubOperation(num1, num2));\n break;\n\n case \"exch\":\n if (stack.length < 2) {\n return null;\n }\n\n ast1 = stack.pop();\n ast2 = stack.pop();\n stack.push(ast1, ast2);\n break;\n\n case \"pop\":\n if (stack.length < 1) {\n return null;\n }\n\n stack.pop();\n break;\n\n case \"index\":\n if (stack.length < 1) {\n return null;\n }\n\n num1 = stack.pop();\n\n if (num1.type !== \"literal\") {\n return null;\n }\n\n n = num1.number;\n\n if (n < 0 || !Number.isInteger(n) || stack.length < n) {\n return null;\n }\n\n ast1 = stack[stack.length - n - 1];\n\n if (ast1.type === \"literal\" || ast1.type === \"var\") {\n stack.push(ast1);\n break;\n }\n\n tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n stack[stack.length - n - 1] = tmpVar;\n stack.push(tmpVar);\n instructions.push(new AstVariableDefinition(tmpVar, ast1));\n break;\n\n case \"dup\":\n if (stack.length < 1) {\n return null;\n }\n\n if (typeof code[i + 1] === \"number\" && code[i + 2] === \"gt\" && code[i + 3] === i + 7 && code[i + 4] === \"jz\" && code[i + 5] === \"pop\" && code[i + 6] === code[i + 1]) {\n num1 = stack.pop();\n stack.push(buildMinOperation(num1, code[i + 1]));\n i += 6;\n break;\n }\n\n ast1 = stack[stack.length - 1];\n\n if (ast1.type === \"literal\" || ast1.type === \"var\") {\n stack.push(ast1);\n break;\n }\n\n tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n stack[stack.length - 1] = tmpVar;\n stack.push(tmpVar);\n instructions.push(new AstVariableDefinition(tmpVar, ast1));\n break;\n\n case \"roll\":\n if (stack.length < 2) {\n return null;\n }\n\n num2 = stack.pop();\n num1 = stack.pop();\n\n if (num2.type !== \"literal\" || num1.type !== \"literal\") {\n return null;\n }\n\n j = num2.number;\n n = num1.number;\n\n if (n <= 0 || !Number.isInteger(n) || !Number.isInteger(j) || stack.length < n) {\n return null;\n }\n\n j = (j % n + n) % n;\n\n if (j === 0) {\n break;\n }\n\n Array.prototype.push.apply(stack, stack.splice(stack.length - n, n - j));\n break;\n\n default:\n return null;\n }\n }\n\n if (stack.length !== outputSize) {\n return null;\n }\n\n var result = [];\n instructions.forEach(function (instruction) {\n var statementBuilder = new ExpressionBuilderVisitor();\n instruction.visit(statementBuilder);\n result.push(statementBuilder.toString());\n });\n stack.forEach(function (expr, i) {\n var statementBuilder = new ExpressionBuilderVisitor();\n expr.visit(statementBuilder);\n var min = range[i * 2],\n max = range[i * 2 + 1];\n var out = [statementBuilder.toString()];\n\n if (min > expr.min) {\n out.unshift(\"Math.max(\", min, \", \");\n out.push(\")\");\n }\n\n if (max < expr.max) {\n out.unshift(\"Math.min(\", max, \", \");\n out.push(\")\");\n }\n\n out.unshift(\"dest[destOffset + \", i, \"] = \");\n out.push(\";\");\n result.push(out.join(\"\"));\n });\n return result.join(\"\\n\");\n }\n };\n return PostScriptCompiler;\n}();\n\nexports.PostScriptCompiler = PostScriptCompiler;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PostScriptParser = exports.PostScriptLexer = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nclass PostScriptParser {\n constructor(lexer) {\n this.lexer = lexer;\n this.operators = [];\n this.token = null;\n this.prev = null;\n }\n\n nextToken() {\n this.prev = this.token;\n this.token = this.lexer.getToken();\n }\n\n accept(type) {\n if (this.token.type === type) {\n this.nextToken();\n return true;\n }\n\n return false;\n }\n\n expect(type) {\n if (this.accept(type)) {\n return true;\n }\n\n throw new _util.FormatError(`Unexpected symbol: found ${this.token.type} expected ${type}.`);\n }\n\n parse() {\n this.nextToken();\n this.expect(PostScriptTokenTypes.LBRACE);\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n return this.operators;\n }\n\n parseBlock() {\n while (true) {\n if (this.accept(PostScriptTokenTypes.NUMBER)) {\n this.operators.push(this.prev.value);\n } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {\n this.operators.push(this.prev.value);\n } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n this.parseCondition();\n } else {\n return;\n }\n }\n }\n\n parseCondition() {\n const conditionLocation = this.operators.length;\n this.operators.push(null, null);\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n\n if (this.accept(PostScriptTokenTypes.IF)) {\n this.operators[conditionLocation] = this.operators.length;\n this.operators[conditionLocation + 1] = \"jz\";\n } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n const jumpLocation = this.operators.length;\n this.operators.push(null, null);\n const endOfTrue = this.operators.length;\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n this.expect(PostScriptTokenTypes.IFELSE);\n this.operators[jumpLocation] = this.operators.length;\n this.operators[jumpLocation + 1] = \"j\";\n this.operators[conditionLocation] = endOfTrue;\n this.operators[conditionLocation + 1] = \"jz\";\n } else {\n throw new _util.FormatError(\"PS Function: error parsing conditional.\");\n }\n }\n\n}\n\nexports.PostScriptParser = PostScriptParser;\nconst PostScriptTokenTypes = {\n LBRACE: 0,\n RBRACE: 1,\n NUMBER: 2,\n OPERATOR: 3,\n IF: 4,\n IFELSE: 5\n};\n\nconst PostScriptToken = function PostScriptTokenClosure() {\n const opCache = Object.create(null);\n\n class PostScriptToken {\n constructor(type, value) {\n this.type = type;\n this.value = value;\n }\n\n static getOperator(op) {\n const opValue = opCache[op];\n\n if (opValue) {\n return opValue;\n }\n\n return opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op);\n }\n\n static get LBRACE() {\n return (0, _util.shadow)(this, \"LBRACE\", new PostScriptToken(PostScriptTokenTypes.LBRACE, \"{\"));\n }\n\n static get RBRACE() {\n return (0, _util.shadow)(this, \"RBRACE\", new PostScriptToken(PostScriptTokenTypes.RBRACE, \"}\"));\n }\n\n static get IF() {\n return (0, _util.shadow)(this, \"IF\", new PostScriptToken(PostScriptTokenTypes.IF, \"IF\"));\n }\n\n static get IFELSE() {\n return (0, _util.shadow)(this, \"IFELSE\", new PostScriptToken(PostScriptTokenTypes.IFELSE, \"IFELSE\"));\n }\n\n }\n\n return PostScriptToken;\n}();\n\nclass PostScriptLexer {\n constructor(stream) {\n this.stream = stream;\n this.nextChar();\n this.strBuf = [];\n }\n\n nextChar() {\n return this.currentChar = this.stream.getByte();\n }\n\n getToken() {\n let comment = false;\n let ch = this.currentChar;\n\n while (true) {\n if (ch < 0) {\n return _primitives.EOF;\n }\n\n if (comment) {\n if (ch === 0x0a || ch === 0x0d) {\n comment = false;\n }\n } else if (ch === 0x25) {\n comment = true;\n } else if (!(0, _core_utils.isWhiteSpace)(ch)) {\n break;\n }\n\n ch = this.nextChar();\n }\n\n switch (ch | 0) {\n case 0x30:\n case 0x31:\n case 0x32:\n case 0x33:\n case 0x34:\n case 0x35:\n case 0x36:\n case 0x37:\n case 0x38:\n case 0x39:\n case 0x2b:\n case 0x2d:\n case 0x2e:\n return new PostScriptToken(PostScriptTokenTypes.NUMBER, this.getNumber());\n\n case 0x7b:\n this.nextChar();\n return PostScriptToken.LBRACE;\n\n case 0x7d:\n this.nextChar();\n return PostScriptToken.RBRACE;\n }\n\n const strBuf = this.strBuf;\n strBuf.length = 0;\n strBuf[0] = String.fromCharCode(ch);\n\n while ((ch = this.nextChar()) >= 0 && (ch >= 0x41 && ch <= 0x5a || ch >= 0x61 && ch <= 0x7a)) {\n strBuf.push(String.fromCharCode(ch));\n }\n\n const str = strBuf.join(\"\");\n\n switch (str.toLowerCase()) {\n case \"if\":\n return PostScriptToken.IF;\n\n case \"ifelse\":\n return PostScriptToken.IFELSE;\n\n default:\n return PostScriptToken.getOperator(str);\n }\n }\n\n getNumber() {\n let ch = this.currentChar;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n strBuf[0] = String.fromCharCode(ch);\n\n while ((ch = this.nextChar()) >= 0) {\n if (ch >= 0x30 && ch <= 0x39 || ch === 0x2d || ch === 0x2e) {\n strBuf.push(String.fromCharCode(ch));\n } else {\n break;\n }\n }\n\n const value = parseFloat(strBuf.join(\"\"));\n\n if (isNaN(value)) {\n throw new _util.FormatError(`Invalid floating point number: ${value}`);\n }\n\n return value;\n }\n\n}\n\nexports.PostScriptLexer = PostScriptLexer;\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bidi = bidi;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar baseTypes = [\"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"S\", \"B\", \"S\", \"WS\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"B\", \"B\", \"S\", \"WS\", \"ON\", \"ON\", \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ES\", \"CS\", \"ES\", \"CS\", \"CS\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"CS\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"CS\", \"ON\", \"ET\", \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"ON\", \"ON\", \"BN\", \"ON\", \"ON\", \"ET\", \"ET\", \"EN\", \"EN\", \"ON\", \"L\", \"ON\", \"ON\", \"ON\", \"EN\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\"];\nvar arabicTypes = [\"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ON\", \"ON\", \"AL\", \"ET\", \"ET\", \"AL\", \"CS\", \"AL\", \"ON\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ET\", \"AN\", \"AN\", \"AL\", \"AL\", \"AL\", \"NSM\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\"];\n\nfunction isOdd(i) {\n return (i & 1) !== 0;\n}\n\nfunction isEven(i) {\n return (i & 1) === 0;\n}\n\nfunction findUnequal(arr, start, value) {\n for (var j = start, jj = arr.length; j < jj; ++j) {\n if (arr[j] !== value) {\n return j;\n }\n }\n\n return j;\n}\n\nfunction setValues(arr, start, end, value) {\n for (var j = start; j < end; ++j) {\n arr[j] = value;\n }\n}\n\nfunction reverseValues(arr, start, end) {\n for (var i = start, j = end - 1; i < j; ++i, --j) {\n var temp = arr[i];\n arr[i] = arr[j];\n arr[j] = temp;\n }\n}\n\nfunction createBidiText(str, isLTR, vertical = false) {\n let dir = \"ltr\";\n\n if (vertical) {\n dir = \"ttb\";\n } else if (!isLTR) {\n dir = \"rtl\";\n }\n\n return {\n str,\n dir\n };\n}\n\nvar chars = [];\nvar types = [];\n\nfunction bidi(str, startLevel, vertical) {\n var isLTR = true;\n var strLength = str.length;\n\n if (strLength === 0 || vertical) {\n return createBidiText(str, isLTR, vertical);\n }\n\n chars.length = strLength;\n types.length = strLength;\n var numBidi = 0;\n var i, ii;\n\n for (i = 0; i < strLength; ++i) {\n chars[i] = str.charAt(i);\n var charCode = str.charCodeAt(i);\n var charType = \"L\";\n\n if (charCode <= 0x00ff) {\n charType = baseTypes[charCode];\n } else if (0x0590 <= charCode && charCode <= 0x05f4) {\n charType = \"R\";\n } else if (0x0600 <= charCode && charCode <= 0x06ff) {\n charType = arabicTypes[charCode & 0xff];\n\n if (!charType) {\n (0, _util.warn)(\"Bidi: invalid Unicode character \" + charCode.toString(16));\n }\n } else if (0x0700 <= charCode && charCode <= 0x08ac) {\n charType = \"AL\";\n }\n\n if (charType === \"R\" || charType === \"AL\" || charType === \"AN\") {\n numBidi++;\n }\n\n types[i] = charType;\n }\n\n if (numBidi === 0) {\n isLTR = true;\n return createBidiText(str, isLTR);\n }\n\n if (startLevel === -1) {\n if (numBidi / strLength < 0.3) {\n isLTR = true;\n startLevel = 0;\n } else {\n isLTR = false;\n startLevel = 1;\n }\n }\n\n var levels = [];\n\n for (i = 0; i < strLength; ++i) {\n levels[i] = startLevel;\n }\n\n var e = isOdd(startLevel) ? \"R\" : \"L\";\n var sor = e;\n var eor = sor;\n var lastType = sor;\n\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"NSM\") {\n types[i] = lastType;\n } else {\n lastType = types[i];\n }\n }\n\n lastType = sor;\n var t;\n\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n\n if (t === \"EN\") {\n types[i] = lastType === \"AL\" ? \"AN\" : \"EN\";\n } else if (t === \"R\" || t === \"L\" || t === \"AL\") {\n lastType = t;\n }\n }\n\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n\n if (t === \"AL\") {\n types[i] = \"R\";\n }\n }\n\n for (i = 1; i < strLength - 1; ++i) {\n if (types[i] === \"ES\" && types[i - 1] === \"EN\" && types[i + 1] === \"EN\") {\n types[i] = \"EN\";\n }\n\n if (types[i] === \"CS\" && (types[i - 1] === \"EN\" || types[i - 1] === \"AN\") && types[i + 1] === types[i - 1]) {\n types[i] = types[i - 1];\n }\n }\n\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"EN\") {\n var j;\n\n for (j = i - 1; j >= 0; --j) {\n if (types[j] !== \"ET\") {\n break;\n }\n\n types[j] = \"EN\";\n }\n\n for (j = i + 1; j < strLength; ++j) {\n if (types[j] !== \"ET\") {\n break;\n }\n\n types[j] = \"EN\";\n }\n }\n }\n\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n\n if (t === \"WS\" || t === \"ES\" || t === \"ET\" || t === \"CS\") {\n types[i] = \"ON\";\n }\n }\n\n lastType = sor;\n\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n\n if (t === \"EN\") {\n types[i] = lastType === \"L\" ? \"L\" : \"EN\";\n } else if (t === \"R\" || t === \"L\") {\n lastType = t;\n }\n }\n\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n var end = findUnequal(types, i + 1, \"ON\");\n var before = sor;\n\n if (i > 0) {\n before = types[i - 1];\n }\n\n var after = eor;\n\n if (end + 1 < strLength) {\n after = types[end + 1];\n }\n\n if (before !== \"L\") {\n before = \"R\";\n }\n\n if (after !== \"L\") {\n after = \"R\";\n }\n\n if (before === after) {\n setValues(types, i, end, before);\n }\n\n i = end - 1;\n }\n }\n\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n types[i] = e;\n }\n }\n\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n\n if (isEven(levels[i])) {\n if (t === \"R\") {\n levels[i] += 1;\n } else if (t === \"AN\" || t === \"EN\") {\n levels[i] += 2;\n }\n } else {\n if (t === \"L\" || t === \"AN\" || t === \"EN\") {\n levels[i] += 1;\n }\n }\n }\n\n var highestLevel = -1;\n var lowestOddLevel = 99;\n var level;\n\n for (i = 0, ii = levels.length; i < ii; ++i) {\n level = levels[i];\n\n if (highestLevel < level) {\n highestLevel = level;\n }\n\n if (lowestOddLevel > level && isOdd(level)) {\n lowestOddLevel = level;\n }\n }\n\n for (level = highestLevel; level >= lowestOddLevel; --level) {\n var start = -1;\n\n for (i = 0, ii = levels.length; i < ii; ++i) {\n if (levels[i] < level) {\n if (start >= 0) {\n reverseValues(chars, start, i);\n start = -1;\n }\n } else if (start < 0) {\n start = i;\n }\n }\n\n if (start >= 0) {\n reverseValues(chars, start, levels.length);\n }\n }\n\n for (i = 0, ii = chars.length; i < ii; ++i) {\n var ch = chars[i];\n\n if (ch === \"<\" || ch === \">\") {\n chars[i] = \"\";\n }\n }\n\n return createBidiText(chars.join(\"\"), isLTR);\n}\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getMetrics = void 0;\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar getMetrics = (0, _core_utils.getLookupTableFactory)(function (t) {\n t.Courier = 600;\n t[\"Courier-Bold\"] = 600;\n t[\"Courier-BoldOblique\"] = 600;\n t[\"Courier-Oblique\"] = 600;\n t.Helvetica = (0, _core_utils.getLookupTableFactory)(function (t) {\n t.space = 278;\n t.exclam = 278;\n t.quotedbl = 355;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 667;\n t.quoteright = 222;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 556;\n t.at = 1015;\n t.A = 667;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 500;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 278;\n t.backslash = 278;\n t.bracketright = 278;\n t.asciicircum = 469;\n t.underscore = 556;\n t.quoteleft = 222;\n t.a = 556;\n t.b = 556;\n t.c = 500;\n t.d = 556;\n t.e = 556;\n t.f = 278;\n t.g = 556;\n t.h = 556;\n t.i = 222;\n t.j = 222;\n t.k = 500;\n t.l = 222;\n t.m = 833;\n t.n = 556;\n t.o = 556;\n t.p = 556;\n t.q = 556;\n t.r = 333;\n t.s = 500;\n t.t = 278;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 500;\n t.braceleft = 334;\n t.bar = 260;\n t.braceright = 334;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 191;\n t.quotedblleft = 333;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 537;\n t.bullet = 350;\n t.quotesinglbase = 222;\n t.quotedblbase = 333;\n t.quotedblright = 333;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 556;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 222;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 556;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 667;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 500;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 500;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 222;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 500;\n t.scedilla = 500;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 556;\n t.Amacron = 667;\n t.rcaron = 333;\n t.ccedilla = 500;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 643;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 584;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 500;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 260;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 333;\n t.omacron = 556;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 222;\n t.tcaron = 317;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 222;\n t.Oacute = 778;\n t.oacute = 556;\n t.amacron = 556;\n t.sacute = 500;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 556;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 299;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 556;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 556;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 556;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 556;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 556;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 556;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 500;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 584;\n t.odieresis = 556;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 556;\n t.eth = 556;\n t.zcaron = 500;\n t.ncommaaccent = 556;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n t[\"Helvetica-Bold\"] = (0, _core_utils.getLookupTableFactory)(function (t) {\n t.space = 278;\n t.exclam = 333;\n t.quotedbl = 474;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 722;\n t.quoteright = 278;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 611;\n t.at = 975;\n t.A = 722;\n t.B = 722;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 556;\n t.K = 722;\n t.L = 611;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 584;\n t.underscore = 556;\n t.quoteleft = 278;\n t.a = 556;\n t.b = 611;\n t.c = 556;\n t.d = 611;\n t.e = 556;\n t.f = 333;\n t.g = 611;\n t.h = 611;\n t.i = 278;\n t.j = 278;\n t.k = 556;\n t.l = 278;\n t.m = 889;\n t.n = 611;\n t.o = 611;\n t.p = 611;\n t.q = 611;\n t.r = 389;\n t.s = 556;\n t.t = 333;\n t.u = 611;\n t.v = 556;\n t.w = 778;\n t.x = 556;\n t.y = 556;\n t.z = 500;\n t.braceleft = 389;\n t.bar = 280;\n t.braceright = 389;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 238;\n t.quotedblleft = 500;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 611;\n t.fl = 611;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 556;\n t.bullet = 350;\n t.quotesinglbase = 278;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 611;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 611;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 722;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 556;\n t.scommaaccent = 556;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 611;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 556;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 556;\n t.scedilla = 556;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 611;\n t.acircumflex = 556;\n t.Amacron = 722;\n t.rcaron = 389;\n t.ccedilla = 556;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 743;\n t.Umacron = 722;\n t.uring = 611;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 584;\n t.uacute = 611;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 556;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 556;\n t.nacute = 611;\n t.umacron = 611;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 280;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 611;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 389;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 611;\n t.amacron = 556;\n t.sacute = 556;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 611;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 611;\n t.igrave = 278;\n t.ohungarumlaut = 611;\n t.Eogonek = 667;\n t.dcroat = 611;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 400;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 611;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 611;\n t.ntilde = 611;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 611;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 611;\n t.Ccaron = 722;\n t.ugrave = 611;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 611;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 556;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 611;\n t.tcommaaccent = 333;\n t.logicalnot = 584;\n t.odieresis = 611;\n t.udieresis = 611;\n t.notequal = 549;\n t.gcommaaccent = 611;\n t.eth = 611;\n t.zcaron = 500;\n t.ncommaaccent = 611;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n t[\"Helvetica-BoldOblique\"] = (0, _core_utils.getLookupTableFactory)(function (t) {\n t.space = 278;\n t.exclam = 333;\n t.quotedbl = 474;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 722;\n t.quoteright = 278;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 611;\n t.at = 975;\n t.A = 722;\n t.B = 722;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 556;\n t.K = 722;\n t.L = 611;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 584;\n t.underscore = 556;\n t.quoteleft = 278;\n t.a = 556;\n t.b = 611;\n t.c = 556;\n t.d = 611;\n t.e = 556;\n t.f = 333;\n t.g = 611;\n t.h = 611;\n t.i = 278;\n t.j = 278;\n t.k = 556;\n t.l = 278;\n t.m = 889;\n t.n = 611;\n t.o = 611;\n t.p = 611;\n t.q = 611;\n t.r = 389;\n t.s = 556;\n t.t = 333;\n t.u = 611;\n t.v = 556;\n t.w = 778;\n t.x = 556;\n t.y = 556;\n t.z = 500;\n t.braceleft = 389;\n t.bar = 280;\n t.braceright = 389;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 238;\n t.quotedblleft = 500;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 611;\n t.fl = 611;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 556;\n t.bullet = 350;\n t.quotesinglbase = 278;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 611;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 611;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 722;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 556;\n t.scommaaccent = 556;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 611;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 556;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 556;\n t.scedilla = 556;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 611;\n t.acircumflex = 556;\n t.Amacron = 722;\n t.rcaron = 389;\n t.ccedilla = 556;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 743;\n t.Umacron = 722;\n t.uring = 611;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 584;\n t.uacute = 611;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 556;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 556;\n t.nacute = 611;\n t.umacron = 611;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 280;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 611;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 389;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 611;\n t.amacron = 556;\n t.sacute = 556;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 611;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 611;\n t.igrave = 278;\n t.ohungarumlaut = 611;\n t.Eogonek = 667;\n t.dcroat = 611;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 400;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 611;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 611;\n t.ntilde = 611;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 611;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 611;\n t.Ccaron = 722;\n t.ugrave = 611;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 611;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 556;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 611;\n t.tcommaaccent = 333;\n t.logicalnot = 584;\n t.odieresis = 611;\n t.udieresis = 611;\n t.notequal = 549;\n t.gcommaaccent = 611;\n t.eth = 611;\n t.zcaron = 500;\n t.ncommaaccent = 611;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n t[\"Helvetica-Oblique\"] = (0, _core_utils.getLookupTableFactory)(function (t) {\n t.space = 278;\n t.exclam = 278;\n t.quotedbl = 355;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 667;\n t.quoteright = 222;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 556;\n t.at = 1015;\n t.A = 667;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 500;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 278;\n t.backslash = 278;\n t.bracketright = 278;\n t.asciicircum = 469;\n t.underscore = 556;\n t.quoteleft = 222;\n t.a = 556;\n t.b = 556;\n t.c = 500;\n t.d = 556;\n t.e = 556;\n t.f = 278;\n t.g = 556;\n t.h = 556;\n t.i = 222;\n t.j = 222;\n t.k = 500;\n t.l = 222;\n t.m = 833;\n t.n = 556;\n t.o = 556;\n t.p = 556;\n t.q = 556;\n t.r = 333;\n t.s = 500;\n t.t = 278;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 500;\n t.braceleft = 334;\n t.bar = 260;\n t.braceright = 334;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 191;\n t.quotedblleft = 333;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 537;\n t.bullet = 350;\n t.quotesinglbase = 222;\n t.quotedblbase = 333;\n t.quotedblright = 333;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 556;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 222;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 556;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 667;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 500;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 500;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 222;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 500;\n t.scedilla = 500;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 556;\n t.Amacron = 667;\n t.rcaron = 333;\n t.ccedilla = 500;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 643;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 584;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 500;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 260;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 333;\n t.omacron = 556;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 222;\n t.tcaron = 317;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 222;\n t.Oacute = 778;\n t.oacute = 556;\n t.amacron = 556;\n t.sacute = 500;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 556;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 299;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 556;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 556;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 556;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 556;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 556;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 556;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 500;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 584;\n t.odieresis = 556;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 556;\n t.eth = 556;\n t.zcaron = 500;\n t.ncommaaccent = 556;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n t.Symbol = (0, _core_utils.getLookupTableFactory)(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.universal = 713;\n t.numbersign = 500;\n t.existential = 549;\n t.percent = 833;\n t.ampersand = 778;\n t.suchthat = 439;\n t.parenleft = 333;\n t.parenright = 333;\n t.asteriskmath = 500;\n t.plus = 549;\n t.comma = 250;\n t.minus = 549;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 549;\n t.equal = 549;\n t.greater = 549;\n t.question = 444;\n t.congruent = 549;\n t.Alpha = 722;\n t.Beta = 667;\n t.Chi = 722;\n t.Delta = 612;\n t.Epsilon = 611;\n t.Phi = 763;\n t.Gamma = 603;\n t.Eta = 722;\n t.Iota = 333;\n t.theta1 = 631;\n t.Kappa = 722;\n t.Lambda = 686;\n t.Mu = 889;\n t.Nu = 722;\n t.Omicron = 722;\n t.Pi = 768;\n t.Theta = 741;\n t.Rho = 556;\n t.Sigma = 592;\n t.Tau = 611;\n t.Upsilon = 690;\n t.sigma1 = 439;\n t.Omega = 768;\n t.Xi = 645;\n t.Psi = 795;\n t.Zeta = 611;\n t.bracketleft = 333;\n t.therefore = 863;\n t.bracketright = 333;\n t.perpendicular = 658;\n t.underscore = 500;\n t.radicalex = 500;\n t.alpha = 631;\n t.beta = 549;\n t.chi = 549;\n t.delta = 494;\n t.epsilon = 439;\n t.phi = 521;\n t.gamma = 411;\n t.eta = 603;\n t.iota = 329;\n t.phi1 = 603;\n t.kappa = 549;\n t.lambda = 549;\n t.mu = 576;\n t.nu = 521;\n t.omicron = 549;\n t.pi = 549;\n t.theta = 521;\n t.rho = 549;\n t.sigma = 603;\n t.tau = 439;\n t.upsilon = 576;\n t.omega1 = 713;\n t.omega = 686;\n t.xi = 493;\n t.psi = 686;\n t.zeta = 494;\n t.braceleft = 480;\n t.bar = 200;\n t.braceright = 480;\n t.similar = 549;\n t.Euro = 750;\n t.Upsilon1 = 620;\n t.minute = 247;\n t.lessequal = 549;\n t.fraction = 167;\n t.infinity = 713;\n t.florin = 500;\n t.club = 753;\n t.diamond = 753;\n t.heart = 753;\n t.spade = 753;\n t.arrowboth = 1042;\n t.arrowleft = 987;\n t.arrowup = 603;\n t.arrowright = 987;\n t.arrowdown = 603;\n t.degree = 400;\n t.plusminus = 549;\n t.second = 411;\n t.greaterequal = 549;\n t.multiply = 549;\n t.proportional = 713;\n t.partialdiff = 494;\n t.bullet = 460;\n t.divide = 549;\n t.notequal = 549;\n t.equivalence = 549;\n t.approxequal = 549;\n t.ellipsis = 1000;\n t.arrowvertex = 603;\n t.arrowhorizex = 1000;\n t.carriagereturn = 658;\n t.aleph = 823;\n t.Ifraktur = 686;\n t.Rfraktur = 795;\n t.weierstrass = 987;\n t.circlemultiply = 768;\n t.circleplus = 768;\n t.emptyset = 823;\n t.intersection = 768;\n t.union = 768;\n t.propersuperset = 713;\n t.reflexsuperset = 713;\n t.notsubset = 713;\n t.propersubset = 713;\n t.reflexsubset = 713;\n t.element = 713;\n t.notelement = 713;\n t.angle = 768;\n t.gradient = 713;\n t.registerserif = 790;\n t.copyrightserif = 790;\n t.trademarkserif = 890;\n t.product = 823;\n t.radical = 549;\n t.dotmath = 250;\n t.logicalnot = 713;\n t.logicaland = 603;\n t.logicalor = 603;\n t.arrowdblboth = 1042;\n t.arrowdblleft = 987;\n t.arrowdblup = 603;\n t.arrowdblright = 987;\n t.arrowdbldown = 603;\n t.lozenge = 494;\n t.angleleft = 329;\n t.registersans = 790;\n t.copyrightsans = 790;\n t.trademarksans = 786;\n t.summation = 713;\n t.parenlefttp = 384;\n t.parenleftex = 384;\n t.parenleftbt = 384;\n t.bracketlefttp = 384;\n t.bracketleftex = 384;\n t.bracketleftbt = 384;\n t.bracelefttp = 494;\n t.braceleftmid = 494;\n t.braceleftbt = 494;\n t.braceex = 494;\n t.angleright = 329;\n t.integral = 274;\n t.integraltp = 686;\n t.integralex = 686;\n t.integralbt = 686;\n t.parenrighttp = 384;\n t.parenrightex = 384;\n t.parenrightbt = 384;\n t.bracketrighttp = 384;\n t.bracketrightex = 384;\n t.bracketrightbt = 384;\n t.bracerighttp = 494;\n t.bracerightmid = 494;\n t.bracerightbt = 494;\n t.apple = 790;\n });\n t[\"Times-Roman\"] = (0, _core_utils.getLookupTableFactory)(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 408;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 564;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 564;\n t.equal = 564;\n t.greater = 564;\n t.question = 444;\n t.at = 921;\n t.A = 722;\n t.B = 667;\n t.C = 667;\n t.D = 722;\n t.E = 611;\n t.F = 556;\n t.G = 722;\n t.H = 722;\n t.I = 333;\n t.J = 389;\n t.K = 722;\n t.L = 611;\n t.M = 889;\n t.N = 722;\n t.O = 722;\n t.P = 556;\n t.Q = 722;\n t.R = 667;\n t.S = 556;\n t.T = 611;\n t.U = 722;\n t.V = 722;\n t.W = 944;\n t.X = 722;\n t.Y = 722;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 469;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 444;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 500;\n t.i = 278;\n t.j = 278;\n t.k = 500;\n t.l = 278;\n t.m = 778;\n t.n = 500;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 333;\n t.s = 389;\n t.t = 278;\n t.u = 500;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 444;\n t.braceleft = 480;\n t.bar = 200;\n t.braceright = 480;\n t.asciitilde = 541;\n t.exclamdown = 333;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 180;\n t.quotedblleft = 444;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 453;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 444;\n t.quotedblright = 444;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 444;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 889;\n t.ordfeminine = 276;\n t.Lslash = 611;\n t.Oslash = 722;\n t.OE = 889;\n t.ordmasculine = 310;\n t.ae = 667;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 500;\n t.Idieresis = 333;\n t.eacute = 444;\n t.abreve = 444;\n t.uhungarumlaut = 500;\n t.ecaron = 444;\n t.Ydieresis = 722;\n t.divide = 564;\n t.Yacute = 722;\n t.Acircumflex = 722;\n t.aacute = 444;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 444;\n t.Uacute = 722;\n t.uogonek = 500;\n t.Edieresis = 611;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 760;\n t.Emacron = 611;\n t.ccaron = 444;\n t.aring = 444;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 444;\n t.Tcommaaccent = 611;\n t.Cacute = 667;\n t.atilde = 444;\n t.Edotaccent = 611;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 667;\n t.Gcommaaccent = 722;\n t.ucircumflex = 500;\n t.acircumflex = 444;\n t.Amacron = 722;\n t.rcaron = 333;\n t.ccedilla = 444;\n t.Zdotaccent = 611;\n t.Thorn = 556;\n t.Omacron = 722;\n t.Racute = 667;\n t.Sacute = 556;\n t.dcaron = 588;\n t.Umacron = 722;\n t.uring = 500;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 564;\n t.uacute = 500;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 611;\n t.adieresis = 444;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 500;\n t.umacron = 500;\n t.Ncaron = 722;\n t.Iacute = 333;\n t.plusminus = 564;\n t.brokenbar = 200;\n t.registered = 760;\n t.Gbreve = 722;\n t.Idotaccent = 333;\n t.summation = 600;\n t.Egrave = 611;\n t.racute = 333;\n t.omacron = 500;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 326;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 444;\n t.zacute = 444;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 444;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 500;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 611;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 344;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 980;\n t.edotaccent = 444;\n t.Igrave = 333;\n t.Imacron = 333;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 500;\n t.Uhungarumlaut = 722;\n t.Eacute = 611;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 500;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 667;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 722;\n t.zdotaccent = 444;\n t.Ecaron = 611;\n t.Iogonek = 333;\n t.kcommaaccent = 500;\n t.minus = 564;\n t.Icircumflex = 333;\n t.ncaron = 500;\n t.tcommaaccent = 278;\n t.logicalnot = 564;\n t.odieresis = 500;\n t.udieresis = 500;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 444;\n t.ncommaaccent = 500;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n t[\"Times-Bold\"] = (0, _core_utils.getLookupTableFactory)(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 555;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 1000;\n t.ampersand = 833;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 570;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 570;\n t.equal = 570;\n t.greater = 570;\n t.question = 500;\n t.at = 930;\n t.A = 722;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 778;\n t.I = 389;\n t.J = 500;\n t.K = 778;\n t.L = 667;\n t.M = 944;\n t.N = 722;\n t.O = 778;\n t.P = 611;\n t.Q = 778;\n t.R = 722;\n t.S = 556;\n t.T = 667;\n t.U = 722;\n t.V = 722;\n t.W = 1000;\n t.X = 722;\n t.Y = 722;\n t.Z = 667;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 581;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 556;\n t.c = 444;\n t.d = 556;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 556;\n t.i = 278;\n t.j = 333;\n t.k = 556;\n t.l = 278;\n t.m = 833;\n t.n = 556;\n t.o = 500;\n t.p = 556;\n t.q = 556;\n t.r = 444;\n t.s = 389;\n t.t = 333;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 444;\n t.braceleft = 394;\n t.bar = 220;\n t.braceright = 394;\n t.asciitilde = 520;\n t.exclamdown = 333;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 278;\n t.quotedblleft = 500;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 540;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 300;\n t.Lslash = 667;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 330;\n t.ae = 722;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 556;\n t.Idieresis = 389;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 556;\n t.ecaron = 444;\n t.Ydieresis = 722;\n t.divide = 570;\n t.Yacute = 722;\n t.Acircumflex = 722;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 747;\n t.Emacron = 667;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 667;\n t.Cacute = 722;\n t.atilde = 500;\n t.Edotaccent = 667;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 500;\n t.Amacron = 722;\n t.rcaron = 444;\n t.ccedilla = 444;\n t.Zdotaccent = 667;\n t.Thorn = 611;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 556;\n t.dcaron = 672;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 300;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 570;\n t.uacute = 556;\n t.Tcaron = 667;\n t.partialdiff = 494;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 389;\n t.plusminus = 570;\n t.brokenbar = 220;\n t.registered = 747;\n t.Gbreve = 778;\n t.Idotaccent = 389;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 444;\n t.omacron = 500;\n t.Zacute = 667;\n t.Zcaron = 667;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 416;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 444;\n t.zacute = 444;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 300;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 394;\n t.Kcommaaccent = 778;\n t.Lacute = 667;\n t.trademark = 1000;\n t.edotaccent = 444;\n t.Igrave = 389;\n t.Imacron = 389;\n t.Lcaron = 667;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 444;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 667;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 444;\n t.Ecaron = 667;\n t.Iogonek = 389;\n t.kcommaaccent = 556;\n t.minus = 570;\n t.Icircumflex = 389;\n t.ncaron = 556;\n t.tcommaaccent = 333;\n t.logicalnot = 570;\n t.odieresis = 500;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 444;\n t.ncommaaccent = 556;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n t[\"Times-BoldItalic\"] = (0, _core_utils.getLookupTableFactory)(function (t) {\n t.space = 250;\n t.exclam = 389;\n t.quotedbl = 555;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 570;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 570;\n t.equal = 570;\n t.greater = 570;\n t.question = 500;\n t.at = 832;\n t.A = 667;\n t.B = 667;\n t.C = 667;\n t.D = 722;\n t.E = 667;\n t.F = 667;\n t.G = 722;\n t.H = 778;\n t.I = 389;\n t.J = 500;\n t.K = 667;\n t.L = 611;\n t.M = 889;\n t.N = 722;\n t.O = 722;\n t.P = 611;\n t.Q = 722;\n t.R = 667;\n t.S = 556;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 889;\n t.X = 667;\n t.Y = 611;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 570;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 556;\n t.i = 278;\n t.j = 278;\n t.k = 500;\n t.l = 278;\n t.m = 778;\n t.n = 556;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 389;\n t.s = 389;\n t.t = 278;\n t.u = 556;\n t.v = 444;\n t.w = 667;\n t.x = 500;\n t.y = 444;\n t.z = 389;\n t.braceleft = 348;\n t.bar = 220;\n t.braceright = 348;\n t.asciitilde = 570;\n t.exclamdown = 389;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 278;\n t.quotedblleft = 500;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 500;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 944;\n t.ordfeminine = 266;\n t.Lslash = 611;\n t.Oslash = 722;\n t.OE = 944;\n t.ordmasculine = 300;\n t.ae = 722;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 500;\n t.Idieresis = 389;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 556;\n t.ecaron = 444;\n t.Ydieresis = 611;\n t.divide = 570;\n t.Yacute = 611;\n t.Acircumflex = 667;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 444;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 747;\n t.Emacron = 667;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 611;\n t.Cacute = 667;\n t.atilde = 500;\n t.Edotaccent = 667;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 667;\n t.Gcommaaccent = 722;\n t.ucircumflex = 556;\n t.acircumflex = 500;\n t.Amacron = 667;\n t.rcaron = 389;\n t.ccedilla = 444;\n t.Zdotaccent = 611;\n t.Thorn = 611;\n t.Omacron = 722;\n t.Racute = 667;\n t.Sacute = 556;\n t.dcaron = 608;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 570;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 444;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 389;\n t.plusminus = 570;\n t.brokenbar = 220;\n t.registered = 747;\n t.Gbreve = 722;\n t.Idotaccent = 389;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 500;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 366;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 444;\n t.zacute = 389;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 576;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 667;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 382;\n t.Kcommaaccent = 667;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 444;\n t.Igrave = 389;\n t.Imacron = 389;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 556;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 667;\n t.Lcommaaccent = 611;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 722;\n t.zdotaccent = 389;\n t.Ecaron = 667;\n t.Iogonek = 389;\n t.kcommaaccent = 500;\n t.minus = 606;\n t.Icircumflex = 389;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 606;\n t.odieresis = 500;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 389;\n t.ncommaaccent = 556;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n t[\"Times-Italic\"] = (0, _core_utils.getLookupTableFactory)(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 420;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 675;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 675;\n t.equal = 675;\n t.greater = 675;\n t.question = 500;\n t.at = 920;\n t.A = 611;\n t.B = 611;\n t.C = 667;\n t.D = 722;\n t.E = 611;\n t.F = 611;\n t.G = 722;\n t.H = 722;\n t.I = 333;\n t.J = 444;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 667;\n t.O = 722;\n t.P = 611;\n t.Q = 722;\n t.R = 611;\n t.S = 500;\n t.T = 556;\n t.U = 722;\n t.V = 611;\n t.W = 833;\n t.X = 611;\n t.Y = 556;\n t.Z = 556;\n t.bracketleft = 389;\n t.backslash = 278;\n t.bracketright = 389;\n t.asciicircum = 422;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 278;\n t.g = 500;\n t.h = 500;\n t.i = 278;\n t.j = 278;\n t.k = 444;\n t.l = 278;\n t.m = 722;\n t.n = 500;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 389;\n t.s = 389;\n t.t = 278;\n t.u = 500;\n t.v = 444;\n t.w = 667;\n t.x = 444;\n t.y = 444;\n t.z = 389;\n t.braceleft = 400;\n t.bar = 275;\n t.braceright = 400;\n t.asciitilde = 541;\n t.exclamdown = 389;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 214;\n t.quotedblleft = 556;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 523;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 556;\n t.quotedblright = 556;\n t.guillemotright = 500;\n t.ellipsis = 889;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 889;\n t.AE = 889;\n t.ordfeminine = 276;\n t.Lslash = 556;\n t.Oslash = 722;\n t.OE = 944;\n t.ordmasculine = 310;\n t.ae = 667;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 667;\n t.germandbls = 500;\n t.Idieresis = 333;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 500;\n t.ecaron = 444;\n t.Ydieresis = 556;\n t.divide = 675;\n t.Yacute = 556;\n t.Acircumflex = 611;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 444;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 500;\n t.Edieresis = 611;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 760;\n t.Emacron = 611;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 667;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 556;\n t.Cacute = 667;\n t.atilde = 500;\n t.Edotaccent = 611;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 611;\n t.Gcommaaccent = 722;\n t.ucircumflex = 500;\n t.acircumflex = 500;\n t.Amacron = 611;\n t.rcaron = 389;\n t.ccedilla = 444;\n t.Zdotaccent = 556;\n t.Thorn = 611;\n t.Omacron = 722;\n t.Racute = 611;\n t.Sacute = 500;\n t.dcaron = 544;\n t.Umacron = 722;\n t.uring = 500;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 611;\n t.Abreve = 611;\n t.multiply = 675;\n t.uacute = 500;\n t.Tcaron = 556;\n t.partialdiff = 476;\n t.ydieresis = 444;\n t.Nacute = 667;\n t.icircumflex = 278;\n t.Ecircumflex = 611;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 500;\n t.umacron = 500;\n t.Ncaron = 667;\n t.Iacute = 333;\n t.plusminus = 675;\n t.brokenbar = 275;\n t.registered = 760;\n t.Gbreve = 722;\n t.Idotaccent = 333;\n t.summation = 600;\n t.Egrave = 611;\n t.racute = 389;\n t.omacron = 500;\n t.Zacute = 556;\n t.Zcaron = 556;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 300;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 611;\n t.Adieresis = 611;\n t.egrave = 444;\n t.zacute = 389;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 500;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 611;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 500;\n t.lcaron = 300;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 980;\n t.edotaccent = 444;\n t.Igrave = 333;\n t.Imacron = 333;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 500;\n t.Uhungarumlaut = 722;\n t.Eacute = 611;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 500;\n t.Scommaaccent = 500;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 500;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 667;\n t.otilde = 500;\n t.Rcommaaccent = 611;\n t.Lcommaaccent = 556;\n t.Atilde = 611;\n t.Aogonek = 611;\n t.Aring = 611;\n t.Otilde = 722;\n t.zdotaccent = 389;\n t.Ecaron = 611;\n t.Iogonek = 333;\n t.kcommaaccent = 444;\n t.minus = 675;\n t.Icircumflex = 333;\n t.ncaron = 500;\n t.tcommaaccent = 278;\n t.logicalnot = 675;\n t.odieresis = 500;\n t.udieresis = 500;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 389;\n t.ncommaaccent = 500;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n t.ZapfDingbats = (0, _core_utils.getLookupTableFactory)(function (t) {\n t.space = 278;\n t.a1 = 974;\n t.a2 = 961;\n t.a202 = 974;\n t.a3 = 980;\n t.a4 = 719;\n t.a5 = 789;\n t.a119 = 790;\n t.a118 = 791;\n t.a117 = 690;\n t.a11 = 960;\n t.a12 = 939;\n t.a13 = 549;\n t.a14 = 855;\n t.a15 = 911;\n t.a16 = 933;\n t.a105 = 911;\n t.a17 = 945;\n t.a18 = 974;\n t.a19 = 755;\n t.a20 = 846;\n t.a21 = 762;\n t.a22 = 761;\n t.a23 = 571;\n t.a24 = 677;\n t.a25 = 763;\n t.a26 = 760;\n t.a27 = 759;\n t.a28 = 754;\n t.a6 = 494;\n t.a7 = 552;\n t.a8 = 537;\n t.a9 = 577;\n t.a10 = 692;\n t.a29 = 786;\n t.a30 = 788;\n t.a31 = 788;\n t.a32 = 790;\n t.a33 = 793;\n t.a34 = 794;\n t.a35 = 816;\n t.a36 = 823;\n t.a37 = 789;\n t.a38 = 841;\n t.a39 = 823;\n t.a40 = 833;\n t.a41 = 816;\n t.a42 = 831;\n t.a43 = 923;\n t.a44 = 744;\n t.a45 = 723;\n t.a46 = 749;\n t.a47 = 790;\n t.a48 = 792;\n t.a49 = 695;\n t.a50 = 776;\n t.a51 = 768;\n t.a52 = 792;\n t.a53 = 759;\n t.a54 = 707;\n t.a55 = 708;\n t.a56 = 682;\n t.a57 = 701;\n t.a58 = 826;\n t.a59 = 815;\n t.a60 = 789;\n t.a61 = 789;\n t.a62 = 707;\n t.a63 = 687;\n t.a64 = 696;\n t.a65 = 689;\n t.a66 = 786;\n t.a67 = 787;\n t.a68 = 713;\n t.a69 = 791;\n t.a70 = 785;\n t.a71 = 791;\n t.a72 = 873;\n t.a73 = 761;\n t.a74 = 762;\n t.a203 = 762;\n t.a75 = 759;\n t.a204 = 759;\n t.a76 = 892;\n t.a77 = 892;\n t.a78 = 788;\n t.a79 = 784;\n t.a81 = 438;\n t.a82 = 138;\n t.a83 = 277;\n t.a84 = 415;\n t.a97 = 392;\n t.a98 = 392;\n t.a99 = 668;\n t.a100 = 668;\n t.a89 = 390;\n t.a90 = 390;\n t.a93 = 317;\n t.a94 = 317;\n t.a91 = 276;\n t.a92 = 276;\n t.a205 = 509;\n t.a85 = 509;\n t.a206 = 410;\n t.a86 = 410;\n t.a87 = 234;\n t.a88 = 234;\n t.a95 = 334;\n t.a96 = 334;\n t.a101 = 732;\n t.a102 = 544;\n t.a103 = 544;\n t.a104 = 910;\n t.a106 = 667;\n t.a107 = 760;\n t.a108 = 760;\n t.a112 = 776;\n t.a111 = 595;\n t.a110 = 694;\n t.a109 = 626;\n t.a120 = 788;\n t.a121 = 788;\n t.a122 = 788;\n t.a123 = 788;\n t.a124 = 788;\n t.a125 = 788;\n t.a126 = 788;\n t.a127 = 788;\n t.a128 = 788;\n t.a129 = 788;\n t.a130 = 788;\n t.a131 = 788;\n t.a132 = 788;\n t.a133 = 788;\n t.a134 = 788;\n t.a135 = 788;\n t.a136 = 788;\n t.a137 = 788;\n t.a138 = 788;\n t.a139 = 788;\n t.a140 = 788;\n t.a141 = 788;\n t.a142 = 788;\n t.a143 = 788;\n t.a144 = 788;\n t.a145 = 788;\n t.a146 = 788;\n t.a147 = 788;\n t.a148 = 788;\n t.a149 = 788;\n t.a150 = 788;\n t.a151 = 788;\n t.a152 = 788;\n t.a153 = 788;\n t.a154 = 788;\n t.a155 = 788;\n t.a156 = 788;\n t.a157 = 788;\n t.a158 = 788;\n t.a159 = 788;\n t.a160 = 894;\n t.a161 = 838;\n t.a163 = 1016;\n t.a164 = 458;\n t.a196 = 748;\n t.a165 = 924;\n t.a192 = 748;\n t.a166 = 918;\n t.a167 = 927;\n t.a168 = 928;\n t.a169 = 928;\n t.a170 = 834;\n t.a171 = 873;\n t.a172 = 828;\n t.a173 = 924;\n t.a162 = 924;\n t.a174 = 917;\n t.a175 = 930;\n t.a176 = 931;\n t.a177 = 463;\n t.a178 = 883;\n t.a179 = 836;\n t.a193 = 836;\n t.a180 = 867;\n t.a199 = 867;\n t.a181 = 696;\n t.a200 = 696;\n t.a182 = 874;\n t.a201 = 874;\n t.a183 = 760;\n t.a184 = 946;\n t.a197 = 771;\n t.a185 = 865;\n t.a194 = 771;\n t.a198 = 888;\n t.a186 = 967;\n t.a195 = 888;\n t.a187 = 831;\n t.a188 = 873;\n t.a189 = 927;\n t.a190 = 970;\n t.a191 = 918;\n });\n});\nexports.getMetrics = getMetrics;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MurmurHash3_64 = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n\n update(input) {\n let data, length;\n\n if ((0, _util.isString)(input)) {\n data = new Uint8Array(input.length * 2);\n length = 0;\n\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if ((0, _util.isArrayBuffer)(input)) {\n data = input;\n length = data.byteLength;\n } else {\n throw new Error(\"Wrong data format in MurmurHash3_64_update. \" + \"Input must be a string or array.\");\n }\n\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n\n k1 = 0;\n\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n\n }\n\n this.h1 = h1;\n this.h2 = h2;\n }\n\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n const hex1 = (h1 >>> 0).toString(16),\n hex2 = (h2 >>> 0).toString(16);\n return hex1.padStart(8, \"0\") + hex2.padStart(8, \"0\");\n }\n\n}\n\nexports.MurmurHash3_64 = MurmurHash3_64;\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFImage = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _colorspace = __w_pdfjs_require__(23);\n\nvar _stream = __w_pdfjs_require__(12);\n\nvar _jpeg_stream = __w_pdfjs_require__(18);\n\nvar _jpx = __w_pdfjs_require__(21);\n\nfunction decodeAndClamp(value, addend, coefficient, max) {\n value = addend + value * coefficient;\n\n if (value < 0) {\n value = 0;\n } else if (value > max) {\n value = max;\n }\n\n return value;\n}\n\nfunction resizeImageMask(src, bpc, w1, h1, w2, h2) {\n var length = w2 * h2;\n let dest;\n\n if (bpc <= 8) {\n dest = new Uint8Array(length);\n } else if (bpc <= 16) {\n dest = new Uint16Array(length);\n } else {\n dest = new Uint32Array(length);\n }\n\n var xRatio = w1 / w2;\n var yRatio = h1 / h2;\n var i,\n j,\n py,\n newIndex = 0,\n oldIndex;\n var xScaled = new Uint16Array(w2);\n var w1Scanline = w1;\n\n for (i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio);\n }\n\n for (i = 0; i < h2; i++) {\n py = Math.floor(i * yRatio) * w1Scanline;\n\n for (j = 0; j < w2; j++) {\n oldIndex = py + xScaled[j];\n dest[newIndex++] = src[oldIndex];\n }\n }\n\n return dest;\n}\n\nclass PDFImage {\n constructor({\n xref,\n res,\n image,\n isInline = false,\n smask = null,\n mask = null,\n isMask = false,\n pdfFunctionFactory,\n localColorSpaceCache\n }) {\n this.image = image;\n var dict = image.dict;\n const filter = dict.get(\"Filter\");\n\n if ((0, _primitives.isName)(filter)) {\n switch (filter.name) {\n case \"JPXDecode\":\n var jpxImage = new _jpx.JpxImage();\n jpxImage.parseImageProperties(image.stream);\n image.stream.reset();\n image.width = jpxImage.width;\n image.height = jpxImage.height;\n image.bitsPerComponent = jpxImage.bitsPerComponent;\n image.numComps = jpxImage.componentsCount;\n break;\n\n case \"JBIG2Decode\":\n image.bitsPerComponent = 1;\n image.numComps = 1;\n break;\n }\n }\n\n let width = dict.get(\"Width\", \"W\");\n let height = dict.get(\"Height\", \"H\");\n\n if (Number.isInteger(image.width) && image.width > 0 && Number.isInteger(image.height) && image.height > 0 && (image.width !== width || image.height !== height)) {\n (0, _util.warn)(\"PDFImage - using the Width/Height of the image data, \" + \"rather than the image dictionary.\");\n width = image.width;\n height = image.height;\n }\n\n if (width < 1 || height < 1) {\n throw new _util.FormatError(`Invalid image width: ${width} or height: ${height}`);\n }\n\n this.width = width;\n this.height = height;\n this.interpolate = dict.get(\"Interpolate\", \"I\") || false;\n this.imageMask = dict.get(\"ImageMask\", \"IM\") || false;\n this.matte = dict.get(\"Matte\") || false;\n var bitsPerComponent = image.bitsPerComponent;\n\n if (!bitsPerComponent) {\n bitsPerComponent = dict.get(\"BitsPerComponent\", \"BPC\");\n\n if (!bitsPerComponent) {\n if (this.imageMask) {\n bitsPerComponent = 1;\n } else {\n throw new _util.FormatError(`Bits per component missing in image: ${this.imageMask}`);\n }\n }\n }\n\n this.bpc = bitsPerComponent;\n\n if (!this.imageMask) {\n let colorSpace = dict.getRaw(\"ColorSpace\") || dict.getRaw(\"CS\");\n\n if (!colorSpace) {\n (0, _util.info)(\"JPX images (which do not require color spaces)\");\n\n switch (image.numComps) {\n case 1:\n colorSpace = _primitives.Name.get(\"DeviceGray\");\n break;\n\n case 3:\n colorSpace = _primitives.Name.get(\"DeviceRGB\");\n break;\n\n case 4:\n colorSpace = _primitives.Name.get(\"DeviceCMYK\");\n break;\n\n default:\n throw new Error(`JPX images with ${image.numComps} ` + \"color components not supported.\");\n }\n }\n\n this.colorSpace = _colorspace.ColorSpace.parse({\n cs: colorSpace,\n xref,\n resources: isInline ? res : null,\n pdfFunctionFactory,\n localColorSpaceCache\n });\n this.numComps = this.colorSpace.numComps;\n }\n\n this.decode = dict.getArray(\"Decode\", \"D\");\n this.needsDecode = false;\n\n if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent) || isMask && !_colorspace.ColorSpace.isDefaultDecode(this.decode, 1))) {\n this.needsDecode = true;\n var max = (1 << bitsPerComponent) - 1;\n this.decodeCoefficients = [];\n this.decodeAddends = [];\n const isIndexed = this.colorSpace && this.colorSpace.name === \"Indexed\";\n\n for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n var dmin = this.decode[i];\n var dmax = this.decode[i + 1];\n this.decodeCoefficients[j] = isIndexed ? (dmax - dmin) / max : dmax - dmin;\n this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\n }\n }\n\n if (smask) {\n this.smask = new PDFImage({\n xref,\n res,\n image: smask,\n isInline,\n pdfFunctionFactory,\n localColorSpaceCache\n });\n } else if (mask) {\n if ((0, _primitives.isStream)(mask)) {\n var maskDict = mask.dict,\n imageMask = maskDict.get(\"ImageMask\", \"IM\");\n\n if (!imageMask) {\n (0, _util.warn)(\"Ignoring /Mask in image without /ImageMask.\");\n } else {\n this.mask = new PDFImage({\n xref,\n res,\n image: mask,\n isInline,\n isMask: true,\n pdfFunctionFactory,\n localColorSpaceCache\n });\n }\n } else {\n this.mask = mask;\n }\n }\n }\n\n static async buildImage({\n xref,\n res,\n image,\n isInline = false,\n pdfFunctionFactory,\n localColorSpaceCache\n }) {\n const imageData = image;\n let smaskData = null;\n let maskData = null;\n const smask = image.dict.get(\"SMask\");\n const mask = image.dict.get(\"Mask\");\n\n if (smask) {\n smaskData = smask;\n } else if (mask) {\n if ((0, _primitives.isStream)(mask) || Array.isArray(mask)) {\n maskData = mask;\n } else {\n (0, _util.warn)(\"Unsupported mask format.\");\n }\n }\n\n return new PDFImage({\n xref,\n res,\n image: imageData,\n isInline,\n smask: smaskData,\n mask: maskData,\n pdfFunctionFactory,\n localColorSpaceCache\n });\n }\n\n static createMask({\n imgArray,\n width,\n height,\n imageIsFromDecodeStream,\n inverseDecode\n }) {\n var computedLength = (width + 7 >> 3) * height;\n var actualLength = imgArray.byteLength;\n var haveFullData = computedLength === actualLength;\n var data, i;\n\n if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n data = imgArray;\n } else if (!inverseDecode) {\n data = new Uint8ClampedArray(actualLength);\n data.set(imgArray);\n } else {\n data = new Uint8ClampedArray(computedLength);\n data.set(imgArray);\n\n for (i = actualLength; i < computedLength; i++) {\n data[i] = 0xff;\n }\n }\n\n if (inverseDecode) {\n for (i = 0; i < actualLength; i++) {\n data[i] ^= 0xff;\n }\n }\n\n return {\n data,\n width,\n height\n };\n }\n\n get drawWidth() {\n return Math.max(this.width, this.smask && this.smask.width || 0, this.mask && this.mask.width || 0);\n }\n\n get drawHeight() {\n return Math.max(this.height, this.smask && this.smask.height || 0, this.mask && this.mask.height || 0);\n }\n\n decodeBuffer(buffer) {\n var bpc = this.bpc;\n var numComps = this.numComps;\n var decodeAddends = this.decodeAddends;\n var decodeCoefficients = this.decodeCoefficients;\n var max = (1 << bpc) - 1;\n var i, ii;\n\n if (bpc === 1) {\n for (i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] = +!buffer[i];\n }\n\n return;\n }\n\n var index = 0;\n\n for (i = 0, ii = this.width * this.height; i < ii; i++) {\n for (var j = 0; j < numComps; j++) {\n buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j], decodeCoefficients[j], max);\n index++;\n }\n }\n }\n\n getComponents(buffer) {\n var bpc = this.bpc;\n\n if (bpc === 8) {\n return buffer;\n }\n\n var width = this.width;\n var height = this.height;\n var numComps = this.numComps;\n var length = width * height * numComps;\n var bufferPos = 0;\n let output;\n\n if (bpc <= 8) {\n output = new Uint8Array(length);\n } else if (bpc <= 16) {\n output = new Uint16Array(length);\n } else {\n output = new Uint32Array(length);\n }\n\n var rowComps = width * numComps;\n var max = (1 << bpc) - 1;\n var i = 0,\n ii,\n buf;\n\n if (bpc === 1) {\n var mask, loop1End, loop2End;\n\n for (var j = 0; j < height; j++) {\n loop1End = i + (rowComps & ~7);\n loop2End = i + rowComps;\n\n while (i < loop1End) {\n buf = buffer[bufferPos++];\n output[i] = buf >> 7 & 1;\n output[i + 1] = buf >> 6 & 1;\n output[i + 2] = buf >> 5 & 1;\n output[i + 3] = buf >> 4 & 1;\n output[i + 4] = buf >> 3 & 1;\n output[i + 5] = buf >> 2 & 1;\n output[i + 6] = buf >> 1 & 1;\n output[i + 7] = buf & 1;\n i += 8;\n }\n\n if (i < loop2End) {\n buf = buffer[bufferPos++];\n mask = 128;\n\n while (i < loop2End) {\n output[i++] = +!!(buf & mask);\n mask >>= 1;\n }\n }\n }\n } else {\n var bits = 0;\n buf = 0;\n\n for (i = 0, ii = length; i < ii; ++i) {\n if (i % rowComps === 0) {\n buf = 0;\n bits = 0;\n }\n\n while (bits < bpc) {\n buf = buf << 8 | buffer[bufferPos++];\n bits += 8;\n }\n\n var remainingBits = bits - bpc;\n let value = buf >> remainingBits;\n\n if (value < 0) {\n value = 0;\n } else if (value > max) {\n value = max;\n }\n\n output[i] = value;\n buf = buf & (1 << remainingBits) - 1;\n bits = remainingBits;\n }\n }\n\n return output;\n }\n\n fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n var smask = this.smask;\n var mask = this.mask;\n var alphaBuf, sw, sh, i, ii, j;\n\n if (smask) {\n sw = smask.width;\n sh = smask.height;\n alphaBuf = new Uint8ClampedArray(sw * sh);\n smask.fillGrayBuffer(alphaBuf);\n\n if (sw !== width || sh !== height) {\n alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);\n }\n } else if (mask) {\n if (mask instanceof PDFImage) {\n sw = mask.width;\n sh = mask.height;\n alphaBuf = new Uint8ClampedArray(sw * sh);\n mask.numComps = 1;\n mask.fillGrayBuffer(alphaBuf);\n\n for (i = 0, ii = sw * sh; i < ii; ++i) {\n alphaBuf[i] = 255 - alphaBuf[i];\n }\n\n if (sw !== width || sh !== height) {\n alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);\n }\n } else if (Array.isArray(mask)) {\n alphaBuf = new Uint8ClampedArray(width * height);\n var numComps = this.numComps;\n\n for (i = 0, ii = width * height; i < ii; ++i) {\n var opacity = 0;\n var imageOffset = i * numComps;\n\n for (j = 0; j < numComps; ++j) {\n var color = image[imageOffset + j];\n var maskOffset = j * 2;\n\n if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {\n opacity = 255;\n break;\n }\n }\n\n alphaBuf[i] = opacity;\n }\n } else {\n throw new _util.FormatError(\"Unknown mask format.\");\n }\n }\n\n if (alphaBuf) {\n for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n rgbaBuf[j] = alphaBuf[i];\n }\n } else {\n for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n rgbaBuf[j] = 255;\n }\n }\n }\n\n undoPreblend(buffer, width, height) {\n var matte = this.smask && this.smask.matte;\n\n if (!matte) {\n return;\n }\n\n var matteRgb = this.colorSpace.getRgb(matte, 0);\n var matteR = matteRgb[0];\n var matteG = matteRgb[1];\n var matteB = matteRgb[2];\n var length = width * height * 4;\n\n for (var i = 0; i < length; i += 4) {\n var alpha = buffer[i + 3];\n\n if (alpha === 0) {\n buffer[i] = 255;\n buffer[i + 1] = 255;\n buffer[i + 2] = 255;\n continue;\n }\n\n var k = 255 / alpha;\n buffer[i] = (buffer[i] - matteR) * k + matteR;\n buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\n buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\n }\n }\n\n createImageData(forceRGBA = false) {\n var drawWidth = this.drawWidth;\n var drawHeight = this.drawHeight;\n var imgData = {\n width: drawWidth,\n height: drawHeight,\n kind: 0,\n data: null\n };\n var numComps = this.numComps;\n var originalWidth = this.width;\n var originalHeight = this.height;\n var bpc = this.bpc;\n var rowBytes = originalWidth * numComps * bpc + 7 >> 3;\n var imgArray;\n\n if (!forceRGBA) {\n var kind;\n\n if (this.colorSpace.name === \"DeviceGray\" && bpc === 1) {\n kind = _util.ImageKind.GRAYSCALE_1BPP;\n } else if (this.colorSpace.name === \"DeviceRGB\" && bpc === 8 && !this.needsDecode) {\n kind = _util.ImageKind.RGB_24BPP;\n }\n\n if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) {\n imgData.kind = kind;\n imgArray = this.getImageBytes(originalHeight * rowBytes);\n\n if (this.image instanceof _stream.DecodeStream) {\n imgData.data = imgArray;\n } else {\n var newArray = new Uint8ClampedArray(imgArray.length);\n newArray.set(imgArray);\n imgData.data = newArray;\n }\n\n if (this.needsDecode) {\n (0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP, \"PDFImage.createImageData: The image must be grayscale.\");\n var buffer = imgData.data;\n\n for (var i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] ^= 0xff;\n }\n }\n\n return imgData;\n }\n\n if (this.image instanceof _jpeg_stream.JpegStream && !this.smask && !this.mask) {\n let imageLength = originalHeight * rowBytes;\n\n switch (this.colorSpace.name) {\n case \"DeviceGray\":\n imageLength *= 3;\n\n case \"DeviceRGB\":\n case \"DeviceCMYK\":\n imgData.kind = _util.ImageKind.RGB_24BPP;\n imgData.data = this.getImageBytes(imageLength, drawWidth, drawHeight, true);\n return imgData;\n }\n }\n }\n\n imgArray = this.getImageBytes(originalHeight * rowBytes);\n var actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight;\n var comps = this.getComponents(imgArray);\n var alpha01, maybeUndoPreblend;\n\n if (!forceRGBA && !this.smask && !this.mask) {\n imgData.kind = _util.ImageKind.RGB_24BPP;\n imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n alpha01 = 0;\n maybeUndoPreblend = false;\n } else {\n imgData.kind = _util.ImageKind.RGBA_32BPP;\n imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n alpha01 = 1;\n maybeUndoPreblend = true;\n this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight, comps);\n }\n\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n\n this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight, drawWidth, drawHeight, actualHeight, bpc, comps, alpha01);\n\n if (maybeUndoPreblend) {\n this.undoPreblend(imgData.data, drawWidth, actualHeight);\n }\n\n return imgData;\n }\n\n fillGrayBuffer(buffer) {\n var numComps = this.numComps;\n\n if (numComps !== 1) {\n throw new _util.FormatError(`Reading gray scale from a color image: ${numComps}`);\n }\n\n var width = this.width;\n var height = this.height;\n var bpc = this.bpc;\n var rowBytes = width * numComps * bpc + 7 >> 3;\n var imgArray = this.getImageBytes(height * rowBytes);\n var comps = this.getComponents(imgArray);\n var i, length;\n\n if (bpc === 1) {\n length = width * height;\n\n if (this.needsDecode) {\n for (i = 0; i < length; ++i) {\n buffer[i] = comps[i] - 1 & 255;\n }\n } else {\n for (i = 0; i < length; ++i) {\n buffer[i] = -comps[i] & 255;\n }\n }\n\n return;\n }\n\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n\n length = width * height;\n var scale = 255 / ((1 << bpc) - 1);\n\n for (i = 0; i < length; ++i) {\n buffer[i] = scale * comps[i];\n }\n }\n\n getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {\n this.image.reset();\n this.image.drawWidth = drawWidth || this.width;\n this.image.drawHeight = drawHeight || this.height;\n this.image.forceRGB = !!forceRGB;\n return this.image.getBytes(length, true);\n }\n\n}\n\nexports.PDFImage = PDFImage;\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MessageHandler = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\n\nfunction wrapReason(reason) {\n if (typeof reason !== \"object\" || reason === null) {\n return reason;\n }\n\n switch (reason.name) {\n case \"AbortException\":\n return new _util.AbortException(reason.message);\n\n case \"MissingPDFException\":\n return new _util.MissingPDFException(reason.message);\n\n case \"UnexpectedResponseException\":\n return new _util.UnexpectedResponseException(reason.message, reason.status);\n\n case \"UnknownErrorException\":\n return new _util.UnknownErrorException(reason.message, reason.details);\n\n default:\n return new _util.UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.postMessageTransfers = true;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = event => {\n const data = event.data;\n\n if (data.targetName !== this.sourceName) {\n return;\n }\n\n if (data.stream) {\n this._processStreamMessage(data);\n\n return;\n }\n\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n\n delete this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n\n return;\n }\n\n const action = this.actionHandler[data.action];\n\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n\n if (data.streamId) {\n this._createStreamSink(data);\n\n return;\n }\n\n action(data.data);\n };\n\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n const ah = this.actionHandler;\n\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n\n ah[actionName] = handler;\n }\n\n send(actionName, data, transfers) {\n this._postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = (0, _util.createPromiseCapability)();\n this.callbackCapabilities[callbackId] = capability;\n\n try {\n this._postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n\n return capability.promise;\n }\n\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++;\n const sourceName = this.sourceName;\n const targetName = this.targetName;\n const comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = (0, _util.createPromiseCapability)();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n\n this._postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = (0, _util.createPromiseCapability)();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n (0, _util.assert)(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = (0, _util.createPromiseCapability)();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n\n _createStreamSink(data) {\n const self = this;\n const action = this.actionHandler[data.action];\n const streamId = data.streamId;\n const sourceName = this.sourceName;\n const targetName = data.sourceName;\n const comObj = this.comObj;\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = (0, _util.createPromiseCapability)();\n this.ready = this.sinkCapability.promise;\n }\n\n self._postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n (0, _util.assert)(reason instanceof Error, \"error must have a valid reason\");\n\n if (this.isCancelled) {\n return;\n }\n\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n\n sinkCapability: (0, _util.createPromiseCapability)(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n\n _processStreamMessage(data) {\n const streamId = data.streamId;\n const sourceName = this.sourceName;\n const targetName = data.sourceName;\n const comObj = this.comObj;\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n this.streamControllers[streamId].startCall.resolve();\n } else {\n this.streamControllers[streamId].startCall.reject(wrapReason(data.reason));\n }\n\n break;\n\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n this.streamControllers[streamId].pullCall.resolve();\n } else {\n this.streamControllers[streamId].pullCall.reject(wrapReason(data.reason));\n }\n\n break;\n\n case StreamKind.PULL:\n if (!this.streamSinks[streamId]) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n\n if (this.streamSinks[streamId].desiredSize <= 0 && data.desiredSize > 0) {\n this.streamSinks[streamId].sinkCapability.resolve();\n }\n\n this.streamSinks[streamId].desiredSize = data.desiredSize;\n const {\n onPull\n } = this.streamSinks[data.streamId];\n new Promise(function (resolve) {\n resolve(onPull && onPull());\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n\n case StreamKind.ENQUEUE:\n (0, _util.assert)(this.streamControllers[streamId], \"enqueue should have stream controller\");\n\n if (this.streamControllers[streamId].isClosed) {\n break;\n }\n\n this.streamControllers[streamId].controller.enqueue(data.chunk);\n break;\n\n case StreamKind.CLOSE:\n (0, _util.assert)(this.streamControllers[streamId], \"close should have stream controller\");\n\n if (this.streamControllers[streamId].isClosed) {\n break;\n }\n\n this.streamControllers[streamId].isClosed = true;\n this.streamControllers[streamId].controller.close();\n\n this._deleteStreamController(streamId);\n\n break;\n\n case StreamKind.ERROR:\n (0, _util.assert)(this.streamControllers[streamId], \"error should have stream controller\");\n this.streamControllers[streamId].controller.error(wrapReason(data.reason));\n\n this._deleteStreamController(streamId);\n\n break;\n\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n this.streamControllers[streamId].cancelCall.resolve();\n } else {\n this.streamControllers[streamId].cancelCall.reject(wrapReason(data.reason));\n }\n\n this._deleteStreamController(streamId);\n\n break;\n\n case StreamKind.CANCEL:\n if (!this.streamSinks[streamId]) {\n break;\n }\n\n const {\n onCancel\n } = this.streamSinks[data.streamId];\n new Promise(function (resolve) {\n resolve(onCancel && onCancel(wrapReason(data.reason)));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n this.streamSinks[streamId].sinkCapability.reject(wrapReason(data.reason));\n this.streamSinks[streamId].isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n async _deleteStreamController(streamId) {\n await Promise.allSettled([this.streamControllers[streamId].startCall, this.streamControllers[streamId].pullCall, this.streamControllers[streamId].cancelCall].map(function (capability) {\n return capability && capability.promise;\n }));\n delete this.streamControllers[streamId];\n }\n\n _postMessage(message, transfers) {\n if (transfers && this.postMessageTransfers) {\n this.comObj.postMessage(message, transfers);\n } else {\n this.comObj.postMessage(message);\n }\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n\n}\n\nexports.MessageHandler = MessageHandler;\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFWorkerStream = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nclass PDFWorkerStream {\n constructor(msgHandler) {\n this._msgHandler = msgHandler;\n this._contentLength = null;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFWorkerStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\n\n this._rangeRequestReaders.push(reader);\n\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n const readers = this._rangeRequestReaders.slice(0);\n\n readers.forEach(function (reader) {\n reader.cancel(reason);\n });\n }\n\n}\n\nexports.PDFWorkerStream = PDFWorkerStream;\n\nclass PDFWorkerStreamReader {\n constructor(msgHandler) {\n this._msgHandler = msgHandler;\n this.onProgress = null;\n this._contentLength = null;\n this._isRangeSupported = false;\n this._isStreamingSupported = false;\n\n const readableStream = this._msgHandler.sendWithStream(\"GetReader\");\n\n this._reader = readableStream.getReader();\n this._headersReady = this._msgHandler.sendWithPromise(\"ReaderHeadersReady\").then(data => {\n this._isStreamingSupported = data.isStreamingSupported;\n this._isRangeSupported = data.isRangeSupported;\n this._contentLength = data.contentLength;\n });\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n async read() {\n const {\n value,\n done\n } = await this._reader.read();\n\n if (done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n return {\n value: value.buffer,\n done: false\n };\n }\n\n cancel(reason) {\n this._reader.cancel(reason);\n }\n\n}\n\nclass PDFWorkerStreamRangeReader {\n constructor(begin, end, msgHandler) {\n this._msgHandler = msgHandler;\n this.onProgress = null;\n\n const readableStream = this._msgHandler.sendWithStream(\"GetRangeReader\", {\n begin,\n end\n });\n\n this._reader = readableStream.getReader();\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n const {\n value,\n done\n } = await this._reader.read();\n\n if (done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n return {\n value: value.buffer,\n done: false\n };\n }\n\n cancel(reason) {\n this._reader.cancel(reason);\n }\n\n}\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=pdf.worker.js.map","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(\n this.key('type').objid(),\n this.key('value').any()\n )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('parameters').optional(),\n this.key('curve').objid().optional()\n )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n })\n})\n\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(\n this.key('notBefore').use(Time),\n this.key('notAfter').use(Time)\n )\n})\n\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(\n this.key('extnID').objid(),\n this.key('critical').bool().def(false),\n this.key('extnValue').octstr()\n )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(\n this.key('version').explicit(0).int().optional(),\n this.key('serialNumber').int(),\n this.key('signature').use(AlgorithmIdentifier),\n this.key('issuer').use(Name),\n this.key('validity').use(Validity),\n this.key('subject').use(Name),\n this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n this.key('extensions').explicit(3).seqof(Extension).optional()\n )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(\n this.key('tbsCertificate').use(TBSCertificate),\n this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n this.key('signatureValue').bitstr()\n )\n})\n\nmodule.exports = X509Certificate\n","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","module.exports = require('events').EventEmitter;\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/*<replacement>*/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/*</replacement>*/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_vm._l((_vm.list),function(item,index){return [(item[_vm.replaceFields.children] && item[_vm.replaceFields.children].length > 0)?_c('van-collapse',{attrs:{\"border\":false},model:{value:(_vm.collapseActive),callback:function ($$v) {_vm.collapseActive=$$v},expression:\"collapseActive\"}},[_c('van-collapse-item',{attrs:{\"name\":index},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('a',{on:{\"click\":function($event){$event.stopPropagation();return _vm.menuClick(item[_vm.replaceFields.value])}}},[_vm._v(_vm._s(item[_vm.replaceFields.title]))])]},proxy:true}],null,true)},[_c('pdf-catalogue-menu',{attrs:{\"list\":item[_vm.replaceFields.children]},on:{\"click-menu\":_vm.menuClick}})],1)],1):_c('div',{staticClass:\"menu\",on:{\"click\":function($event){return _vm.menuClick(item[_vm.replaceFields.value])}}},[_vm._v(\"\\n \"+_vm._s(item[_vm.replaceFields.title])+\"\\n \")])]})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <template v-for=\"(item, index) in list\">\r\n <van-collapse v-model=\"collapseActive\" :border=\"false\" v-if=\"item[replaceFields.children] && item[replaceFields.children].length > 0\">\r\n <van-collapse-item :name=\"index\">\r\n <template #title>\r\n <a @click.stop=\"menuClick(item[replaceFields.value])\">{{ item[replaceFields.title] }}</a>\r\n </template>\r\n <pdf-catalogue-menu :list=\"item[replaceFields.children]\" @click-menu=\"menuClick\"/>\r\n </van-collapse-item>\r\n </van-collapse>\r\n <div class=\"menu\" @click=\"menuClick(item[replaceFields.value])\" v-else>\r\n {{ item[replaceFields.title] }}\r\n </div>\r\n </template>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n\r\nexport default {\r\n name: 'pdf-catalogue-menu',\r\n props: {\r\n list: {\r\n default: () => []\r\n },\r\n replaceFields: {\r\n default: () => ({\r\n children: 'items',\r\n title: 'title',\r\n key: 'title',\r\n value: 'dest',\r\n }),\r\n },\r\n },\r\n data() {\r\n return {\r\n collapseActive: [],\r\n }\r\n },\r\n methods: {\r\n menuClick(item) {\r\n this.$emit('click-menu', item);\r\n },\r\n },\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n\r\n.menu {\r\n width: 100%;\r\n color: #222222;\r\n font-size: 13px;\r\n line-height: 24px;\r\n padding: 10px 16px 10px 20px;\r\n box-sizing: border-box;\r\n border-bottom: 1px solid #F6F6F6;\r\n position: relative;\r\n}\r\n\r\n.van-collapse-item {\r\n border-bottom: 1px solid #F6F6F6;\r\n /*padding-left: 10px;*/\r\n}\r\n\r\n.van-collapse-item >>> .van-collapse-item__title {\r\n color: #222222 !important;\r\n font-size: 13px;\r\n padding-left: 20px;\r\n}\r\n\r\n.van-collapse-item.active >>> .van-collapse-item__title {\r\n color: #FF1010 !important;\r\n}\r\n\r\n.van-collapse-item--border::after {\r\n display: none;\r\n}\r\n\r\n.van-collapse-item >>> .van-cell__right-icon {\r\n width: 12px;\r\n height: 12px;\r\n position: absolute;\r\n top: calc(50% - 6px);\r\n left: 0px;\r\n font-size: 12px;\r\n transform: rotate(-90deg);\r\n margin: 0;\r\n}\r\n\r\n.van-collapse-item >>> .van-collapse-item__title--expanded .van-cell__right-icon::before {\r\n transform: rotate(180deg);\r\n}\r\n\r\n.van-collapse-item >>> .van-collapse-item__content {\r\n padding-bottom: 0;\r\n padding-top: 0;\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pdf-catalogue-menu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pdf-catalogue-menu.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./pdf-catalogue-menu.vue?vue&type=template&id=4911e6b7&scoped=true&\"\nimport script from \"./pdf-catalogue-menu.vue?vue&type=script&lang=js&\"\nexport * from \"./pdf-catalogue-menu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./pdf-catalogue-menu.vue?vue&type=style&index=0&id=4911e6b7&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4911e6b7\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('van-popup',{attrs:{\"position\":\"left\"},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},[_c('div',{staticClass:\"sidebar-window\"},[_c('p',{staticClass:\"sidebar-window-label\"},[_vm._v(\"目录\")]),_c('pdf-catalogue-menu',{attrs:{\"list\":_vm.list},on:{\"click-menu\":_vm.menuClick}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <van-popup v-model=\"value\" position=\"left\">\r\n <div class=\"sidebar-window\">\r\n <p class=\"sidebar-window-label\">目录</p>\r\n <pdf-catalogue-menu :list=\"list\" @click-menu=\"menuClick\"/>\r\n </div>\r\n </van-popup>\r\n</template>\r\n\r\n<script>\r\n\r\nimport PdfCatalogueMenu from \"@/components/pdf-catalogue-menu.vue\";\r\n\r\nexport default {\r\n components: {PdfCatalogueMenu},\r\n model: {\r\n prop: \"show\",\r\n event: \"show\"\r\n },\r\n props: {\r\n show: {\r\n default: false,\r\n },\r\n list: {\r\n default: () => [],\r\n },\r\n },\r\n computed: {\r\n value: {\r\n get() {\r\n return this.show;\r\n },\r\n set(val) {\r\n this.$emit(\"show\", val);\r\n }\r\n },\r\n },\r\n data() {\r\n return {\r\n }\r\n },\r\n methods: {\r\n menuClick(val) {\r\n this.$emit('click-menu', val);\r\n },\r\n },\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n\r\n.sidebar-window {\r\n width: calc(100vw - 65px);\r\n height: 100vh;\r\n z-index: 999;\r\n background-color: #FFFFFF;\r\n}\r\n\r\n.sidebar-window-label {\r\n width: 100%;\r\n height: 88px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: flex-end;\r\n padding-bottom: 10px;\r\n border-bottom: 1px solid #F6F6F6;\r\n box-sizing: border-box;\r\n color: #222222;\r\n font-size: 16px;\r\n font-weight: bold;\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pdf-catalogue.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pdf-catalogue.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./pdf-catalogue.vue?vue&type=template&id=6757c916&scoped=true&\"\nimport script from \"./pdf-catalogue.vue?vue&type=script&lang=js&\"\nexport * from \"./pdf-catalogue.vue?vue&type=script&lang=js&\"\nimport style0 from \"./pdf-catalogue.vue?vue&type=style&index=0&id=6757c916&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6757c916\",\n null\n \n)\n\nexport default component.exports","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pdf-catalogue-menu.vue?vue&type=style&index=0&id=4911e6b7&prod&scoped=true&lang=css&\"","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"home_wrap\"},[_c('button',{staticClass:\"catalogue-btn\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.showDrawer}},[_c('img',{attrs:{\"src\":require(\"../assets/icon-128.png\"),\"alt\":\"\"}}),_vm._v(\"\\n 目录\\n \")]),_c('pdf-catalogue',{attrs:{\"list\":_vm.gData},on:{\"click-menu\":_vm.handleSelect},model:{value:(_vm.visible),callback:function ($$v) {_vm.visible=$$v},expression:\"visible\"}}),_c('div',{ref:\"getheight\",class:{ 'loading-hide': _vm.loading },style:({ width: _vm.pdf_div_width, margin: '0 auto' }),attrs:{\"id\":\"scrollBox\"}},_vm._l((_vm.pdf_pages),function(page,index){return _c('div',{key:index,staticClass:\"canvas-box\"},[_c('canvas',{key:page,attrs:{\"id\":'the_canvas' + page}}),_c('div',{staticClass:\"ws\",style:({ fontSize: _vm.maxWidth / 40 + 'px' })},[_vm._v(\"\\n \"+_vm._s(_vm.userInfo.phone\n ? _vm.userInfo.phone.slice(0, 3) + \"****\" + _vm.userInfo.phone.slice(7)\n : _vm.watermarkText || \"搞一下\")+\"\\n \")])])}),0),(_vm.loading)?_c('div',{staticClass:\"loading\"},[_c('van-circle',{attrs:{\"rate\":_vm.currentRate,\"speed\":100,\"text\":_vm.currentRate + '%'},model:{value:(_vm.rate),callback:function ($$v) {_vm.rate=$$v},expression:\"rate\"}}),_c('van-loading',{staticStyle:{\"margin-top\":\"10px\"},attrs:{\"size\":\"24px\",\"color\":\"#0094ff\"}},[_vm._v(\"数据加载中...\")])],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"home_wrap\">\r\n <!-- <button class=\"show-catalogue\" @click=\"showDrawer\">目录</button> -->\r\n <button type=\"button\" class=\"catalogue-btn\" @click=\"showDrawer\">\r\n <img src=\"../assets/icon-128.png\" alt=\"\" />\r\n 目录\r\n </button>\r\n <pdf-catalogue v-model=\"visible\" :list=\"gData\" @click-menu=\"handleSelect\" />\r\n\r\n <div\r\n ref=\"getheight\"\r\n id=\"scrollBox\"\r\n :class=\"{ 'loading-hide': loading }\"\r\n :style=\"{ width: pdf_div_width, margin: '0 auto' }\"\r\n >\r\n <div v-for=\"(page, index) in pdf_pages\" :key=\"index\" class=\"canvas-box\">\r\n <canvas :id=\"'the_canvas' + page\" :key=\"page\"></canvas>\r\n <div class=\"ws\" :style=\"{ fontSize: maxWidth / 40 + 'px' }\">\r\n {{\r\n userInfo.phone\r\n ? userInfo.phone.slice(0, 3) + \"****\" + userInfo.phone.slice(7)\r\n : watermarkText || \"搞一下\"\r\n }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"loading\" v-if=\"loading\">\r\n <van-circle\r\n v-model=\"rate\"\r\n :rate=\"currentRate\"\r\n :speed=\"100\"\r\n :text=\"currentRate + '%'\"\r\n />\r\n <van-loading size=\"24px\" color=\"#0094ff\" style=\"margin-top: 10px\"\r\n >数据加载中...</van-loading\r\n >\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport PdfCatalogue from \"@/components/pdf-catalogue.vue\";\r\nimport watermark from \"@/common/watermark\";\r\nimport { Toast } from \"vant\";\r\nimport VConsole from \"vconsole\";\r\nimport Vue from \"vue\";\r\nimport { OSS_URL } from \"@/common/config\";\r\n\r\nlet PDFJS = require(\"pdfjs-dist\");\r\nPDFJS.GlobalWorkerOptions.workerSrc = require(\"pdfjs-dist/build/pdf.worker.entry.js\");\r\nrequire(\"../wasm/wasm_exec.js\");\r\nexport default {\r\n components: {\r\n PdfCatalogue,\r\n },\r\n props: {\r\n path: {\r\n default: \"\",\r\n },\r\n is_encrypt: {\r\n default: 1,\r\n },\r\n platform: {\r\n default: \"h5\",\r\n },\r\n watermarkText: {\r\n default: \"\",\r\n },\r\n },\r\n data() {\r\n return {\r\n expandedKeys: [],\r\n pageArr: [],\r\n gData: [],\r\n visible: false,\r\n placement: \"left\",\r\n pdf_scale: 1.0, //pdf放大系数\r\n pdf_pages: [],\r\n pdf_div_width: \"\",\r\n pdf_src: null,\r\n pdf_data: null,\r\n userInfo: {},\r\n loading: true,\r\n loadingEndSize: 0,\r\n rate: 10,\r\n currentRate: 0,\r\n maxWidth: 0,\r\n };\r\n },\r\n mounted() {\r\n try {\r\n this.userInfo = JSON.parse(localStorage.getItem(\"user_info\") || `{}`);\r\n } catch (e) {\r\n this.userInfo = {};\r\n }\r\n if (this.path) {\r\n this.currentRate = 5;\r\n this.waitWasm();\r\n }\r\n },\r\n methods: {\r\n handleSelect(b) {\r\n this.visible = false;\r\n let height = this.$refs.getheight.offsetHeight;\r\n let top = 0;\r\n // console.log(this.pageArr);\r\n for (let index = 1; index < this.pageArr.length; index++) {\r\n // console.log(this.pageArr[index].num , b.selectedNodes[0].data.props.dest[0].num);\r\n if (this.pageArr[index].num > b[0].num) {\r\n top = index;\r\n break;\r\n }\r\n }\r\n let offsetHeight =\r\n top * this.$refs.getheight.children[0].getBoundingClientRect().height;\r\n offsetHeight = (offsetHeight * b[0].num) / this.pageArr[top].num;\r\n\r\n window.scrollTo({\r\n top: offsetHeight + 2 * (top - 1),\r\n // behavior: 'smooth' // 滚动行为:smooth平滑滚动,instant瞬间滚动,默认值auto,等同于instant\r\n });\r\n console.log(height);\r\n console.log(this.pageArr[0]);\r\n },\r\n onClose() {\r\n this.visible = false;\r\n },\r\n showDrawer() {\r\n this.visible = true;\r\n },\r\n scaleD() {\r\n //放大\r\n let max = 0;\r\n if (window.screen.width > 1440) {\r\n max = 1.4;\r\n } else {\r\n max = 1.2;\r\n }\r\n if (this.pdf_scale >= max) {\r\n return;\r\n }\r\n this.pdf_scale = this.pdf_scale + 0.1;\r\n this._loadFile(this.pdf_data);\r\n },\r\n scaleX() {\r\n //缩小\r\n let min = 1.0;\r\n if (this.pdf_scale <= min) {\r\n return;\r\n }\r\n this.pdf_scale = this.pdf_scale - 0.1;\r\n this._loadFile(this.pdf_data);\r\n },\r\n // 加载wasm\r\n waitWasm() {\r\n if (parseInt(this.is_encrypt || 0) === 1) {\r\n const go = new Go();\r\n const that = this;\r\n WebAssembly.instantiateStreaming(\r\n // fetch(\"wasm/libgetpdf.wasm\"),\r\n // fetch('https://gaoyixia.oss-cn-hangzhou.aliyuncs.com/wenjian/libgetpdf.wasm'),\r\n fetch(\"https://gaoyixia.oss-cn-hangzhou.aliyuncs.com/libgetpdf.wasm\"),\r\n\r\n go.importObject\r\n ).then((result) => {\r\n go.run(result.instance);\r\n console.log(GetVersion());\r\n\r\n this.currentRate = 30;\r\n ReadPdf(this.path).then((pd) => {\r\n that.readPdfData(pd);\r\n });\r\n });\r\n } else {\r\n const path =\r\n this.path.indexOf(\"http\") > -1 ? this.path : OSS_URL + this.path;\r\n this.readPdfData(path);\r\n }\r\n },\r\n\r\n readPdfData(pdf_data) {\r\n this.pdf_data = pdf_data;\r\n this._loadFile(this.pdf_data);\r\n },\r\n\r\n _loadFile(pdf_data) {\r\n //初始化pdf\r\n let loadingTask;\r\n if (parseInt(this.is_encrypt || 0) === 1) {\r\n loadingTask = PDFJS.getDocument({\r\n data: pdf_data,\r\n });\r\n } else {\r\n // 未加密\r\n loadingTask = PDFJS.getDocument(pdf_data);\r\n }\r\n loadingTask.promise.then((pdf) => {\r\n this.pdfDoc = pdf;\r\n this.pdf_pages = this.pdfDoc.numPages;\r\n pdf.getOutline().then((r) => {\r\n console.log(\"dddd\");\r\n console.log(r);\r\n this.gData = r;\r\n if (r != null) {\r\n console.log(\"888888\");\r\n r.forEach((it) => {\r\n console.log(it);\r\n\r\n pdf\r\n .getPageIndex({\r\n ref: it.dest[0],\r\n })\r\n .then((vvv) => {\r\n console.log(vvv);\r\n });\r\n // $(\"#div\").html(it.title)\r\n });\r\n }\r\n });\r\n //debugger\r\n this.$nextTick(() => {\r\n this.currentRate = 50;\r\n this._renderPage(1);\r\n });\r\n });\r\n },\r\n _renderPage(num) {\r\n //渲染pdf页\r\n const that = this;\r\n this.pdfDoc.getPage(num).then((page) => {\r\n that.pageArr.push(page.ref);\r\n let canvas = document.getElementById(\"the_canvas\" + num);\r\n let ctx = canvas.getContext(\"2d\");\r\n let dpr = window.devicePixelRatio || 1;\r\n let bsr =\r\n ctx.webkitBackingStorePixelRatio ||\r\n ctx.mozBackingStorePixelRatio ||\r\n ctx.msBackingStorePixelRatio ||\r\n ctx.oBackingStorePixelRatio ||\r\n ctx.backingStorePixelRatio ||\r\n 1;\r\n let ratio = dpr / bsr;\r\n let viewport = page.getViewport({\r\n scale: this.pdf_scale,\r\n });\r\n\r\n canvas.width = viewport.width * ratio;\r\n canvas.height = viewport.height * ratio;\r\n\r\n // canvas.style.width = viewport.width + \"px\";\r\n\r\n // that.pdf_div_width = viewport.width + \"px\";\r\n\r\n // canvas.style.height = viewport.height + \"px\";\r\n\r\n canvas.style.width = \"100%\";\r\n canvas.style.maxWidth = viewport.width + \"px\";\r\n this.maxWidth = viewport.width;\r\n\r\n that.pdf_div_width = \"100%\";\r\n\r\n ctx.setTransform(ratio, 0, 0, ratio, 0, 0);\r\n let renderContext = {\r\n canvasContext: ctx,\r\n viewport: viewport,\r\n };\r\n page.render(renderContext).promise.then(() => {\r\n // 添加水印\r\n // ctx.rotate(-20 * Math.PI / 180); // 逆时针旋转π/9\r\n // ctx.font = `${20 * ratio}px Vedana`; // 设置字体\r\n // ctx.fillStyle = 'rgba(0, 0, 0, 0.20)'; // 设置字体的颜色\r\n // ctx.textAlign = 'center'; // 文本对齐方式\r\n // ctx.textBaseline = 'Middle'; // 文本基线\r\n // ctx.fillText(\r\n // `${this.watermarkText || this.userInfo.phone || '搞一下'}`,\r\n // 60 * ratio,\r\n // viewport.height * ratio / 3\r\n // ); // 绘制文字\r\n // 绘制加载进度\r\n this.loadingEndSize += 1;\r\n this.currentRate =\r\n 50 +\r\n parseFloat(\r\n ((this.loadingEndSize / this.pdf_pages) * 30).toFixed(0)\r\n );\r\n // console.log(this.loadingEndSize, this.pdf_pages, this.currentRate, new Date().getTime())\r\n if (this.loadingEndSize === this.pdf_pages) {\r\n setTimeout(() => {\r\n this.loading = false;\r\n try {\r\n if (this.platform === \"ios\") {\r\n loadFinished();\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n try {\r\n if (this.platform === \"ios\") {\r\n window.webkit.messageHandlers.loadFinished.postMessage(\r\n \"h5_pdf_view\"\r\n );\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }, 300);\r\n }\r\n if (this.pdf_pages > num) {\r\n setTimeout(() => {\r\n this._renderPage(num + 1);\r\n }, 10);\r\n }\r\n });\r\n });\r\n },\r\n },\r\n};\r\n</script>\r\n<style scoped>\r\n.home_wrap {\r\n width: 100%;\r\n min-height: 50vh;\r\n position: relative;\r\n}\r\n\r\n.home_wrap .show-catalogue {\r\n position: fixed !important;\r\n right: 0 !important;\r\n top: 20% !important;\r\n z-index: 99999999 !important;\r\n\r\n height: 20px;\r\n font-size: 14px;\r\n color: #ffffff;\r\n background: rgba(0, 0, 0, 0.5);\r\n display: flex;\r\n align-items: center;\r\n padding: 5px 10px;\r\n}\r\n\r\n.home_wrap .pdf_down {\r\n position: absolute;\r\n display: flex;\r\n z-index: 20;\r\n right: 26px;\r\n bottom: 7%;\r\n}\r\n\r\n.home_wrap .pdf_down .pdf_set_left {\r\n width: 30px;\r\n height: 40px;\r\n color: #408fff;\r\n font-size: 11px;\r\n padding-top: 25px;\r\n text-align: center;\r\n margin-right: 5px;\r\n cursor: pointer;\r\n}\r\n\r\n.home_wrap .pdf_down .pdf_set_middle {\r\n width: 30px;\r\n height: 40px;\r\n color: #408fff;\r\n font-size: 11px;\r\n padding-top: 25px;\r\n text-align: center;\r\n margin-right: 5px;\r\n cursor: pointer;\r\n}\r\n\r\n.position-phone {\r\n display: flex;\r\n align-items: center;\r\n position: fixed;\r\n top: 50%;\r\n left: 66.666666%;\r\n color: #ffffff;\r\n background: rgba(0, 0, 0, 0.5);\r\n border-radius: 2.5vw;\r\n height: 5vw;\r\n padding: 0 2vw;\r\n opacity: 0.8;\r\n font-size: 2.5vw;\r\n}\r\n\r\n#scrollBox {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n}\r\n\r\n.loading {\r\n width: 100%;\r\n height: 100%;\r\n background: #ffffff;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n z-index: 99;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\n.loading-hide {\r\n position: fixed;\r\n left: 200vw;\r\n top: 200vh;\r\n opacity: 0;\r\n}\r\n\r\n.catalogue-btn {\r\n color: #ffffff;\r\n font-size: 13px;\r\n font-weight: bold;\r\n width: 72px;\r\n height: 28px;\r\n background-color: #2a63f3;\r\n border-radius: 40px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n position: fixed;\r\n top: 70%;\r\n left: 12px;\r\n z-index: 999;\r\n}\r\n\r\n.catalogue-btn > img {\r\n width: 14px;\r\n margin-right: 3px;\r\n}\r\n\r\n.canvas-box {\r\n position: relative;\r\n}\r\n.ws {\r\n width: max-content;\r\n transform: translateX(-50%) rotateZ(315deg);\r\n color: rgba(0, 0, 0, 0.2);\r\n font-weight: bold;\r\n pointer-events: none;\r\n position: absolute;\r\n z-index: 9;\r\n top: 50%;\r\n left: 50%;\r\n}\r\n\r\n/*const fontSize = parseInt(canvasWrapper.style.width) / 12;*/\r\n/*var cover = document.createElement('div');*/\r\n/*cover.className = \"cover\";*/\r\n/*cover.style.height = fontSize + 'px';*/\r\n/*cover.style.lineHeight = fontSize + 'px';*/\r\n/*cover.style.position = 'absolute';*/\r\n/*cover.style.left = '50%';*/\r\n/*cover.style.top = `calc(50% - ${fontSize}px)`;*/\r\n/*cover.style.display = 'flex';*/\r\n/*cover.style.alignItems = 'center';*/\r\n/*cover.style.justifyContent = 'center';*/\r\n/*cover.style.transform = 'translateX(-50%)';*/\r\n/*cover.style.pointerEvents = 'none' // 取消所有事件*/\r\n/* let c = document.createElement('div')*/\r\n/*c.className = \"cover\"*/\r\n/*c.style.width = 'max-content';*/\r\n/*c.style.fontSize = fontSize + 'px';*/\r\n/*c.style.transform = \"rotateZ(315deg)\";*/\r\n/*c.style.color = \"rgba(0, 0, 0, 0.20)\";*/\r\n/*c.style.fontWeight = 'bold';*/\r\n/*c.innerText = watermarkText;*/\r\n/*c.style.pointerEvents = 'none' // 取消所有事件*/\r\n/* cover.appendChild(c);*/\r\n/*if (this.annotationLayer?.div) {*/\r\n/* div.insertBefore(textLayerDiv, this.annotationLayer.div);*/\r\n/* div.appendChild(cover);*/\r\n/*} else {*/\r\n/* div.appendChild(textLayerDiv);*/\r\n/* div.appendChild(cover);*/\r\n/* }*/\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pdf-view.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pdf-view.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./pdf-view.vue?vue&type=template&id=1245efad&scoped=true&\"\nimport script from \"./pdf-view.vue?vue&type=script&lang=js&\"\nexport * from \"./pdf-view.vue?vue&type=script&lang=js&\"\nimport style0 from \"./pdf-view.vue?vue&type=style&index=0&id=1245efad&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1245efad\",\n null\n \n)\n\nexport default component.exports","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\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\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","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n if (existingDescriptor = gOPD.f(receiver, propertyKey)) {\n if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n } else dP.f(receiver, propertyKey, createDesc(0, V));\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\n *\n * Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = root.pdfjsLib = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__w_pdfjs_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__w_pdfjs_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__w_pdfjs_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__w_pdfjs_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__w_pdfjs_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__w_pdfjs_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __w_pdfjs_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__w_pdfjs_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__w_pdfjs_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__w_pdfjs_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__w_pdfjs_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __w_pdfjs_require__(__w_pdfjs_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"addLinkAttributes\", {\n enumerable: true,\n get: function () {\n return _display_utils.addLinkAttributes;\n }\n});\nObject.defineProperty(exports, \"getFilenameFromUrl\", {\n enumerable: true,\n get: function () {\n return _display_utils.getFilenameFromUrl;\n }\n});\nObject.defineProperty(exports, \"LinkTarget\", {\n enumerable: true,\n get: function () {\n return _display_utils.LinkTarget;\n }\n});\nObject.defineProperty(exports, \"loadScript\", {\n enumerable: true,\n get: function () {\n return _display_utils.loadScript;\n }\n});\nObject.defineProperty(exports, \"PDFDateString\", {\n enumerable: true,\n get: function () {\n return _display_utils.PDFDateString;\n }\n});\nObject.defineProperty(exports, \"RenderingCancelledException\", {\n enumerable: true,\n get: function () {\n return _display_utils.RenderingCancelledException;\n }\n});\nObject.defineProperty(exports, \"build\", {\n enumerable: true,\n get: function () {\n return _api.build;\n }\n});\nObject.defineProperty(exports, \"getDocument\", {\n enumerable: true,\n get: function () {\n return _api.getDocument;\n }\n});\nObject.defineProperty(exports, \"LoopbackPort\", {\n enumerable: true,\n get: function () {\n return _api.LoopbackPort;\n }\n});\nObject.defineProperty(exports, \"PDFDataRangeTransport\", {\n enumerable: true,\n get: function () {\n return _api.PDFDataRangeTransport;\n }\n});\nObject.defineProperty(exports, \"PDFWorker\", {\n enumerable: true,\n get: function () {\n return _api.PDFWorker;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function () {\n return _api.version;\n }\n});\nObject.defineProperty(exports, \"CMapCompressionType\", {\n enumerable: true,\n get: function () {\n return _util.CMapCompressionType;\n }\n});\nObject.defineProperty(exports, \"createObjectURL\", {\n enumerable: true,\n get: function () {\n return _util.createObjectURL;\n }\n});\nObject.defineProperty(exports, \"createPromiseCapability\", {\n enumerable: true,\n get: function () {\n return _util.createPromiseCapability;\n }\n});\nObject.defineProperty(exports, \"createValidAbsoluteUrl\", {\n enumerable: true,\n get: function () {\n return _util.createValidAbsoluteUrl;\n }\n});\nObject.defineProperty(exports, \"InvalidPDFException\", {\n enumerable: true,\n get: function () {\n return _util.InvalidPDFException;\n }\n});\nObject.defineProperty(exports, \"MissingPDFException\", {\n enumerable: true,\n get: function () {\n return _util.MissingPDFException;\n }\n});\nObject.defineProperty(exports, \"OPS\", {\n enumerable: true,\n get: function () {\n return _util.OPS;\n }\n});\nObject.defineProperty(exports, \"PasswordResponses\", {\n enumerable: true,\n get: function () {\n return _util.PasswordResponses;\n }\n});\nObject.defineProperty(exports, \"PermissionFlag\", {\n enumerable: true,\n get: function () {\n return _util.PermissionFlag;\n }\n});\nObject.defineProperty(exports, \"removeNullCharacters\", {\n enumerable: true,\n get: function () {\n return _util.removeNullCharacters;\n }\n});\nObject.defineProperty(exports, \"shadow\", {\n enumerable: true,\n get: function () {\n return _util.shadow;\n }\n});\nObject.defineProperty(exports, \"UnexpectedResponseException\", {\n enumerable: true,\n get: function () {\n return _util.UnexpectedResponseException;\n }\n});\nObject.defineProperty(exports, \"UNSUPPORTED_FEATURES\", {\n enumerable: true,\n get: function () {\n return _util.UNSUPPORTED_FEATURES;\n }\n});\nObject.defineProperty(exports, \"Util\", {\n enumerable: true,\n get: function () {\n return _util.Util;\n }\n});\nObject.defineProperty(exports, \"VerbosityLevel\", {\n enumerable: true,\n get: function () {\n return _util.VerbosityLevel;\n }\n});\nObject.defineProperty(exports, \"AnnotationLayer\", {\n enumerable: true,\n get: function () {\n return _annotation_layer.AnnotationLayer;\n }\n});\nObject.defineProperty(exports, \"apiCompatibilityParams\", {\n enumerable: true,\n get: function () {\n return _api_compatibility.apiCompatibilityParams;\n }\n});\nObject.defineProperty(exports, \"GlobalWorkerOptions\", {\n enumerable: true,\n get: function () {\n return _worker_options.GlobalWorkerOptions;\n }\n});\nObject.defineProperty(exports, \"renderTextLayer\", {\n enumerable: true,\n get: function () {\n return _text_layer.renderTextLayer;\n }\n});\nObject.defineProperty(exports, \"SVGGraphics\", {\n enumerable: true,\n get: function () {\n return _svg.SVGGraphics;\n }\n});\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nvar _api = __w_pdfjs_require__(5);\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _annotation_layer = __w_pdfjs_require__(19);\n\nvar _api_compatibility = __w_pdfjs_require__(9);\n\nvar _worker_options = __w_pdfjs_require__(12);\n\nvar _text_layer = __w_pdfjs_require__(20);\n\nvar _svg = __w_pdfjs_require__(21);\n\nconst pdfjsVersion = '2.6.347';\nconst pdfjsBuild = '3be9c65f';\n{\n const {\n isNodeJS\n } = __w_pdfjs_require__(4);\n\n if (isNodeJS) {\n const PDFNodeStream = __w_pdfjs_require__(22).PDFNodeStream;\n\n (0, _api.setPDFNetworkStreamFactory)(params => {\n return new PDFNodeStream(params);\n });\n } else {\n const PDFNetworkStream = __w_pdfjs_require__(25).PDFNetworkStream;\n\n let PDFFetchStream;\n\n if ((0, _display_utils.isFetchSupported)()) {\n PDFFetchStream = __w_pdfjs_require__(26).PDFFetchStream;\n }\n\n (0, _api.setPDFNetworkStreamFactory)(params => {\n if (PDFFetchStream && (0, _display_utils.isValidFetchUrl)(params.url)) {\n return new PDFFetchStream(params);\n }\n\n return new PDFNetworkStream(params);\n });\n }\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addLinkAttributes = addLinkAttributes;\nexports.getFilenameFromUrl = getFilenameFromUrl;\nexports.isFetchSupported = isFetchSupported;\nexports.isValidFetchUrl = isValidFetchUrl;\nexports.loadScript = loadScript;\nexports.deprecated = deprecated;\nexports.PDFDateString = exports.StatTimer = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.BaseCMapReaderFactory = exports.DOMCanvasFactory = exports.BaseCanvasFactory = exports.DEFAULT_LINK_REL = exports.LinkTarget = exports.RenderingCancelledException = exports.PageViewport = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nconst DEFAULT_LINK_REL = \"noopener noreferrer nofollow\";\nexports.DEFAULT_LINK_REL = DEFAULT_LINK_REL;\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nclass BaseCanvasFactory {\n constructor() {\n if (this.constructor === BaseCanvasFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseCanvasFactory.\");\n }\n }\n\n create(width, height) {\n (0, _util.unreachable)(\"Abstract method `create` called.\");\n }\n\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n\n}\n\nexports.BaseCanvasFactory = BaseCanvasFactory;\n\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document\n } = {}) {\n super();\n this._document = ownerDocument;\n }\n\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n\n const canvas = this._document.createElement(\"canvas\");\n\n const context = canvas.getContext(\"2d\");\n canvas.width = width;\n canvas.height = height;\n return {\n canvas,\n context\n };\n }\n\n}\n\nexports.DOMCanvasFactory = DOMCanvasFactory;\n\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = false\n }) {\n if (this.constructor === BaseCMapReaderFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseCMapReaderFactory.\");\n }\n\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error('The CMap \"baseUrl\" parameter must be specified, ensure that ' + 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.');\n }\n\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;\n return this._fetchData(url, compressionType).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n\n _fetchData(url, compressionType) {\n (0, _util.unreachable)(\"Abstract method `_fetchData` called.\");\n }\n\n}\n\nexports.BaseCMapReaderFactory = BaseCMapReaderFactory;\n\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n if (isFetchSupported() && isValidFetchUrl(url, document.baseURI)) {\n return fetch(url).then(async response => {\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n\n let cMapData;\n\n if (this.isCompressed) {\n cMapData = new Uint8Array(await response.arrayBuffer());\n } else {\n cMapData = (0, _util.stringToBytes)(await response.text());\n }\n\n return {\n cMapData,\n compressionType\n };\n });\n }\n\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n\n if (this.isCompressed) {\n request.responseType = \"arraybuffer\";\n }\n\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n\n if (request.status === 200 || request.status === 0) {\n let cMapData;\n\n if (this.isCompressed && request.response) {\n cMapData = new Uint8Array(request.response);\n } else if (!this.isCompressed && request.responseText) {\n cMapData = (0, _util.stringToBytes)(request.responseText);\n }\n\n if (cMapData) {\n resolve({\n cMapData,\n compressionType\n });\n return;\n }\n }\n\n reject(new Error(request.statusText));\n };\n\n request.send(null);\n });\n }\n\n}\n\nexports.DOMCMapReaderFactory = DOMCMapReaderFactory;\n\nclass DOMSVGFactory {\n create(width, height) {\n (0, _util.assert)(width > 0 && height > 0, \"Invalid SVG dimensions\");\n const svg = document.createElementNS(SVG_NS, \"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"width\", width + \"px\");\n svg.setAttribute(\"height\", height + \"px\");\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", \"0 0 \" + width + \" \" + height);\n return svg;\n }\n\n createElement(type) {\n (0, _util.assert)(typeof type === \"string\", \"Invalid SVG element type\");\n return document.createElementNS(SVG_NS, type);\n }\n\n}\n\nexports.DOMSVGFactory = DOMSVGFactory;\n\nclass PageViewport {\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation = rotation % 360;\n rotation = rotation < 0 ? rotation + 360 : rotation;\n\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n }\n\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n\n convertToViewportPoint(x, y) {\n return _util.Util.applyTransform([x, y], this.transform);\n }\n\n convertToViewportRectangle(rect) {\n const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);\n\n const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);\n\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n\n convertToPdfPoint(x, y) {\n return _util.Util.applyInverseTransform([x, y], this.transform);\n }\n\n}\n\nexports.PageViewport = PageViewport;\n\nclass RenderingCancelledException extends _util.BaseException {\n constructor(msg, type) {\n super(msg);\n this.type = type;\n }\n\n}\n\nexports.RenderingCancelledException = RenderingCancelledException;\nconst LinkTarget = {\n NONE: 0,\n SELF: 1,\n BLANK: 2,\n PARENT: 3,\n TOP: 4\n};\nexports.LinkTarget = LinkTarget;\n\nfunction addLinkAttributes(link, {\n url,\n target,\n rel,\n enabled = true\n} = {}) {\n (0, _util.assert)(url && typeof url === \"string\", 'addLinkAttributes: A valid \"url\" parameter must provided.');\n const urlNullRemoved = (0, _util.removeNullCharacters)(url);\n\n if (enabled) {\n link.href = link.title = urlNullRemoved;\n } else {\n link.href = \"\";\n link.title = `Disabled: ${urlNullRemoved}`;\n\n link.onclick = () => {\n return false;\n };\n }\n\n let targetStr = \"\";\n\n switch (target) {\n case LinkTarget.NONE:\n break;\n\n case LinkTarget.SELF:\n targetStr = \"_self\";\n break;\n\n case LinkTarget.BLANK:\n targetStr = \"_blank\";\n break;\n\n case LinkTarget.PARENT:\n targetStr = \"_parent\";\n break;\n\n case LinkTarget.TOP:\n targetStr = \"_top\";\n break;\n }\n\n link.target = targetStr;\n link.rel = typeof rel === \"string\" ? rel : DEFAULT_LINK_REL;\n}\n\nfunction getFilenameFromUrl(url) {\n const anchor = url.indexOf(\"#\");\n const query = url.indexOf(\"?\");\n const end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);\n return url.substring(url.lastIndexOf(\"/\", end) + 1, end);\n}\n\nclass StatTimer {\n constructor() {\n this.started = Object.create(null);\n this.times = [];\n }\n\n time(name) {\n if (name in this.started) {\n (0, _util.warn)(`Timer is already running for ${name}`);\n }\n\n this.started[name] = Date.now();\n }\n\n timeEnd(name) {\n if (!(name in this.started)) {\n (0, _util.warn)(`Timer has not been started for ${name}`);\n }\n\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n\n toString() {\n const outBuf = [];\n let longest = 0;\n\n for (const time of this.times) {\n const name = time.name;\n\n if (name.length > longest) {\n longest = name.length;\n }\n }\n\n for (const time of this.times) {\n const duration = time.end - time.start;\n outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\\n`);\n }\n\n return outBuf.join(\"\");\n }\n\n}\n\nexports.StatTimer = StatTimer;\n\nfunction isFetchSupported() {\n return typeof fetch !== \"undefined\" && typeof Response !== \"undefined\" && \"body\" in Response.prototype && typeof ReadableStream !== \"undefined\";\n}\n\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const {\n protocol\n } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n return protocol === \"http:\" || protocol === \"https:\";\n } catch (ex) {\n return false;\n }\n}\n\nfunction loadScript(src) {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = src;\n script.onload = resolve;\n\n script.onerror = function () {\n reject(new Error(`Cannot load script at: ${script.src}`));\n };\n\n (document.head || document.documentElement).appendChild(script);\n });\n}\n\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\n\nlet pdfDateStringRegex;\n\nclass PDFDateString {\n static toDateObject(input) {\n if (!input || !(0, _util.isString)(input)) {\n return null;\n }\n\n if (!pdfDateStringRegex) {\n pdfDateStringRegex = new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n }\n\n const matches = pdfDateStringRegex.exec(input);\n\n if (!matches) {\n return null;\n }\n\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n\n}\n\nexports.PDFDateString = PDFDateString;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.arrayByteLength = arrayByteLength;\nexports.arraysToBytes = arraysToBytes;\nexports.assert = assert;\nexports.bytesToString = bytesToString;\nexports.createPromiseCapability = createPromiseCapability;\nexports.escapeString = escapeString;\nexports.getModificationDate = getModificationDate;\nexports.getVerbosityLevel = getVerbosityLevel;\nexports.info = info;\nexports.isArrayBuffer = isArrayBuffer;\nexports.isArrayEqual = isArrayEqual;\nexports.isBool = isBool;\nexports.isNum = isNum;\nexports.isString = isString;\nexports.isSameOrigin = isSameOrigin;\nexports.createValidAbsoluteUrl = createValidAbsoluteUrl;\nexports.removeNullCharacters = removeNullCharacters;\nexports.setVerbosityLevel = setVerbosityLevel;\nexports.shadow = shadow;\nexports.string32 = string32;\nexports.stringToBytes = stringToBytes;\nexports.stringToPDFString = stringToPDFString;\nexports.stringToUTF8String = stringToUTF8String;\nexports.utf8StringToString = utf8StringToString;\nexports.warn = warn;\nexports.unreachable = unreachable;\nexports.IsEvalSupportedCached = exports.IsLittleEndianCached = exports.createObjectURL = exports.FormatError = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.MissingPDFException = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = exports.BaseException = void 0;\n\n__w_pdfjs_require__(3);\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nexports.IDENTITY_MATRIX = IDENTITY_MATRIX;\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nexports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nexports.PermissionFlag = PermissionFlag;\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nexports.TextRenderingMode = TextRenderingMode;\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nexports.ImageKind = ImageKind;\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n};\nexports.AnnotationType = AnnotationType;\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\"\n};\nexports.AnnotationStateModelType = AnnotationStateModelType;\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\"\n};\nexports.AnnotationMarkedState = AnnotationMarkedState;\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\"\n};\nexports.AnnotationReviewState = AnnotationReviewState;\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nexports.AnnotationReplyType = AnnotationReplyType;\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nexports.AnnotationFlag = AnnotationFlag;\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nexports.AnnotationFieldFlag = AnnotationFieldFlag;\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nexports.AnnotationBorderStyleType = AnnotationBorderStyleType;\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\"\n};\nexports.StreamType = StreamType;\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\"\n};\nexports.FontType = FontType;\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nexports.VerbosityLevel = VerbosityLevel;\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2\n};\nexports.CMapCompressionType = CMapCompressionType;\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91\n};\nexports.OPS = OPS;\nconst UNSUPPORTED_FEATURES = {\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\"\n};\nexports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nexports.PasswordResponses = PasswordResponses;\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\nfunction isSameOrigin(baseUrl, otherUrl) {\n let base;\n\n try {\n base = new URL(baseUrl);\n\n if (!base.origin || base.origin === \"null\") {\n return false;\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n\n default:\n return false;\n }\n}\n\nfunction createValidAbsoluteUrl(url, baseUrl) {\n if (!url) {\n return null;\n }\n\n try {\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {}\n\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false\n });\n return value;\n}\n\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n\n this.message = message;\n this.name = this.constructor.name;\n }\n\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\n\nexports.BaseException = BaseException;\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg);\n this.code = code;\n }\n\n}\n\nexports.PasswordException = PasswordException;\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg);\n this.details = details;\n }\n\n}\n\nexports.UnknownErrorException = UnknownErrorException;\n\nclass InvalidPDFException extends BaseException {}\n\nexports.InvalidPDFException = InvalidPDFException;\n\nclass MissingPDFException extends BaseException {}\n\nexports.MissingPDFException = MissingPDFException;\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg);\n this.status = status;\n }\n\n}\n\nexports.UnexpectedResponseException = UnexpectedResponseException;\n\nclass FormatError extends BaseException {}\n\nexports.FormatError = FormatError;\n\nclass AbortException extends BaseException {}\n\nexports.AbortException = AbortException;\nconst NullCharactersRegExp = /\\x00/g;\n\nfunction removeNullCharacters(str) {\n if (typeof str !== \"string\") {\n warn(\"The argument for removeNullCharacters must be a string.\");\n return str;\n }\n\n return str.replace(NullCharactersRegExp, \"\");\n}\n\nfunction bytesToString(bytes) {\n assert(bytes !== null && typeof bytes === \"object\" && bytes.length !== undefined, \"Invalid argument for bytesToString\");\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n\n const strBuf = [];\n\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n assert(typeof str === \"string\", \"Invalid argument for stringToBytes\");\n const length = str.length;\n const bytes = new Uint8Array(length);\n\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n\n return bytes;\n}\n\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n\n assert(arr.byteLength !== undefined, \"arrayByteLength - invalid argument.\");\n return arr.byteLength;\n}\n\nfunction arraysToBytes(arr) {\n const length = arr.length;\n\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n\n let resultLength = 0;\n\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n\n let pos = 0;\n const data = new Uint8Array(resultLength);\n\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n\n return data;\n}\n\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\n\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\n\nconst IsLittleEndianCached = {\n get value() {\n return shadow(this, \"value\", isLittleEndian());\n }\n\n};\nexports.IsLittleEndianCached = IsLittleEndianCached;\n\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch (e) {\n return false;\n }\n}\n\nconst IsEvalSupportedCached = {\n get value() {\n return shadow(this, \"value\", isEvalSupported());\n }\n\n};\nexports.IsEvalSupportedCached = IsEvalSupportedCached;\nconst rgbBuf = [\"rgb(\", 0, \",\", 0, \",\", 0, \")\"];\n\nclass Util {\n static makeCssRgb(r, g, b) {\n rgbBuf[1] = r;\n rgbBuf[3] = g;\n rgbBuf[5] = b;\n return rgbBuf.join(\"\");\n }\n\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n\n static apply3dTransform(m, v) {\n return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]];\n }\n\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n static normalizeRect(rect) {\n const r = rect.slice(0);\n\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n\n return r;\n }\n\n static intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n const result = [];\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return null;\n }\n\n if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return null;\n }\n\n return result;\n }\n\n}\n\nexports.Util = Util;\nconst PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C, 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160, 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC];\n\nfunction stringToPDFString(str) {\n const length = str.length,\n strBuf = [];\n\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n for (let i = 2; i < length; i += 2) {\n strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1)));\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n for (let i = 2; i < length; i += 2) {\n strBuf.push(String.fromCharCode(str.charCodeAt(i + 1) << 8 | str.charCodeAt(i)));\n }\n } else {\n for (let i = 0; i < length; ++i) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n }\n\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n return str.replace(/([\\(\\)\\\\])/g, \"\\\\$1\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isBool(v) {\n return typeof v === \"boolean\";\n}\n\nfunction isNum(v) {\n return typeof v === \"number\";\n}\n\nfunction isString(v) {\n return typeof v === \"string\";\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n\n return arr1.every(function (element, index) {\n return element === arr2[index];\n });\n}\n\nfunction getModificationDate(date = new Date(Date.now())) {\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), (date.getUTCDate() + 1).toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\n\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n }\n\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nconst createObjectURL = function createObjectURLClosure() {\n const digits = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n return function createObjectURL(data, contentType, forceDataSchema = false) {\n if (!forceDataSchema && URL.createObjectURL) {\n const blob = new Blob([data], {\n type: contentType\n });\n return URL.createObjectURL(blob);\n }\n\n let buffer = `data:${contentType};base64,`;\n\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const b1 = data[i] & 0xff;\n const b2 = data[i + 1] & 0xff;\n const b3 = data[i + 2] & 0xff;\n const d1 = b1 >> 2,\n d2 = (b1 & 3) << 4 | b2 >> 4;\n const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;\n const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n\n return buffer;\n };\n}();\n\nexports.createObjectURL = createObjectURL;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _is_node = __w_pdfjs_require__(4);\n\n;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isNodeJS = void 0;\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nexports.isNodeJS = isNodeJS;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getDocument = getDocument;\nexports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;\nexports.build = exports.version = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nvar _font_loader = __w_pdfjs_require__(6);\n\nvar _node_utils = __w_pdfjs_require__(7);\n\nvar _annotation_storage = __w_pdfjs_require__(8);\n\nvar _api_compatibility = __w_pdfjs_require__(9);\n\nvar _canvas = __w_pdfjs_require__(10);\n\nvar _worker_options = __w_pdfjs_require__(12);\n\nvar _is_node = __w_pdfjs_require__(4);\n\nvar _message_handler = __w_pdfjs_require__(13);\n\nvar _metadata = __w_pdfjs_require__(14);\n\nvar _optional_content_config = __w_pdfjs_require__(16);\n\nvar _transport_stream = __w_pdfjs_require__(17);\n\nvar _webgl = __w_pdfjs_require__(18);\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536;\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nconst DefaultCanvasFactory = _is_node.isNodeJS ? _node_utils.NodeCanvasFactory : _display_utils.DOMCanvasFactory;\nconst DefaultCMapReaderFactory = _is_node.isNodeJS ? _node_utils.NodeCMapReaderFactory : _display_utils.DOMCMapReaderFactory;\nlet createPDFNetworkStream;\n\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\nfunction getDocument(src) {\n const task = new PDFDocumentLoadingTask();\n let source;\n\n if (typeof src === \"string\") {\n source = {\n url: src\n };\n } else if ((0, _util.isArrayBuffer)(src)) {\n source = {\n data: src\n };\n } else if (src instanceof PDFDataRangeTransport) {\n source = {\n range: src\n };\n } else {\n if (typeof src !== \"object\") {\n throw new Error(\"Invalid parameter in getDocument, \" + \"need either Uint8Array, string or a parameter object\");\n }\n\n if (!src.url && !src.data && !src.range) {\n throw new Error(\"Invalid parameter object: need either .data, .range or .url\");\n }\n\n source = src;\n }\n\n const params = Object.create(null);\n let rangeTransport = null,\n worker = null;\n\n for (const key in source) {\n if (key === \"url\" && typeof window !== \"undefined\") {\n params[key] = new URL(source[key], window.location).href;\n continue;\n } else if (key === \"range\") {\n rangeTransport = source[key];\n continue;\n } else if (key === \"worker\") {\n worker = source[key];\n continue;\n } else if (key === \"data\" && !(source[key] instanceof Uint8Array)) {\n const pdfBytes = source[key];\n\n if (typeof pdfBytes === \"string\") {\n params[key] = (0, _util.stringToBytes)(pdfBytes);\n } else if (typeof pdfBytes === \"object\" && pdfBytes !== null && !isNaN(pdfBytes.length)) {\n params[key] = new Uint8Array(pdfBytes);\n } else if ((0, _util.isArrayBuffer)(pdfBytes)) {\n params[key] = new Uint8Array(pdfBytes);\n } else {\n throw new Error(\"Invalid PDF binary data: either typed array, \" + \"string or array-like object is expected in the \" + \"data property.\");\n }\n\n continue;\n }\n\n params[key] = source[key];\n }\n\n params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;\n params.CMapReaderFactory = params.CMapReaderFactory || DefaultCMapReaderFactory;\n params.ignoreErrors = params.stopAtErrors !== true;\n params.fontExtraProperties = params.fontExtraProperties === true;\n params.pdfBug = params.pdfBug === true;\n\n if (!Number.isInteger(params.maxImageSize)) {\n params.maxImageSize = -1;\n }\n\n if (typeof params.isEvalSupported !== \"boolean\") {\n params.isEvalSupported = true;\n }\n\n if (typeof params.disableFontFace !== \"boolean\") {\n params.disableFontFace = _api_compatibility.apiCompatibilityParams.disableFontFace || false;\n }\n\n if (typeof params.ownerDocument === \"undefined\") {\n params.ownerDocument = globalThis.document;\n }\n\n if (typeof params.disableRange !== \"boolean\") {\n params.disableRange = false;\n }\n\n if (typeof params.disableStream !== \"boolean\") {\n params.disableStream = false;\n }\n\n if (typeof params.disableAutoFetch !== \"boolean\") {\n params.disableAutoFetch = false;\n }\n\n (0, _util.setVerbosityLevel)(params.verbosity);\n\n if (!worker) {\n const workerParams = {\n verbosity: params.verbosity,\n port: _worker_options.GlobalWorkerOptions.workerPort\n };\n worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n task._worker = worker;\n }\n\n const docId = task.docId;\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(worker, params, rangeTransport, docId);\n\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n\n if (rangeTransport) {\n networkStream = new _transport_stream.PDFDataTransportStream({\n length: params.length,\n initialData: params.initialData,\n progressiveDone: params.progressiveDone,\n disableRange: params.disableRange,\n disableStream: params.disableStream\n }, rangeTransport);\n } else if (!params.data) {\n networkStream = createPDFNetworkStream({\n url: params.url,\n length: params.length,\n httpHeaders: params.httpHeaders,\n withCredentials: params.withCredentials,\n rangeChunkSize: params.rangeChunkSize,\n disableRange: params.disableRange,\n disableStream: params.disableStream\n });\n }\n\n resolve(networkStream);\n });\n return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);\n messageHandler.postMessageTransfers = worker.postMessageTransfers;\n const transport = new WorkerTransport(messageHandler, task, networkStream, params);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\n\nfunction _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed\"));\n }\n\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n source.progressiveDone = pdfDataRangeTransport.progressiveDone;\n }\n\n return worker.messageHandler.sendWithPromise(\"GetDocRequest\", {\n docId,\n apiVersion: '2.6.347',\n source: {\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length\n },\n maxImageSize: source.maxImageSize,\n disableFontFace: source.disableFontFace,\n postMessageTransfers: worker.postMessageTransfers,\n docBaseUrl: source.docBaseUrl,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n fontExtraProperties: source.fontExtraProperties\n }).then(function (workerId) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n\n return workerId;\n });\n}\n\nconst PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() {\n let nextDocumentId = 0;\n\n class PDFDocumentLoadingTask {\n constructor() {\n this._capability = (0, _util.createPromiseCapability)();\n this._transport = null;\n this._worker = null;\n this.docId = \"d\" + nextDocumentId++;\n this.destroyed = false;\n this.onPassword = null;\n this.onProgress = null;\n this.onUnsupportedFeature = null;\n }\n\n get promise() {\n return this._capability.promise;\n }\n\n destroy() {\n this.destroyed = true;\n const transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy();\n return transportDestroyed.then(() => {\n this._transport = null;\n\n if (this._worker) {\n this._worker.destroy();\n\n this._worker = null;\n }\n });\n }\n\n }\n\n return PDFDocumentLoadingTask;\n}();\n\nclass PDFDataRangeTransport {\n constructor(length, initialData, progressiveDone = false) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = (0, _util.createPromiseCapability)();\n }\n\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n requestDataRange(begin, end) {\n (0, _util.unreachable)(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n\n}\n\nexports.PDFDataRangeTransport = PDFDataRangeTransport;\n\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n\n get annotationStorage() {\n return (0, _util.shadow)(this, \"annotationStorage\", new _annotation_storage.AnnotationStorage());\n }\n\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n get fingerprint() {\n return this._pdfInfo.fingerprint;\n }\n\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n\n getOutline() {\n return this._transport.getOutline();\n }\n\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n getData() {\n return this._transport.getData();\n }\n\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n getStats() {\n return this._transport.getStats();\n }\n\n cleanup() {\n return this._transport.startCleanup();\n }\n\n destroy() {\n return this.loadingTask.destroy();\n }\n\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n saveDocument(annotationStorage) {\n return this._transport.saveDocument(annotationStorage);\n }\n\n}\n\nexports.PDFDocumentProxy = PDFDocumentProxy;\n\nclass PDFPageProxy {\n constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._ownerDocument = ownerDocument;\n this._transport = transport;\n this._stats = pdfBug ? new _display_utils.StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this._intentStates = new Map();\n this.destroyed = false;\n }\n\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n get ref() {\n return this._pageInfo.ref;\n }\n\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n get view() {\n return this._pageInfo.view;\n }\n\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new _display_utils.PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n\n getAnnotations({\n intent = null\n } = {}) {\n if (!this.annotationsPromise || this.annotationsIntent !== intent) {\n this.annotationsPromise = this._transport.getAnnotations(this._pageIndex, intent);\n this.annotationsIntent = intent;\n }\n\n return this.annotationsPromise;\n }\n\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n enableWebGL = false,\n renderInteractiveForms = false,\n transform = null,\n imageLayer = null,\n canvasFactory = null,\n background = null,\n annotationStorage = null,\n optionalContentConfigPromise = null\n }) {\n if (this._stats) {\n this._stats.time(\"Overall\");\n }\n\n const renderingIntent = intent === \"print\" ? \"print\" : \"display\";\n this.pendingCleanup = false;\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n let intentState = this._intentStates.get(renderingIntent);\n\n if (!intentState) {\n intentState = Object.create(null);\n\n this._intentStates.set(renderingIntent, intentState);\n }\n\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const canvasFactoryInstance = canvasFactory || new DefaultCanvasFactory({\n ownerDocument: this._ownerDocument\n });\n const webGLContext = new _webgl.WebGLContext({\n enable: enableWebGL\n });\n\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = (0, _util.createPromiseCapability)();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n\n this._pumpOperatorList({\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n renderInteractiveForms: renderInteractiveForms === true,\n annotationStorage: annotationStorage && annotationStorage.getAll() || null\n });\n }\n\n const complete = error => {\n const i = intentState.renderTasks.indexOf(internalRenderTask);\n\n if (i >= 0) {\n intentState.renderTasks.splice(i, 1);\n }\n\n if (this.cleanupAfterRender || renderingIntent === \"print\") {\n this.pendingCleanup = true;\n }\n\n this._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n\n this._stats.timeEnd(\"Overall\");\n }\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: canvasFactoryInstance,\n webGLContext,\n useRequestAnimationFrame: renderingIntent !== \"print\",\n pdfBug: this._pdfBug\n });\n\n if (!intentState.renderTasks) {\n intentState.renderTasks = [];\n }\n\n intentState.renderTasks.push(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.pendingCleanup) {\n complete();\n return;\n }\n\n if (this._stats) {\n this._stats.time(\"Rendering\");\n }\n\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n\n getOperatorList() {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n const i = intentState.renderTasks.indexOf(opListTask);\n\n if (i >= 0) {\n intentState.renderTasks.splice(i, 1);\n }\n }\n }\n\n const renderingIntent = \"oplist\";\n\n let intentState = this._intentStates.get(renderingIntent);\n\n if (!intentState) {\n intentState = Object.create(null);\n\n this._intentStates.set(renderingIntent, intentState);\n }\n\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = (0, _util.createPromiseCapability)();\n intentState.renderTasks = [];\n intentState.renderTasks.push(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n\n this._pumpOperatorList({\n pageIndex: this._pageIndex,\n intent: renderingIntent\n });\n }\n\n return intentState.opListReadCapability.promise;\n }\n\n streamTextContent({\n normalizeWhitespace = false,\n disableCombineTextItems = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n normalizeWhitespace: normalizeWhitespace === true,\n combineTextItems: disableCombineTextItems !== true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n\n size(textContent) {\n return textContent.items.length;\n }\n\n });\n }\n\n getTextContent(params = {}) {\n const readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n resolve(textContent);\n return;\n }\n\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null)\n };\n pump();\n });\n }\n\n _destroy() {\n this.destroyed = true;\n this._transport.pageCache[this._pageIndex] = null;\n const waitOn = [];\n\n for (const [intent, intentState] of this._intentStates) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n\n if (intent === \"oplist\") {\n continue;\n }\n\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n\n this.objs.clear();\n this.annotationsPromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n }\n\n cleanup(resetStats = false) {\n this.pendingCleanup = true;\n return this._tryCleanup(resetStats);\n }\n\n _tryCleanup(resetStats = false) {\n if (!this.pendingCleanup) {\n return false;\n }\n\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.length !== 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n\n this._intentStates.clear();\n\n this.objs.clear();\n this.annotationsPromise = null;\n\n if (resetStats && this._stats) {\n this._stats = new _display_utils.StatTimer();\n }\n\n this.pendingCleanup = false;\n return true;\n }\n\n _startRenderPage(transparency, intent) {\n const intentState = this._intentStates.get(intent);\n\n if (!intentState) {\n return;\n }\n\n if (this._stats) {\n this._stats.timeEnd(\"Page Request\");\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n }\n\n _renderPageChunk(operatorListChunk, intentState) {\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n\n for (let i = 0; i < intentState.renderTasks.length; i++) {\n intentState.renderTasks[i].operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this._tryCleanup();\n }\n }\n\n _pumpOperatorList(args) {\n (0, _util.assert)(args.intent, 'PDFPageProxy._pumpOperatorList: Expected \"intent\" argument.');\n\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", args);\n\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(args.intent);\n\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n\n if (this._transport.destroyed) {\n return;\n }\n\n this._renderPageChunk(value, intentState);\n\n pump();\n }, reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return;\n }\n\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n\n for (let i = 0; i < intentState.renderTasks.length; i++) {\n intentState.renderTasks[i].operatorListChanged();\n }\n\n this._tryCleanup();\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n\n pump();\n }\n\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n (0, _util.assert)(reason instanceof Error || typeof reason === \"object\" && reason !== null, 'PDFPageProxy._abortOperatorList: Expected \"reason\" argument.');\n\n if (!intentState.streamReader) {\n return;\n }\n\n if (!force) {\n if (intentState.renderTasks.length !== 0) {\n return;\n }\n\n if (reason instanceof _display_utils.RenderingCancelledException) {\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n\n intentState.streamReaderCancelTimeout = null;\n }, RENDERING_CANCELLED_TIMEOUT);\n return;\n }\n }\n\n intentState.streamReader.cancel(new _util.AbortException(reason && reason.message));\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return;\n }\n\n for (const [intent, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(intent);\n\n break;\n }\n }\n\n this.cleanup();\n }\n\n get stats() {\n return this._stats;\n }\n\n}\n\nexports.PDFPageProxy = PDFPageProxy;\n\nclass LoopbackPort {\n constructor(defer = true) {\n this._listeners = [];\n this._defer = defer;\n this._deferred = Promise.resolve(undefined);\n }\n\n postMessage(obj, transfers) {\n function cloneValue(value) {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n\n if (cloned.has(value)) {\n return cloned.get(value);\n }\n\n let buffer, result;\n\n if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) {\n const transferable = transfers && transfers.includes(buffer);\n\n if (transferable) {\n result = new value.constructor(buffer, value.byteOffset, value.byteLength);\n } else {\n result = new value.constructor(value);\n }\n\n cloned.set(value, result);\n return result;\n }\n\n result = Array.isArray(value) ? [] : {};\n cloned.set(value, result);\n\n for (const i in value) {\n let desc,\n p = value;\n\n while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {\n p = Object.getPrototypeOf(p);\n }\n\n if (typeof desc.value === \"undefined\") {\n continue;\n }\n\n if (typeof desc.value === \"function\") {\n if (value.hasOwnProperty && value.hasOwnProperty(i)) {\n throw new Error(`LoopbackPort.postMessage - cannot clone: ${value[i]}`);\n }\n\n continue;\n }\n\n result[i] = cloneValue(desc.value);\n }\n\n return result;\n }\n\n if (!this._defer) {\n this._listeners.forEach(listener => {\n listener.call(this, {\n data: obj\n });\n });\n\n return;\n }\n\n const cloned = new WeakMap();\n const e = {\n data: cloneValue(obj)\n };\n\n this._deferred.then(() => {\n this._listeners.forEach(listener => {\n listener.call(this, e);\n });\n });\n }\n\n addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n\n removeEventListener(name, listener) {\n const i = this._listeners.indexOf(listener);\n\n this._listeners.splice(i, 1);\n }\n\n terminate() {\n this._listeners.length = 0;\n }\n\n}\n\nexports.LoopbackPort = LoopbackPort;\n\nconst PDFWorker = function PDFWorkerClosure() {\n const pdfWorkerPorts = new WeakMap();\n let isWorkerDisabled = false;\n let fallbackWorkerSrc;\n let nextFakeWorkerId = 0;\n let fakeWorkerCapability;\n\n if (_is_node.isNodeJS && typeof require === \"function\") {\n isWorkerDisabled = true;\n fallbackWorkerSrc = \"./pdf.worker.js\";\n } else if (typeof document === \"object\" && \"currentScript\" in document) {\n const pdfjsFilePath = document.currentScript && document.currentScript.src;\n\n if (pdfjsFilePath) {\n fallbackWorkerSrc = pdfjsFilePath.replace(/(\\.(?:min\\.)?js)(\\?.*)?$/i, \".worker$1$2\");\n }\n }\n\n function getWorkerSrc() {\n if (_worker_options.GlobalWorkerOptions.workerSrc) {\n return _worker_options.GlobalWorkerOptions.workerSrc;\n }\n\n if (typeof fallbackWorkerSrc !== \"undefined\") {\n if (!_is_node.isNodeJS) {\n (0, _display_utils.deprecated)('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n return fallbackWorkerSrc;\n }\n\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n function getMainThreadWorkerMessageHandler() {\n let mainWorkerMessageHandler;\n\n try {\n mainWorkerMessageHandler = globalThis.pdfjsWorker && globalThis.pdfjsWorker.WorkerMessageHandler;\n } catch (ex) {}\n\n return mainWorkerMessageHandler || null;\n }\n\n function setupFakeWorkerGlobal() {\n if (fakeWorkerCapability) {\n return fakeWorkerCapability.promise;\n }\n\n fakeWorkerCapability = (0, _util.createPromiseCapability)();\n\n const loader = async function () {\n const mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();\n\n if (mainWorkerMessageHandler) {\n return mainWorkerMessageHandler;\n }\n\n if (_is_node.isNodeJS && typeof require === \"function\") {\n const worker = eval(\"require\")(getWorkerSrc());\n return worker.WorkerMessageHandler;\n }\n\n await (0, _display_utils.loadScript)(getWorkerSrc());\n return window.pdfjsWorker.WorkerMessageHandler;\n };\n\n loader().then(fakeWorkerCapability.resolve, fakeWorkerCapability.reject);\n return fakeWorkerCapability.promise;\n }\n\n function createCDNWrapper(url) {\n const wrapper = \"importScripts('\" + url + \"');\";\n return URL.createObjectURL(new Blob([wrapper]));\n }\n\n class PDFWorker {\n constructor({\n name = null,\n port = null,\n verbosity = (0, _util.getVerbosityLevel)()\n } = {}) {\n if (port && pdfWorkerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port\");\n }\n\n this.name = name;\n this.destroyed = false;\n this.postMessageTransfers = true;\n this.verbosity = verbosity;\n this._readyCapability = (0, _util.createPromiseCapability)();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n pdfWorkerPorts.set(port, this);\n\n this._initializeFromPort(port);\n\n return;\n }\n\n this._initialize();\n }\n\n get promise() {\n return this._readyCapability.promise;\n }\n\n get port() {\n return this._port;\n }\n\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new _message_handler.MessageHandler(\"main\", \"worker\", port);\n\n this._messageHandler.on(\"ready\", function () {});\n\n this._readyCapability.resolve();\n }\n\n _initialize() {\n if (typeof Worker !== \"undefined\" && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) {\n let workerSrc = getWorkerSrc();\n\n try {\n if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) {\n workerSrc = createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n\n const worker = new Worker(workerSrc);\n const messageHandler = new _message_handler.MessageHandler(\"main\", \"worker\", worker);\n\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n terminateEarly();\n }\n };\n\n worker.addEventListener(\"error\", onWorkerError);\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n\n if (!data.supportTransfers) {\n this.postMessageTransfers = false;\n }\n\n this._readyCapability.resolve();\n\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n } else {\n this._setupFakeWorker();\n\n messageHandler.destroy();\n worker.terminate();\n }\n });\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n\n try {\n sendTest();\n } catch (e) {\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array([this.postMessageTransfers ? 255 : 0]);\n\n try {\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n } catch (ex) {\n (0, _util.warn)(\"Cannot use postMessage transfers.\");\n testObj[0] = 0;\n messageHandler.send(\"test\", testObj);\n }\n };\n\n sendTest();\n return;\n } catch (e) {\n (0, _util.info)(\"The worker has been disabled.\");\n }\n }\n\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!isWorkerDisabled) {\n (0, _util.warn)(\"Setting up fake worker.\");\n isWorkerDisabled = true;\n }\n\n setupFakeWorkerGlobal().then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n\n return;\n }\n\n const port = new LoopbackPort();\n this._port = port;\n const id = \"fake\" + nextFakeWorkerId++;\n const workerHandler = new _message_handler.MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n const messageHandler = new _message_handler.MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n\n this._readyCapability.resolve();\n\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }).catch(reason => {\n this._readyCapability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n\n destroy() {\n this.destroyed = true;\n\n if (this._webWorker) {\n this._webWorker.terminate();\n\n this._webWorker = null;\n }\n\n pdfWorkerPorts.delete(this._port);\n this._port = null;\n\n if (this._messageHandler) {\n this._messageHandler.destroy();\n\n this._messageHandler = null;\n }\n }\n\n static fromPort(params) {\n if (!params || !params.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n\n if (pdfWorkerPorts.has(params.port)) {\n return pdfWorkerPorts.get(params.port);\n }\n\n return new PDFWorker(params);\n }\n\n static getWorkerSrc() {\n return getWorkerSrc();\n }\n\n }\n\n return PDFWorker;\n}();\n\nexports.PDFWorker = PDFWorker;\n\nclass WorkerTransport {\n constructor(messageHandler, loadingTask, networkStream, params) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new _font_loader.FontLoader({\n docId: loadingTask.docId,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n ownerDocument: params.ownerDocument\n });\n this._params = params;\n this.CMapReaderFactory = new params.CMapReaderFactory({\n baseUrl: params.cMapUrl,\n isCompressed: params.cMapPacked\n });\n this.destroyed = false;\n this.destroyCapability = null;\n this._passwordCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.pageCache = [];\n this.pagePromises = [];\n this.downloadInfoCapability = (0, _util.createPromiseCapability)();\n this.setupMessageHandler();\n }\n\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n\n this.destroyed = true;\n this.destroyCapability = (0, _util.createPromiseCapability)();\n\n if (this._passwordCapability) {\n this._passwordCapability.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n }\n\n const waitOn = [];\n this.pageCache.forEach(function (page) {\n if (page) {\n waitOn.push(page._destroy());\n }\n });\n this.pageCache.length = 0;\n this.pagePromises.length = 0;\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.fontLoader.clear();\n\n if (this._networkStream) {\n this._networkStream.cancelAllRequests(new _util.AbortException(\"Worker was terminated.\"));\n }\n\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n (0, _util.assert)(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n\n sink.onPull = () => {\n this._fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n\n (0, _util.assert)((0, _util.isArrayBuffer)(value), \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", data => {\n const headersCapability = (0, _util.createPromiseCapability)();\n const fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (this._lastProgress && loadingTask.onProgress) {\n loadingTask.onProgress(this._lastProgress);\n }\n\n fullReader.onProgress = evt => {\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n };\n }\n\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength\n });\n }, headersCapability.reject);\n return headersCapability.promise;\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n (0, _util.assert)(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n\n if (!rangeReader) {\n sink.close();\n return;\n }\n\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n\n (0, _util.assert)((0, _util.isArrayBuffer)(value), \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n\n switch (ex.name) {\n case \"PasswordException\":\n reason = new _util.PasswordException(ex.message, ex.code);\n break;\n\n case \"InvalidPDFException\":\n reason = new _util.InvalidPDFException(ex.message);\n break;\n\n case \"MissingPDFException\":\n reason = new _util.MissingPDFException(ex.message);\n break;\n\n case \"UnexpectedResponseException\":\n reason = new _util.UnexpectedResponseException(ex.message, ex.status);\n break;\n\n case \"UnknownErrorException\":\n reason = new _util.UnknownErrorException(ex.message, ex.details);\n break;\n }\n\n if (!(reason instanceof Error)) {\n const msg = \"DocException - expected a valid Error.\";\n (0, _util.warn)(msg);\n }\n\n loadingTask._capability.reject(reason);\n });\n messageHandler.on(\"PasswordRequest\", exception => {\n this._passwordCapability = (0, _util.createPromiseCapability)();\n\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n this._passwordCapability.resolve({\n password\n });\n };\n\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this._passwordCapability.reject(ex);\n }\n } else {\n this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));\n }\n\n return this._passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: data.length,\n total: data.length\n });\n }\n\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n\n const page = this.pageCache[data.pageIndex];\n\n page._startRenderPage(data.transparency, data.intent);\n });\n messageHandler.on(\"commonobj\", data => {\n if (this.destroyed) {\n return;\n }\n\n const [id, type, exportedData] = data;\n\n if (this.commonObjs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Font\":\n const params = this._params;\n\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n (0, _util.warn)(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n\n let fontRegistry = null;\n\n if (params.pdfBug && globalThis.FontInspector && globalThis.FontInspector.enabled) {\n fontRegistry = {\n registerFont(font, url) {\n globalThis.FontInspector.fontAdded(font, url);\n }\n\n };\n }\n\n const font = new _font_loader.FontFaceObject(exportedData, {\n isEvalSupported: params.isEvalSupported,\n disableFontFace: params.disableFontFace,\n ignoreErrors: params.ignoreErrors,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n fontRegistry\n });\n this.fontLoader.bind(font).catch(reason => {\n return messageHandler.sendWithPromise(\"FontFallback\", {\n id\n });\n }).finally(() => {\n if (!params.fontExtraProperties && font.data) {\n font.data = null;\n }\n\n this.commonObjs.resolve(id, font);\n });\n break;\n\n case \"FontPath\":\n case \"Image\":\n this.commonObjs.resolve(id, exportedData);\n break;\n\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n });\n messageHandler.on(\"obj\", data => {\n if (this.destroyed) {\n return undefined;\n }\n\n const [id, pageIndex, type, imageData] = data;\n const pageProxy = this.pageCache[pageIndex];\n\n if (pageProxy.objs.has(id)) {\n return undefined;\n }\n\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n const MAX_IMAGE_SIZE_TO_STORE = 8000000;\n\n if (imageData && \"data\" in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {\n pageProxy.cleanupAfterRender = true;\n }\n\n break;\n\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n\n return undefined;\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: data.loaded,\n total: data.total\n });\n }\n });\n messageHandler.on(\"UnsupportedFeature\", this._onUnsupportedFeature.bind(this));\n messageHandler.on(\"FetchBuiltInCMap\", (data, sink) => {\n if (this.destroyed) {\n sink.error(new Error(\"Worker was destroyed\"));\n return;\n }\n\n let fetched = false;\n\n sink.onPull = () => {\n if (fetched) {\n sink.close();\n return;\n }\n\n fetched = true;\n this.CMapReaderFactory.fetch(data).then(function (builtInCMap) {\n sink.enqueue(builtInCMap, 1, [builtInCMap.cMapData.buffer]);\n }).catch(function (reason) {\n sink.error(reason);\n });\n };\n });\n }\n\n _onUnsupportedFeature({\n featureId\n }) {\n if (this.destroyed) {\n return;\n }\n\n if (this.loadingTask.onUnsupportedFeature) {\n this.loadingTask.onUnsupportedFeature(featureId);\n }\n }\n\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request\"));\n }\n\n const pageIndex = pageNumber - 1;\n\n if (pageIndex in this.pagePromises) {\n return this.pagePromises[pageIndex];\n }\n\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.ownerDocument, this._params.pdfBug);\n this.pageCache[pageIndex] = page;\n return page;\n });\n this.pagePromises[pageIndex] = promise;\n return promise;\n }\n\n getPageIndex(ref) {\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n ref\n }).catch(function (reason) {\n return Promise.reject(new Error(reason));\n });\n }\n\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n\n saveDocument(annotationStorage) {\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n numPages: this._numPages,\n annotationStorage: annotationStorage && annotationStorage.getAll() || null,\n filename: this._fullReader ? this._fullReader.filename : null\n }).finally(() => {\n if (annotationStorage) {\n annotationStorage.resetModified();\n }\n });\n }\n\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n\n getJavaScript() {\n return this.messageHandler.sendWithPromise(\"GetJavaScript\", null);\n }\n\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n\n getOptionalContentConfig() {\n return this.messageHandler.sendWithPromise(\"GetOptionalContentConfig\", null).then(results => {\n return new _optional_content_config.OptionalContentConfig(results);\n });\n }\n\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n\n getMetadata() {\n return this.messageHandler.sendWithPromise(\"GetMetadata\", null).then(results => {\n return {\n info: results[0],\n metadata: results[1] ? new _metadata.Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader ? this._fullReader.filename : null\n };\n });\n }\n\n getStats() {\n return this.messageHandler.sendWithPromise(\"GetStats\", null);\n }\n\n startCleanup() {\n return this.messageHandler.sendWithPromise(\"Cleanup\", null).then(() => {\n for (let i = 0, ii = this.pageCache.length; i < ii; i++) {\n const page = this.pageCache[i];\n\n if (page) {\n const cleanupSuccessful = page.cleanup();\n\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${i + 1} is currently rendering.`);\n }\n }\n }\n\n this.commonObjs.clear();\n this.fontLoader.clear();\n });\n }\n\n get loadingParams() {\n const params = this._params;\n return (0, _util.shadow)(this, \"loadingParams\", {\n disableAutoFetch: params.disableAutoFetch,\n disableFontFace: params.disableFontFace\n });\n }\n\n}\n\nclass PDFObjects {\n constructor() {\n this._objs = Object.create(null);\n }\n\n _ensureObj(objId) {\n if (this._objs[objId]) {\n return this._objs[objId];\n }\n\n return this._objs[objId] = {\n capability: (0, _util.createPromiseCapability)(),\n data: null,\n resolved: false\n };\n }\n\n get(objId, callback = null) {\n if (callback) {\n this._ensureObj(objId).capability.promise.then(callback);\n\n return null;\n }\n\n const obj = this._objs[objId];\n\n if (!obj || !obj.resolved) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n\n return obj.data;\n }\n\n has(objId) {\n const obj = this._objs[objId];\n return obj ? obj.resolved : false;\n }\n\n resolve(objId, data) {\n const obj = this._ensureObj(objId);\n\n obj.resolved = true;\n obj.data = data;\n obj.capability.resolve(data);\n }\n\n clear() {\n this._objs = Object.create(null);\n }\n\n}\n\nclass RenderTask {\n constructor(internalRenderTask) {\n this._internalRenderTask = internalRenderTask;\n this.onContinue = null;\n }\n\n get promise() {\n return this._internalRenderTask.capability.promise;\n }\n\n cancel() {\n this._internalRenderTask.cancel();\n }\n\n}\n\nconst InternalRenderTask = function InternalRenderTaskClosure() {\n const canvasInRendering = new WeakSet();\n\n class InternalRenderTask {\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n operatorList,\n pageIndex,\n canvasFactory,\n webGLContext,\n useRequestAnimationFrame = false,\n pdfBug = false\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.webGLContext = webGLContext;\n this._pdfBug = pdfBug;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = (0, _util.createPromiseCapability)();\n this.task = new RenderTask(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n\n if (this._canvas) {\n if (canvasInRendering.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n\n canvasInRendering.add(this._canvas);\n }\n\n if (this._pdfBug && globalThis.StepperManager && globalThis.StepperManager.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n\n const {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background\n } = this.params;\n this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext, imageLayer, optionalContentConfig);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n\n if (this.graphicsReadyCallback) {\n this.graphicsReadyCallback();\n }\n }\n\n cancel(error = null) {\n this.running = false;\n this.cancelled = true;\n\n if (this.gfx) {\n this.gfx.endDrawing();\n }\n\n if (this._canvas) {\n canvasInRendering.delete(this._canvas);\n }\n\n this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, \"canvas\"));\n }\n\n operatorListChanged() {\n if (!this.graphicsReady) {\n if (!this.graphicsReadyCallback) {\n this.graphicsReadyCallback = this._continueBound;\n }\n\n return;\n }\n\n if (this.stepper) {\n this.stepper.updateOperatorList(this.operatorList);\n }\n\n if (this.running) {\n return;\n }\n\n this._continue();\n }\n\n _continue() {\n this.running = true;\n\n if (this.cancelled) {\n return;\n }\n\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n window.requestAnimationFrame(() => {\n this._nextBound().catch(this.cancel.bind(this));\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this.cancel.bind(this));\n }\n }\n\n async _next() {\n if (this.cancelled) {\n return;\n }\n\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n\n if (this._canvas) {\n canvasInRendering.delete(this._canvas);\n }\n\n this.callback();\n }\n }\n }\n\n }\n\n return InternalRenderTask;\n}();\n\nconst version = '2.6.347';\nexports.version = version;\nconst build = '3be9c65f';\nexports.build = build;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FontLoader = exports.FontFaceObject = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nclass BaseFontLoader {\n constructor({\n docId,\n onUnsupportedFeature,\n ownerDocument = globalThis.document\n }) {\n if (this.constructor === BaseFontLoader) {\n (0, _util.unreachable)(\"Cannot initialize BaseFontLoader.\");\n }\n\n this.docId = docId;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this._document = ownerDocument;\n this.nativeFontFaces = [];\n this.styleElement = null;\n }\n\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.push(nativeFontFace);\n\n this._document.fonts.add(nativeFontFace);\n }\n\n insertRule(rule) {\n let styleElement = this.styleElement;\n\n if (!styleElement) {\n styleElement = this.styleElement = this._document.createElement(\"style\");\n styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`;\n\n this._document.documentElement.getElementsByTagName(\"head\")[0].appendChild(styleElement);\n }\n\n const styleSheet = styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n\n clear() {\n this.nativeFontFaces.forEach(nativeFontFace => {\n this._document.fonts.delete(nativeFontFace);\n });\n this.nativeFontFaces.length = 0;\n\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n\n async bind(font) {\n if (font.attached || font.missingFile) {\n return;\n }\n\n font.attached = true;\n\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n this._onUnsupportedFeature({\n featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadNative\n });\n\n (0, _util.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n\n return;\n }\n\n const rule = font.createFontFaceRule();\n\n if (rule) {\n this.insertRule(rule);\n\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n\n this._prepareFontLoadEvent([rule], [font], request);\n });\n }\n }\n\n _queueLoadingCallback(callback) {\n (0, _util.unreachable)(\"Abstract method `_queueLoadingCallback`.\");\n }\n\n get isFontLoadingAPISupported() {\n const supported = typeof this._document !== \"undefined\" && !!this._document.fonts;\n return (0, _util.shadow)(this, \"isFontLoadingAPISupported\", supported);\n }\n\n get isSyncFontLoadingSupported() {\n (0, _util.unreachable)(\"Abstract method `isSyncFontLoadingSupported`.\");\n }\n\n get _loadTestFont() {\n (0, _util.unreachable)(\"Abstract method `_loadTestFont`.\");\n }\n\n _prepareFontLoadEvent(rules, fontsToLoad, request) {\n (0, _util.unreachable)(\"Abstract method `_prepareFontLoadEvent`.\");\n }\n\n}\n\nlet FontLoader;\nexports.FontLoader = FontLoader;\n{\n exports.FontLoader = FontLoader = class GenericFontLoader extends BaseFontLoader {\n constructor(params) {\n super(params);\n this.loadingContext = {\n requests: [],\n nextRequestId: 0\n };\n this.loadTestFontId = 0;\n }\n\n get isSyncFontLoadingSupported() {\n let supported = false;\n\n if (typeof navigator === \"undefined\") {\n supported = true;\n } else {\n const m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(navigator.userAgent);\n\n if (m && m[1] >= 14) {\n supported = true;\n }\n }\n\n return (0, _util.shadow)(this, \"isSyncFontLoadingSupported\", supported);\n }\n\n _queueLoadingCallback(callback) {\n function completeRequest() {\n (0, _util.assert)(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n\n while (context.requests.length > 0 && context.requests[0].done) {\n const otherRequest = context.requests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n\n const context = this.loadingContext;\n const request = {\n id: `pdfjs-font-loading-${context.nextRequestId++}`,\n done: false,\n complete: completeRequest,\n callback\n };\n context.requests.push(request);\n return request;\n }\n\n get _loadTestFont() {\n const getLoadTestFont = function () {\n return atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n };\n\n return (0, _util.shadow)(this, \"_loadTestFont\", getLoadTestFont());\n }\n\n _prepareFontLoadEvent(rules, fonts, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n\n let i, ii;\n\n const canvas = this._document.createElement(\"canvas\");\n\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n\n function isFontReady(name, callback) {\n called++;\n\n if (called > 30) {\n (0, _util.warn)(\"Load test font never loaded.\");\n callback();\n return;\n }\n\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n\n setTimeout(isFontReady.bind(null, name, callback));\n }\n\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const names = [];\n\n for (i = 0, ii = fonts.length; i < ii; i++) {\n names.push(fonts[i].loadedName);\n }\n\n names.push(loadTestFontId);\n\n const div = this._document.createElement(\"div\");\n\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n\n for (i = 0, ii = names.length; i < ii; ++i) {\n const span = this._document.createElement(\"span\");\n\n span.textContent = \"Hi\";\n span.style.fontFamily = names[i];\n div.appendChild(span);\n }\n\n this._document.body.appendChild(div);\n\n isFontReady(loadTestFontId, () => {\n this._document.body.removeChild(div);\n\n request.complete();\n });\n }\n\n };\n}\n\nclass FontFaceObject {\n constructor(translatedData, {\n isEvalSupported = true,\n disableFontFace = false,\n ignoreErrors = false,\n onUnsupportedFeature = null,\n fontRegistry = null\n }) {\n this.compiledGlyphs = Object.create(null);\n\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n\n this.isEvalSupported = isEvalSupported !== false;\n this.disableFontFace = disableFontFace === true;\n this.ignoreErrors = ignoreErrors === true;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this.fontRegistry = fontRegistry;\n }\n\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n\n const nativeFontFace = new FontFace(this.loadedName, this.data, {});\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this);\n }\n\n return nativeFontFace;\n }\n\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n\n const data = (0, _util.bytesToString)(new Uint8Array(this.data));\n const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this, url);\n }\n\n return rule;\n }\n\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n\n let cmds, current;\n\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n if (!this.ignoreErrors) {\n throw ex;\n }\n\n if (this._onUnsupportedFeature) {\n this._onUnsupportedFeature({\n featureId: _util.UNSUPPORTED_FEATURES.errorFontGetPath\n });\n }\n\n (0, _util.warn)(`getPathGenerator - ignoring character: \"${ex}\".`);\n return this.compiledGlyphs[character] = function (c, size) {};\n }\n\n if (this.isEvalSupported && _util.IsEvalSupportedCached.value) {\n let args,\n js = \"\";\n\n for (let i = 0, ii = cmds.length; i < ii; i++) {\n current = cmds[i];\n\n if (current.args !== undefined) {\n args = current.args.join(\",\");\n } else {\n args = \"\";\n }\n\n js += \"c.\" + current.cmd + \"(\" + args + \");\\n\";\n }\n\n return this.compiledGlyphs[character] = new Function(\"c\", \"size\", js);\n }\n\n return this.compiledGlyphs[character] = function (c, size) {\n for (let i = 0, ii = cmds.length; i < ii; i++) {\n current = cmds[i];\n\n if (current.cmd === \"scale\") {\n current.args = [size, -size];\n }\n\n c[current.cmd].apply(c, current.args);\n }\n };\n }\n\n}\n\nexports.FontFaceObject = FontFaceObject;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NodeCMapReaderFactory = exports.NodeCanvasFactory = void 0;\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nvar _is_node = __w_pdfjs_require__(4);\n\nvar _util = __w_pdfjs_require__(2);\n\nlet NodeCanvasFactory = class {\n constructor() {\n (0, _util.unreachable)(\"Not implemented: NodeCanvasFactory\");\n }\n\n};\nexports.NodeCanvasFactory = NodeCanvasFactory;\nlet NodeCMapReaderFactory = class {\n constructor() {\n (0, _util.unreachable)(\"Not implemented: NodeCMapReaderFactory\");\n }\n\n};\nexports.NodeCMapReaderFactory = NodeCMapReaderFactory;\n\nif (_is_node.isNodeJS) {\n exports.NodeCanvasFactory = NodeCanvasFactory = class extends _display_utils.BaseCanvasFactory {\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n\n const Canvas = require(\"canvas\");\n\n const canvas = Canvas.createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\")\n };\n }\n\n };\n exports.NodeCMapReaderFactory = NodeCMapReaderFactory = class extends _display_utils.BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return new Promise((resolve, reject) => {\n const fs = require(\"fs\");\n\n fs.readFile(url, (error, data) => {\n if (error || !data) {\n reject(new Error(error));\n return;\n }\n\n resolve({\n cMapData: new Uint8Array(data),\n compressionType\n });\n });\n });\n }\n\n };\n}\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AnnotationStorage = void 0;\n\nclass AnnotationStorage {\n constructor() {\n this._storage = new Map();\n this._modified = false;\n this.onSetModified = null;\n this.onResetModified = null;\n }\n\n getOrCreateValue(key, defaultValue) {\n if (this._storage.has(key)) {\n return this._storage.get(key);\n }\n\n this._storage.set(key, defaultValue);\n\n return defaultValue;\n }\n\n setValue(key, value) {\n if (this._storage.get(key) !== value) {\n this._setModified();\n }\n\n this._storage.set(key, value);\n }\n\n getAll() {\n if (this._storage.size === 0) {\n return null;\n }\n\n return Object.fromEntries(this._storage);\n }\n\n get size() {\n return this._storage.size;\n }\n\n _setModified() {\n if (!this._modified) {\n this._modified = true;\n\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n\n resetModified() {\n if (this._modified) {\n this._modified = false;\n\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n\n}\n\nexports.AnnotationStorage = AnnotationStorage;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.apiCompatibilityParams = void 0;\n\nvar _is_node = __w_pdfjs_require__(4);\n\nconst compatibilityParams = Object.create(null);\n{\n (function checkFontFace() {\n if (_is_node.isNodeJS) {\n compatibilityParams.disableFontFace = true;\n }\n })();\n}\nconst apiCompatibilityParams = Object.freeze(compatibilityParams);\nexports.apiCompatibilityParams = apiCompatibilityParams;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CanvasGraphics = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _pattern_helper = __w_pdfjs_require__(11);\n\nvar MIN_FONT_SIZE = 16;\nvar MAX_FONT_SIZE = 100;\nvar MAX_GROUP_SIZE = 4096;\nvar MIN_WIDTH_FACTOR = 0.65;\nvar COMPILE_TYPE3_GLYPHS = true;\nvar MAX_SIZE_TO_COMPILE = 1000;\nvar FULL_CHUNK_HEIGHT = 16;\n\nfunction addContextCurrentTransform(ctx) {\n if (!ctx.mozCurrentTransform) {\n ctx._originalSave = ctx.save;\n ctx._originalRestore = ctx.restore;\n ctx._originalRotate = ctx.rotate;\n ctx._originalScale = ctx.scale;\n ctx._originalTranslate = ctx.translate;\n ctx._originalTransform = ctx.transform;\n ctx._originalSetTransform = ctx.setTransform;\n ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];\n ctx._transformStack = [];\n Object.defineProperty(ctx, \"mozCurrentTransform\", {\n get: function getCurrentTransform() {\n return this._transformMatrix;\n }\n });\n Object.defineProperty(ctx, \"mozCurrentTransformInverse\", {\n get: function getCurrentTransformInverse() {\n var m = this._transformMatrix;\n var a = m[0],\n b = m[1],\n c = m[2],\n d = m[3],\n e = m[4],\n f = m[5];\n var ad_bc = a * d - b * c;\n var bc_ad = b * c - a * d;\n return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc];\n }\n });\n\n ctx.save = function ctxSave() {\n var old = this._transformMatrix;\n\n this._transformStack.push(old);\n\n this._transformMatrix = old.slice(0, 6);\n\n this._originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n var prev = this._transformStack.pop();\n\n if (prev) {\n this._transformMatrix = prev;\n\n this._originalRestore();\n }\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n var m = this._transformMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n\n this._originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n var m = this._transformMatrix;\n m[0] = m[0] * x;\n m[1] = m[1] * x;\n m[2] = m[2] * y;\n m[3] = m[3] * y;\n\n this._originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n var m = this._transformMatrix;\n this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]];\n\n ctx._originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n this._transformMatrix = [a, b, c, d, e, f];\n\n ctx._originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.rotate = function ctxRotate(angle) {\n var cosValue = Math.cos(angle);\n var sinValue = Math.sin(angle);\n var m = this._transformMatrix;\n this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]];\n\n this._originalRotate(angle);\n };\n }\n}\n\nvar CachedCanvases = function CachedCanvasesClosure() {\n function CachedCanvases(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n\n CachedCanvases.prototype = {\n getCanvas: function CachedCanvases_getCanvas(id, width, height, trackTransform) {\n var canvasEntry;\n\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n\n if (trackTransform) {\n addContextCurrentTransform(canvasEntry.context);\n }\n\n return canvasEntry;\n },\n\n clear() {\n for (var id in this.cache) {\n var canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n\n };\n return CachedCanvases;\n}();\n\nfunction compileType3Glyph(imgData) {\n var POINT_TO_PROCESS_LIMIT = 1000;\n var width = imgData.width,\n height = imgData.height;\n var i,\n j,\n j0,\n width1 = width + 1;\n var points = new Uint8Array(width1 * (height + 1));\n var POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n var lineSize = width + 7 & ~7,\n data0 = imgData.data;\n var data = new Uint8Array(lineSize * height),\n pos = 0,\n ii;\n\n for (i = 0, ii = data0.length; i < ii; i++) {\n var mask = 128,\n elem = data0[i];\n\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n var count = 0;\n pos = 0;\n\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n\n pos++;\n }\n\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n\n var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n\n pos++;\n }\n\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n\n pos = lineSize * (height - 1);\n j0 = i * width1;\n\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n\n pos++;\n }\n\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n\n var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n var outlines = [];\n\n for (i = 0; count && i <= height; i++) {\n var p = i * width1;\n var end = p + width;\n\n while (p < end && !points[p]) {\n p++;\n }\n\n if (p === end) {\n continue;\n }\n\n var coords = [p % width1, i];\n var type = points[p],\n p0 = p,\n pp;\n\n do {\n var step = steps[type];\n\n do {\n p += step;\n } while (!points[p]);\n\n pp = points[p];\n\n if (pp !== 5 && pp !== 10) {\n type = pp;\n points[p] = 0;\n } else {\n type = pp & 0x33 * type >> 4;\n points[p] &= type >> 2 | type << 2;\n }\n\n coords.push(p % width1);\n coords.push(p / width1 | 0);\n\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n\n outlines.push(coords);\n --i;\n }\n\n var drawOutline = function (c) {\n c.save();\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.beginPath();\n\n for (let k = 0, kk = outlines.length; k < kk; k++) {\n var o = outlines[k];\n c.moveTo(o[0], o[1]);\n\n for (let l = 2, ll = o.length; l < ll; l += 2) {\n c.lineTo(o[l], o[l + 1]);\n }\n }\n\n c.fill();\n c.beginPath();\n c.restore();\n };\n\n return drawOutline;\n}\n\nvar CanvasExtraState = function CanvasExtraStateClosure() {\n function CanvasExtraState() {\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = _util.IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = _util.TextRenderingMode.FILL;\n this.textRise = 0;\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.resumeSMaskCtx = null;\n this.transferMaps = null;\n }\n\n CanvasExtraState.prototype = {\n clone: function CanvasExtraState_clone() {\n return Object.create(this);\n },\n setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n };\n return CanvasExtraState;\n}();\n\nvar CanvasGraphics = function CanvasGraphicsClosure() {\n var EXECUTION_TIME = 15;\n var EXECUTION_STEPS = 10;\n\n function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory, webGLContext, imageLayer, optionalContentConfig) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState();\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.webGLContext = webGLContext;\n this.imageLayer = imageLayer;\n this.groupStack = [];\n this.processingType3 = null;\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.contentVisible = true;\n this.markedContentStack = [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n\n if (canvasCtx) {\n addContextCurrentTransform(canvasCtx);\n }\n\n this._cachedGetSinglePixelWidth = null;\n }\n\n function putBinaryImageData(ctx, imgData, transferMaps = null) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n\n var height = imgData.height,\n width = imgData.width;\n var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n var srcPos = 0,\n destPos;\n var src = imgData.data;\n var dest = chunkImgData.data;\n var i, j, thisChunkHeight, elemsInThisChunk;\n let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray;\n\n if (transferMaps) {\n switch (transferMaps.length) {\n case 1:\n transferMapRed = transferMaps[0];\n transferMapGreen = transferMaps[0];\n transferMapBlue = transferMaps[0];\n transferMapGray = transferMaps[0];\n break;\n\n case 4:\n transferMapRed = transferMaps[0];\n transferMapGreen = transferMaps[1];\n transferMapBlue = transferMaps[2];\n transferMapGray = transferMaps[3];\n break;\n }\n }\n\n if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) {\n var srcLength = src.byteLength;\n var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n var dest32DataLength = dest32.length;\n var fullSrcDiff = width + 7 >> 3;\n var white = 0xffffffff;\n var black = _util.IsLittleEndianCached.value ? 0xff000000 : 0x000000ff;\n\n if (transferMapGray) {\n if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) {\n [white, black] = [black, white];\n }\n }\n\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n\n for (j = 0; j < thisChunkHeight; j++) {\n var srcDiff = srcLength - srcPos;\n let k = 0;\n var kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n var kEndUnrolled = kEnd & ~7;\n var mask = 0;\n var srcByte = 0;\n\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) {\n const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n\n if (hasTransferMaps) {\n for (let k = 0; k < elemsInThisChunk; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n\n if (hasTransferMaps) {\n for (let k = 0; k < elemsInThisChunk; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === _util.ImageKind.RGB_24BPP) {\n const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n\n destPos = 0;\n\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n\n if (hasTransferMaps) {\n for (let k = 0; k < destPos; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n }\n\n function putBinaryImageMask(ctx, imgData) {\n var height = imgData.height,\n width = imgData.width;\n var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n var srcPos = 0;\n var src = imgData.data;\n var dest = chunkImgData.data;\n\n for (var i = 0; i < totalChunks; i++) {\n var thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n var destPos = 3;\n\n for (var j = 0; j < thisChunkHeight; j++) {\n var mask = 0;\n\n for (var k = 0; k < width; k++) {\n if (!mask) {\n var elem = src[srcPos++];\n mask = 128;\n }\n\n dest[destPos] = elem & mask ? 0 : 255;\n destPos += 4;\n mask >>= 1;\n }\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n }\n\n function copyCtxState(sourceCtx, destCtx) {\n var properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\"];\n\n for (var i = 0, ii = properties.length; i < ii; i++) {\n var property = properties[i];\n\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n }\n\n function resetCtxToDefault(ctx) {\n ctx.strokeStyle = \"#000000\";\n ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n }\n\n function composeSMaskBackdrop(bytes, r0, g0, b0) {\n var length = bytes.length;\n\n for (var i = 3; i < length; i += 4) {\n var alpha = bytes[i];\n\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n var alpha_ = 255 - alpha;\n bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;\n bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;\n bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;\n }\n }\n }\n\n function composeSMaskAlpha(maskData, layerData, transferMap) {\n var length = maskData.length;\n var scale = 1 / 255;\n\n for (var i = 3; i < length; i += 4) {\n var alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = layerData[i] * alpha * scale | 0;\n }\n }\n\n function composeSMaskLuminosity(maskData, layerData, transferMap) {\n var length = maskData.length;\n\n for (var i = 3; i < length; i += 4) {\n var y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;\n layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;\n }\n }\n\n function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap) {\n var hasBackdrop = !!backdrop;\n var r0 = hasBackdrop ? backdrop[0] : 0;\n var g0 = hasBackdrop ? backdrop[1] : 0;\n var b0 = hasBackdrop ? backdrop[2] : 0;\n var composeFn;\n\n if (subtype === \"Luminosity\") {\n composeFn = composeSMaskLuminosity;\n } else {\n composeFn = composeSMaskAlpha;\n }\n\n var PIXELS_TO_PROCESS = 1048576;\n var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n\n for (var row = 0; row < height; row += chunkSize) {\n var chunkHeight = Math.min(chunkSize, height - row);\n var maskData = maskCtx.getImageData(0, row, width, chunkHeight);\n var layerData = layerCtx.getImageData(0, row, width, chunkHeight);\n\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n\n composeFn(maskData.data, layerData.data, transferMap);\n maskCtx.putImageData(layerData, 0, row);\n }\n }\n\n function composeSMask(ctx, smask, layerCtx, webGLContext) {\n var mask = smask.canvas;\n var maskCtx = smask.context;\n ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY);\n var backdrop = smask.backdrop || null;\n\n if (!smask.transferMap && webGLContext.isEnabled) {\n const composed = webGLContext.composeSMask({\n layer: layerCtx.canvas,\n mask,\n properties: {\n subtype: smask.subtype,\n backdrop\n }\n });\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(composed, smask.offsetX, smask.offsetY);\n return;\n }\n\n genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height, smask.subtype, backdrop, smask.transferMap);\n ctx.drawImage(mask, 0, 0);\n }\n\n var LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n var LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n var NORMAL_CLIP = {};\n var EO_CLIP = {};\n CanvasGraphics.prototype = {\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n var width = this.ctx.canvas.width;\n var height = this.ctx.canvas.height;\n this.ctx.save();\n this.ctx.fillStyle = background || \"rgb(255, 255, 255)\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.restore();\n\n if (transparency) {\n var transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height, true);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);\n }\n\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n\n if (transform) {\n this.ctx.transform.apply(this.ctx, transform);\n }\n\n this.ctx.transform.apply(this.ctx, viewport.transform);\n this.baseTransform = this.ctx.mozCurrentTransform.slice();\n\n if (this.imageLayer) {\n this.imageLayer.beginLayout();\n }\n },\n\n executeOperatorList: function CanvasGraphics_executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n var argsArray = operatorList.argsArray;\n var fnArray = operatorList.fnArray;\n var i = executionStartIdx || 0;\n var argsArrayLen = argsArray.length;\n\n if (argsArrayLen === i) {\n return i;\n }\n\n var chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n var steps = 0;\n var commonObjs = this.commonObjs;\n var objs = this.objs;\n var fnId;\n\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n\n fnId = fnArray[i];\n\n if (fnId !== _util.OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n\n i++;\n\n if (i === argsArrayLen) {\n return i;\n }\n\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n\n steps = 0;\n }\n }\n },\n endDrawing: function CanvasGraphics_endDrawing() {\n if (this.current.activeSMask !== null) {\n this.endSMaskGroup();\n }\n\n this.ctx.restore();\n\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n\n this.cachedCanvases.clear();\n this.webGLContext.clear();\n\n if (this.imageLayer) {\n this.imageLayer.endLayout();\n }\n },\n setLineWidth: function CanvasGraphics_setLineWidth(width) {\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n },\n setLineCap: function CanvasGraphics_setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n },\n setLineJoin: function CanvasGraphics_setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n },\n setMiterLimit: function CanvasGraphics_setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n },\n setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {\n var ctx = this.ctx;\n\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n },\n\n setRenderingIntent(intent) {},\n\n setFlatness(flatness) {},\n\n setGState: function CanvasGraphics_setGState(states) {\n for (var i = 0, ii = states.length; i < ii; i++) {\n var state = states[i];\n var key = state[0];\n var value = state[1];\n\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n\n case \"LC\":\n this.setLineCap(value);\n break;\n\n case \"LJ\":\n this.setLineJoin(value);\n break;\n\n case \"ML\":\n this.setMiterLimit(value);\n break;\n\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n\n case \"FL\":\n this.setFlatness(value);\n break;\n\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n\n case \"CA\":\n this.current.strokeAlpha = state[1];\n break;\n\n case \"ca\":\n this.current.fillAlpha = state[1];\n this.ctx.globalAlpha = state[1];\n break;\n\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n\n case \"SMask\":\n if (this.current.activeSMask) {\n if (this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1].activeSMask === this.current.activeSMask) {\n this.suspendSMaskGroup();\n } else {\n this.endSMaskGroup();\n }\n }\n\n this.current.activeSMask = value ? this.tempSMask : null;\n\n if (this.current.activeSMask) {\n this.beginSMaskGroup();\n }\n\n this.tempSMask = null;\n break;\n\n case \"TR\":\n this.current.transferMaps = value;\n }\n }\n },\n beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() {\n var activeSMask = this.current.activeSMask;\n var drawnWidth = activeSMask.canvas.width;\n var drawnHeight = activeSMask.canvas.height;\n var cacheId = \"smaskGroupAt\" + this.groupLevel;\n var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);\n var currentCtx = this.ctx;\n var currentTransform = currentCtx.mozCurrentTransform;\n this.ctx.save();\n var groupCtx = scratchCanvas.context;\n groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);\n groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse;\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n },\n suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n var groupCtx = this.ctx;\n this.groupLevel--;\n this.ctx = this.groupStack.pop();\n composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext);\n this.ctx.restore();\n this.ctx.save();\n copyCtxState(groupCtx, this.ctx);\n this.current.resumeSMaskCtx = groupCtx;\n\n var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);\n\n this.ctx.transform.apply(this.ctx, deltaTransform);\n groupCtx.save();\n groupCtx.setTransform(1, 0, 0, 1, 0, 0);\n groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);\n groupCtx.restore();\n },\n resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n var groupCtx = this.current.resumeSMaskCtx;\n var currentCtx = this.ctx;\n this.ctx = groupCtx;\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n },\n endSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n var groupCtx = this.ctx;\n this.groupLevel--;\n this.ctx = this.groupStack.pop();\n composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext);\n this.ctx.restore();\n copyCtxState(groupCtx, this.ctx);\n\n var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);\n\n this.ctx.transform.apply(this.ctx, deltaTransform);\n },\n save: function CanvasGraphics_save() {\n this.ctx.save();\n var old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n this.current.resumeSMaskCtx = null;\n },\n restore: function CanvasGraphics_restore() {\n if (this.current.resumeSMaskCtx) {\n this.resumeSMaskGroup();\n }\n\n if (this.current.activeSMask !== null && (this.stateStack.length === 0 || this.stateStack[this.stateStack.length - 1].activeSMask !== this.current.activeSMask)) {\n this.endSMaskGroup();\n }\n\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n this.ctx.restore();\n this.pendingClip = null;\n this._cachedGetSinglePixelWidth = null;\n }\n },\n transform: function CanvasGraphics_transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedGetSinglePixelWidth = null;\n },\n constructPath: function CanvasGraphics_constructPath(ops, args) {\n var ctx = this.ctx;\n var current = this.current;\n var x = current.x,\n y = current.y;\n\n for (var i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case _util.OPS.rectangle:\n x = args[j++];\n y = args[j++];\n var width = args[j++];\n var height = args[j++];\n\n if (width === 0 && ctx.lineWidth < this.getSinglePixelWidth()) {\n width = this.getSinglePixelWidth();\n }\n\n if (height === 0 && ctx.lineWidth < this.getSinglePixelWidth()) {\n height = this.getSinglePixelWidth();\n }\n\n var xw = x + width;\n var yh = y + height;\n ctx.moveTo(x, y);\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n ctx.lineTo(x, y);\n ctx.closePath();\n break;\n\n case _util.OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n break;\n\n case _util.OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n break;\n\n case _util.OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n j += 6;\n break;\n\n case _util.OPS.curveTo2:\n ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n\n case _util.OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n j += 4;\n break;\n\n case _util.OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n\n current.setCurrentPoint(x, y);\n },\n closePath: function CanvasGraphics_closePath() {\n this.ctx.closePath();\n },\n stroke: function CanvasGraphics_stroke(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n var ctx = this.ctx;\n var strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n\n if (this.contentVisible) {\n if (strokeColor && strokeColor.hasOwnProperty(\"type\") && strokeColor.type === \"Pattern\") {\n ctx.save();\n const transform = ctx.mozCurrentTransform;\n\n const scale = _util.Util.singularValueDecompose2dScale(transform)[0];\n\n ctx.strokeStyle = strokeColor.getPattern(ctx, this);\n ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth * scale);\n ctx.stroke();\n ctx.restore();\n } else {\n ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth);\n ctx.stroke();\n }\n }\n\n if (consumePath) {\n this.consumePath();\n }\n\n ctx.globalAlpha = this.current.fillAlpha;\n },\n closeStroke: function CanvasGraphics_closeStroke() {\n this.closePath();\n this.stroke();\n },\n fill: function CanvasGraphics_fill(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n var ctx = this.ctx;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n var needRestore = false;\n\n if (isPatternFill) {\n ctx.save();\n\n if (this.baseTransform) {\n ctx.setTransform.apply(ctx, this.baseTransform);\n }\n\n ctx.fillStyle = fillColor.getPattern(ctx, this);\n needRestore = true;\n }\n\n if (this.contentVisible) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n\n if (needRestore) {\n ctx.restore();\n }\n\n if (consumePath) {\n this.consumePath();\n }\n },\n eoFill: function CanvasGraphics_eoFill() {\n this.pendingEOFill = true;\n this.fill();\n },\n fillStroke: function CanvasGraphics_fillStroke() {\n this.fill(false);\n this.stroke(false);\n this.consumePath();\n },\n eoFillStroke: function CanvasGraphics_eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n },\n closeFillStroke: function CanvasGraphics_closeFillStroke() {\n this.closePath();\n this.fillStroke();\n },\n closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n },\n endPath: function CanvasGraphics_endPath() {\n this.consumePath();\n },\n clip: function CanvasGraphics_clip() {\n this.pendingClip = NORMAL_CLIP;\n },\n eoClip: function CanvasGraphics_eoClip() {\n this.pendingClip = EO_CLIP;\n },\n beginText: function CanvasGraphics_beginText() {\n this.current.textMatrix = _util.IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n },\n endText: function CanvasGraphics_endText() {\n var paths = this.pendingTextPaths;\n var ctx = this.ctx;\n\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n\n ctx.save();\n ctx.beginPath();\n\n for (var i = 0; i < paths.length; i++) {\n var path = paths[i];\n ctx.setTransform.apply(ctx, path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n },\n setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n },\n setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n },\n setHScale: function CanvasGraphics_setHScale(scale) {\n this.current.textHScale = scale / 100;\n },\n setLeading: function CanvasGraphics_setLeading(leading) {\n this.current.leading = -leading;\n },\n setFont: function CanvasGraphics_setFont(fontRefName, size) {\n var fontObj = this.commonObjs.get(fontRefName);\n var current = this.current;\n\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n\n current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;\n\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n (0, _util.warn)(\"Invalid font matrix for font \" + fontRefName);\n }\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n this.current.font = fontObj;\n this.current.fontSize = size;\n\n if (fontObj.isType3Font) {\n return;\n }\n\n var name = fontObj.loadedName || \"sans-serif\";\n let bold = \"normal\";\n\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n\n var italic = fontObj.italic ? \"italic\" : \"normal\";\n var typeface = `\"${name}\", ${fontObj.fallbackName}`;\n let browserFontSize = size;\n\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n },\n setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n },\n setTextRise: function CanvasGraphics_setTextRise(rise) {\n this.current.textRise = rise;\n },\n moveText: function CanvasGraphics_moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n },\n setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n },\n setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.sqrt(a * a + b * b);\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n },\n nextLine: function CanvasGraphics_nextLine() {\n this.moveText(0, this.current.leading);\n },\n\n paintChar(character, x, y, patternTransform) {\n var ctx = this.ctx;\n var current = this.current;\n var font = current.font;\n var textRenderingMode = current.textRenderingMode;\n var fontSize = current.fontSize / current.fontSizeScale;\n var fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n var isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n var addToPath;\n\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n\n if (patternTransform) {\n ctx.setTransform.apply(ctx, patternTransform);\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.fill();\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.stroke();\n }\n\n ctx.restore();\n } else {\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n\n if (isAddToPathSet) {\n var paths = this.pendingTextPaths || (this.pendingTextPaths = []);\n paths.push({\n transform: ctx.mozCurrentTransform,\n x,\n y,\n fontSize,\n addToPath\n });\n }\n },\n\n get isFontSubpixelAAEnabled() {\n const {\n context: ctx\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n var data = ctx.getImageData(0, 0, 10, 10).data;\n var enabled = false;\n\n for (var i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n\n return (0, _util.shadow)(this, \"isFontSubpixelAAEnabled\", enabled);\n },\n\n showText: function CanvasGraphics_showText(glyphs) {\n var current = this.current;\n var font = current.font;\n\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n\n var fontSize = current.fontSize;\n\n if (fontSize === 0) {\n return undefined;\n }\n\n var ctx = this.ctx;\n var fontSizeScale = current.fontSizeScale;\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var fontDirection = current.fontDirection;\n var textHScale = current.textHScale * fontDirection;\n var glyphsLength = glyphs.length;\n var vertical = font.vertical;\n var spacingDir = vertical ? 1 : -1;\n var defaultVMetrics = font.defaultVMetrics;\n var widthAdvanceScale = fontSize * current.fontMatrix[0];\n var simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n let patternTransform;\n\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this);\n patternTransform = ctx.mozCurrentTransform;\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n\n var lineWidth = current.lineWidth;\n var scale = current.textMatrixScale;\n\n if (scale === 0 || lineWidth === 0) {\n var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n this._cachedGetSinglePixelWidth = null;\n lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR;\n }\n } else {\n lineWidth /= scale;\n }\n\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n\n ctx.lineWidth = lineWidth;\n var x = 0,\n i;\n\n for (i = 0; i < glyphsLength; ++i) {\n var glyph = glyphs[i];\n\n if ((0, _util.isNum)(glyph)) {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n\n var restoreNeeded = false;\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var character = glyph.fontChar;\n var accent = glyph.accent;\n var scaledX, scaledY, scaledAccentX, scaledAccentY;\n var width = glyph.width;\n\n if (vertical) {\n var vmetric, vx, vy;\n vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (font.remeasure && width > 0) {\n var measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n var characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternTransform);\n\n if (accent) {\n scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);\n }\n }\n }\n\n var charWidth;\n\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n\n x += charWidth;\n\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n\n ctx.restore();\n },\n showType3Text: function CanvasGraphics_showType3Text(glyphs) {\n var ctx = this.ctx;\n var current = this.current;\n var font = current.font;\n var fontSize = current.fontSize;\n var fontDirection = current.fontDirection;\n var spacingDir = font.vertical ? 1 : -1;\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var textHScale = current.textHScale * fontDirection;\n var fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n var glyphsLength = glyphs.length;\n var isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;\n var i, glyph, width, spacingLength;\n\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y);\n ctx.scale(textHScale, fontDirection);\n\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n\n if ((0, _util.isNum)(glyph)) {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var operatorList = font.charProcOperatorList[glyph.operatorListId];\n\n if (!operatorList) {\n (0, _util.warn)(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform.apply(ctx, fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n\n var transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);\n\n width = transformed[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n\n ctx.restore();\n this.processingType3 = null;\n },\n setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {},\n setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.clip();\n this.endPath();\n },\n getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) {\n var pattern;\n\n if (IR[0] === \"TilingPattern\") {\n var color = IR[1];\n var baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();\n var canvasGraphicsFactory = {\n createCanvasGraphics: ctx => {\n return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext);\n }\n };\n pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = (0, _pattern_helper.getShadingPatternFromIR)(IR);\n }\n\n return pattern;\n },\n setStrokeColorN: function CanvasGraphics_setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n },\n setFillColorN: function CanvasGraphics_setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n },\n setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {\n var color = _util.Util.makeCssRgb(r, g, b);\n\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n },\n setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {\n var color = _util.Util.makeCssRgb(r, g, b);\n\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n },\n shadingFill: function CanvasGraphics_shadingFill(patternIR) {\n if (!this.contentVisible) {\n return;\n }\n\n var ctx = this.ctx;\n this.save();\n var pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR);\n ctx.fillStyle = pattern.getPattern(ctx, this, true);\n var inv = ctx.mozCurrentTransformInverse;\n\n if (inv) {\n var canvas = ctx.canvas;\n var width = canvas.width;\n var height = canvas.height;\n\n var bl = _util.Util.applyTransform([0, 0], inv);\n\n var br = _util.Util.applyTransform([0, height], inv);\n\n var ul = _util.Util.applyTransform([width, 0], inv);\n\n var ur = _util.Util.applyTransform([width, height], inv);\n\n var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n\n this.restore();\n },\n beginInlineImage: function CanvasGraphics_beginInlineImage() {\n (0, _util.unreachable)(\"Should not call beginInlineImage\");\n },\n beginImageData: function CanvasGraphics_beginImageData() {\n (0, _util.unreachable)(\"Should not call beginImageData\");\n },\n paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform.apply(this, matrix);\n }\n\n this.baseTransform = this.ctx.mozCurrentTransform;\n\n if (bbox) {\n var width = bbox[2] - bbox[0];\n var height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.clip();\n this.endPath();\n }\n },\n paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n },\n beginGroup: function CanvasGraphics_beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n\n this.save();\n var currentCtx = this.ctx;\n\n if (!group.isolated) {\n (0, _util.info)(\"TODO: Support non-isolated groups.\");\n }\n\n if (group.knockout) {\n (0, _util.warn)(\"Knockout groups not supported.\");\n }\n\n var currentTransform = currentCtx.mozCurrentTransform;\n\n if (group.matrix) {\n currentCtx.transform.apply(currentCtx, group.matrix);\n }\n\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n\n var bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);\n\n var canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n var offsetX = Math.floor(bounds[0]);\n var offsetY = Math.floor(bounds[1]);\n var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n var scaleX = 1,\n scaleY = 1;\n\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n\n var cacheId = \"groupAt\" + this.groupLevel;\n\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n\n var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);\n var groupCtx = scratchCanvas.context;\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n scaleX,\n scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n } else {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n }\n\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n this.current.activeSMask = null;\n },\n endGroup: function CanvasGraphics_endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n\n this.groupLevel--;\n var groupCtx = this.ctx;\n this.ctx = this.groupStack.pop();\n\n if (this.ctx.imageSmoothingEnabled !== undefined) {\n this.ctx.imageSmoothingEnabled = false;\n } else {\n this.ctx.mozImageSmoothingEnabled = false;\n }\n\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n } else {\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n }\n\n this.restore();\n },\n beginAnnotations: function CanvasGraphics_beginAnnotations() {\n this.save();\n\n if (this.baseTransform) {\n this.ctx.setTransform.apply(this.ctx, this.baseTransform);\n }\n },\n endAnnotations: function CanvasGraphics_endAnnotations() {\n this.restore();\n },\n beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform, matrix) {\n this.save();\n resetCtxToDefault(this.ctx);\n this.current = new CanvasExtraState();\n\n if (Array.isArray(rect) && rect.length === 4) {\n var width = rect[2] - rect[0];\n var height = rect[3] - rect[1];\n this.ctx.rect(rect[0], rect[1], width, height);\n this.clip();\n this.endPath();\n }\n\n this.transform.apply(this, transform);\n this.transform.apply(this, matrix);\n },\n endAnnotation: function CanvasGraphics_endAnnotation() {\n this.restore();\n },\n paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n\n var ctx = this.ctx;\n var width = img.width,\n height = img.height;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n var glyph = this.processingType3;\n\n if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {\n if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {\n glyph.compiled = compileType3Glyph({\n data: img.data,\n width,\n height\n });\n } else {\n glyph.compiled = null;\n }\n }\n\n if (glyph && glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n\n var maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n this.paintInlineImageXObject(maskCanvas.canvas);\n },\n\n paintImageMaskXObjectRepeat(imgData, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n\n var width = imgData.width;\n var height = imgData.height;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n var maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n putBinaryImageMask(maskCtx, imgData);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n var ctx = this.ctx;\n\n for (var i = 0, ii = positions.length; i < ii; i += 2) {\n ctx.save();\n ctx.transform(scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]);\n ctx.scale(1, -1);\n ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n },\n\n paintImageMaskXObjectGroup: function CanvasGraphics_paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n\n var ctx = this.ctx;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n\n for (var i = 0, ii = images.length; i < ii; i++) {\n var image = images[i];\n var width = image.width,\n height = image.height;\n var maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n putBinaryImageMask(maskCtx, image);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform.apply(ctx, image.transform);\n ctx.scale(1, -1);\n ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n },\n paintImageXObject: function CanvasGraphics_paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n\n const imgData = objId.startsWith(\"g_\") ? this.commonObjs.get(objId) : this.objs.get(objId);\n\n if (!imgData) {\n (0, _util.warn)(\"Dependent image isn't ready yet\");\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n },\n paintImageXObjectRepeat: function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n\n const imgData = objId.startsWith(\"g_\") ? this.commonObjs.get(objId) : this.objs.get(objId);\n\n if (!imgData) {\n (0, _util.warn)(\"Dependent image isn't ready yet\");\n return;\n }\n\n var width = imgData.width;\n var height = imgData.height;\n var map = [];\n\n for (var i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n\n this.paintInlineImageXObjectGroup(imgData, map);\n },\n paintInlineImageXObject: function CanvasGraphics_paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n\n var width = imgData.width;\n var height = imgData.height;\n var ctx = this.ctx;\n this.save();\n ctx.scale(1 / width, -1 / height);\n var currentTransform = ctx.mozCurrentTransformInverse;\n var a = currentTransform[0],\n b = currentTransform[1];\n var widthScale = Math.max(Math.sqrt(a * a + b * b), 1);\n var c = currentTransform[2],\n d = currentTransform[3];\n var heightScale = Math.max(Math.sqrt(c * c + d * d), 1);\n var imgToPaint, tmpCanvas;\n\n if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n var tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n imgToPaint = tmpCanvas.canvas;\n }\n\n var paintWidth = width,\n paintHeight = height;\n var tmpCanvasId = \"prescale1\";\n\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n var newWidth = paintWidth,\n newHeight = paintHeight;\n\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = Math.ceil(paintHeight / 2);\n heightScale /= paintHeight / newHeight;\n }\n\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n imgToPaint = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n\n ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, -height, width, height);\n\n if (this.imageLayer) {\n var position = this.getCanvasPosition(0, -height);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: width / currentTransform[0],\n height: height / currentTransform[3]\n });\n }\n\n this.restore();\n },\n paintInlineImageXObjectGroup: function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n\n var ctx = this.ctx;\n var w = imgData.width;\n var h = imgData.height;\n var tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n var tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n\n for (var i = 0, ii = map.length; i < ii; i++) {\n var entry = map[i];\n ctx.save();\n ctx.transform.apply(ctx, entry.transform);\n ctx.scale(1, -1);\n ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n\n if (this.imageLayer) {\n var position = this.getCanvasPosition(entry.x, entry.y);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: w,\n height: h\n });\n }\n\n ctx.restore();\n }\n },\n paintSolidColorImageMask: function CanvasGraphics_paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n\n this.ctx.fillRect(0, 0, 1, 1);\n },\n markPoint: function CanvasGraphics_markPoint(tag) {},\n markPointProps: function CanvasGraphics_markPointProps(tag, properties) {},\n beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true\n });\n },\n beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n\n this.contentVisible = this.isContentVisible();\n },\n endMarkedContent: function CanvasGraphics_endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n },\n beginCompat: function CanvasGraphics_beginCompat() {},\n endCompat: function CanvasGraphics_endCompat() {},\n consumePath: function CanvasGraphics_consumePath() {\n var ctx = this.ctx;\n\n if (this.pendingClip) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n\n this.pendingClip = null;\n }\n\n ctx.beginPath();\n },\n\n getSinglePixelWidth(scale) {\n if (this._cachedGetSinglePixelWidth === null) {\n const inverse = this.ctx.mozCurrentTransformInverse;\n this._cachedGetSinglePixelWidth = Math.sqrt(Math.max(inverse[0] * inverse[0] + inverse[1] * inverse[1], inverse[2] * inverse[2] + inverse[3] * inverse[3]));\n }\n\n return this._cachedGetSinglePixelWidth;\n },\n\n getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) {\n var transform = this.ctx.mozCurrentTransform;\n return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]];\n },\n isContentVisible: function CanvasGraphics_isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n\n return true;\n }\n };\n\n for (var op in _util.OPS) {\n CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];\n }\n\n return CanvasGraphics;\n}();\n\nexports.CanvasGraphics = CanvasGraphics;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getShadingPatternFromIR = getShadingPatternFromIR;\nexports.TilingPattern = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar ShadingIRs = {};\n\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox || typeof Path2D === \"undefined\") {\n return;\n }\n\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\n\nShadingIRs.RadialAxial = {\n fromIR: function RadialAxial_fromIR(raw) {\n var type = raw[1];\n var bbox = raw[2];\n var colorStops = raw[3];\n var p0 = raw[4];\n var p1 = raw[5];\n var r0 = raw[6];\n var r1 = raw[7];\n return {\n type: \"Pattern\",\n getPattern: function RadialAxial_getPattern(ctx) {\n applyBoundingBox(ctx, bbox);\n var grad;\n\n if (type === \"axial\") {\n grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);\n } else if (type === \"radial\") {\n grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);\n }\n\n for (var i = 0, ii = colorStops.length; i < ii; ++i) {\n var c = colorStops[i];\n grad.addColorStop(c[0], c[1]);\n }\n\n return grad;\n }\n };\n }\n};\n\nvar createMeshCanvas = function createMeshCanvasClosure() {\n function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n var coords = context.coords,\n colors = context.colors;\n var bytes = data.data,\n rowSize = data.width * 4;\n var tmp;\n\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n\n var x1 = (coords[p1] + context.offsetX) * context.scaleX;\n var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n var x2 = (coords[p2] + context.offsetX) * context.scaleX;\n var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n var x3 = (coords[p3] + context.offsetX) * context.scaleX;\n var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n\n if (y1 >= y3) {\n return;\n }\n\n var c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n var c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n var c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n var minY = Math.round(y1),\n maxY = Math.round(y3);\n var xa, car, cag, cab;\n var xb, cbr, cbg, cbb;\n\n for (var y = minY; y <= maxY; y++) {\n if (y < y2) {\n let k;\n\n if (y < y1) {\n k = 0;\n } else if (y1 === y2) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y2);\n }\n\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n\n let k;\n\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n var x1_ = Math.round(Math.min(xa, xb));\n var x2_ = Math.round(Math.max(xa, xb));\n var j = rowSize * y + x1_ * 4;\n\n for (var x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n }\n\n function drawFigure(data, figure, context) {\n var ps = figure.coords;\n var cs = figure.colors;\n var i, ii;\n\n switch (figure.type) {\n case \"lattice\":\n var verticesPerRow = figure.verticesPerRow;\n var rows = Math.floor(ps.length / verticesPerRow) - 1;\n var cols = verticesPerRow - 1;\n\n for (i = 0; i < rows; i++) {\n var q = i * verticesPerRow;\n\n for (var j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n\n break;\n\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n\n break;\n\n default:\n throw new Error(\"illegal figure\");\n }\n }\n\n function createMeshCanvas(bounds, combinesScale, coords, colors, figures, backgroundColor, cachedCanvases, webGLContext) {\n var EXPECTED_SCALE = 1.1;\n var MAX_PATTERN_SIZE = 3000;\n var BORDER_SIZE = 2;\n var offsetX = Math.floor(bounds[0]);\n var offsetY = Math.floor(bounds[1]);\n var boundsWidth = Math.ceil(bounds[2]) - offsetX;\n var boundsHeight = Math.ceil(bounds[3]) - offsetY;\n var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n var scaleX = boundsWidth / width;\n var scaleY = boundsHeight / height;\n var context = {\n coords,\n colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n var paddedWidth = width + BORDER_SIZE * 2;\n var paddedHeight = height + BORDER_SIZE * 2;\n var canvas, tmpCanvas, i, ii;\n\n if (webGLContext.isEnabled) {\n canvas = webGLContext.drawFigures({\n width,\n height,\n backgroundColor,\n figures,\n context\n });\n tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight, false);\n tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE);\n canvas = tmpCanvas.canvas;\n } else {\n tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight, false);\n var tmpCtx = tmpCanvas.context;\n var data = tmpCtx.createImageData(width, height);\n\n if (backgroundColor) {\n var bytes = data.data;\n\n for (i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n\n for (i = 0; i < figures.length; i++) {\n drawFigure(data, figures[i], context);\n }\n\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n canvas = tmpCanvas.canvas;\n }\n\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n\n return createMeshCanvas;\n}();\n\nShadingIRs.Mesh = {\n fromIR: function Mesh_fromIR(raw) {\n var coords = raw[2];\n var colors = raw[3];\n var figures = raw[4];\n var bounds = raw[5];\n var matrix = raw[6];\n var bbox = raw[7];\n var background = raw[8];\n return {\n type: \"Pattern\",\n getPattern: function Mesh_getPattern(ctx, owner, shadingFill) {\n applyBoundingBox(ctx, bbox);\n var scale;\n\n if (shadingFill) {\n scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);\n } else {\n scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);\n\n if (matrix) {\n var matrixScale = _util.Util.singularValueDecompose2dScale(matrix);\n\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n\n var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill ? null : background, owner.cachedCanvases, owner.webGLContext);\n\n if (!shadingFill) {\n ctx.setTransform.apply(ctx, owner.baseTransform);\n\n if (matrix) {\n ctx.transform.apply(ctx, matrix);\n }\n }\n\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n };\n }\n};\nShadingIRs.Dummy = {\n fromIR: function Dummy_fromIR() {\n return {\n type: \"Pattern\",\n getPattern: function Dummy_fromIR_getPattern() {\n return \"hotpink\";\n }\n };\n }\n};\n\nfunction getShadingPatternFromIR(raw) {\n var shadingIR = ShadingIRs[raw[0]];\n\n if (!shadingIR) {\n throw new Error(`Unknown IR type: ${raw[0]}`);\n }\n\n return shadingIR.fromIR(raw);\n}\n\nvar TilingPattern = function TilingPatternClosure() {\n var PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n };\n var MAX_PATTERN_SIZE = 3000;\n\n function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n this.type = \"Pattern\";\n this.ctx = ctx;\n }\n\n TilingPattern.prototype = {\n createPatternCanvas: function TilinPattern_createPatternCanvas(owner) {\n var operatorList = this.operatorList;\n var bbox = this.bbox;\n var xstep = this.xstep;\n var ystep = this.ystep;\n var paintType = this.paintType;\n var tilingType = this.tilingType;\n var color = this.color;\n var canvasGraphicsFactory = this.canvasGraphicsFactory;\n (0, _util.info)(\"TilingType: \" + tilingType);\n var x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n\n var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);\n\n var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);\n\n var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];\n var dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);\n var dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);\n var tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size, true);\n var tmpCtx = tmpCanvas.context;\n var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n graphics.transform(1, 0, 0, 1, -x0, -y0);\n this.clipBbox(graphics, bbox, x0, y0, x1, y1);\n graphics.executeOperatorList(operatorList);\n this.ctx.transform(1, 0, 0, 1, x0, y0);\n this.ctx.scale(1 / dimx.scale, 1 / dimy.scale);\n return tmpCanvas.canvas;\n },\n getSizeAndScale: function TilingPattern_getSizeAndScale(step, realOutputSize, scale) {\n step = Math.abs(step);\n var maxSize = Math.max(MAX_PATTERN_SIZE, realOutputSize);\n var size = Math.ceil(step * scale);\n\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n\n return {\n scale,\n size\n };\n },\n clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) {\n if (Array.isArray(bbox) && bbox.length === 4) {\n var bboxWidth = x1 - x0;\n var bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.clip();\n graphics.endPath();\n }\n },\n setFillAndStrokeStyleToContext: function setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n\n switch (paintType) {\n case PaintType.COLORED:\n var ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n\n case PaintType.UNCOLORED:\n var cssColor = _util.Util.makeCssRgb(color[0], color[1], color[2]);\n\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n\n default:\n throw new _util.FormatError(`Unsupported paint type: ${paintType}`);\n }\n },\n getPattern: function TilingPattern_getPattern(ctx, owner) {\n ctx = this.ctx;\n ctx.setTransform.apply(ctx, this.baseTransform);\n ctx.transform.apply(ctx, this.matrix);\n var temporaryPatternCanvas = this.createPatternCanvas(owner);\n return ctx.createPattern(temporaryPatternCanvas, \"repeat\");\n }\n };\n return TilingPattern;\n}();\n\nexports.TilingPattern = TilingPattern;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GlobalWorkerOptions = void 0;\nconst GlobalWorkerOptions = Object.create(null);\nexports.GlobalWorkerOptions = GlobalWorkerOptions;\nGlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort;\nGlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? \"\" : GlobalWorkerOptions.workerSrc;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MessageHandler = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\n\nfunction wrapReason(reason) {\n if (typeof reason !== \"object\" || reason === null) {\n return reason;\n }\n\n switch (reason.name) {\n case \"AbortException\":\n return new _util.AbortException(reason.message);\n\n case \"MissingPDFException\":\n return new _util.MissingPDFException(reason.message);\n\n case \"UnexpectedResponseException\":\n return new _util.UnexpectedResponseException(reason.message, reason.status);\n\n case \"UnknownErrorException\":\n return new _util.UnknownErrorException(reason.message, reason.details);\n\n default:\n return new _util.UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.postMessageTransfers = true;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = event => {\n const data = event.data;\n\n if (data.targetName !== this.sourceName) {\n return;\n }\n\n if (data.stream) {\n this._processStreamMessage(data);\n\n return;\n }\n\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n\n delete this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n\n return;\n }\n\n const action = this.actionHandler[data.action];\n\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n\n if (data.streamId) {\n this._createStreamSink(data);\n\n return;\n }\n\n action(data.data);\n };\n\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n const ah = this.actionHandler;\n\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n\n ah[actionName] = handler;\n }\n\n send(actionName, data, transfers) {\n this._postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = (0, _util.createPromiseCapability)();\n this.callbackCapabilities[callbackId] = capability;\n\n try {\n this._postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n\n return capability.promise;\n }\n\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++;\n const sourceName = this.sourceName;\n const targetName = this.targetName;\n const comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = (0, _util.createPromiseCapability)();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n\n this._postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = (0, _util.createPromiseCapability)();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n (0, _util.assert)(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = (0, _util.createPromiseCapability)();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n\n _createStreamSink(data) {\n const self = this;\n const action = this.actionHandler[data.action];\n const streamId = data.streamId;\n const sourceName = this.sourceName;\n const targetName = data.sourceName;\n const comObj = this.comObj;\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = (0, _util.createPromiseCapability)();\n this.ready = this.sinkCapability.promise;\n }\n\n self._postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n (0, _util.assert)(reason instanceof Error, \"error must have a valid reason\");\n\n if (this.isCancelled) {\n return;\n }\n\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n\n sinkCapability: (0, _util.createPromiseCapability)(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n\n _processStreamMessage(data) {\n const streamId = data.streamId;\n const sourceName = this.sourceName;\n const targetName = data.sourceName;\n const comObj = this.comObj;\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n this.streamControllers[streamId].startCall.resolve();\n } else {\n this.streamControllers[streamId].startCall.reject(wrapReason(data.reason));\n }\n\n break;\n\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n this.streamControllers[streamId].pullCall.resolve();\n } else {\n this.streamControllers[streamId].pullCall.reject(wrapReason(data.reason));\n }\n\n break;\n\n case StreamKind.PULL:\n if (!this.streamSinks[streamId]) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n\n if (this.streamSinks[streamId].desiredSize <= 0 && data.desiredSize > 0) {\n this.streamSinks[streamId].sinkCapability.resolve();\n }\n\n this.streamSinks[streamId].desiredSize = data.desiredSize;\n const {\n onPull\n } = this.streamSinks[data.streamId];\n new Promise(function (resolve) {\n resolve(onPull && onPull());\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n\n case StreamKind.ENQUEUE:\n (0, _util.assert)(this.streamControllers[streamId], \"enqueue should have stream controller\");\n\n if (this.streamControllers[streamId].isClosed) {\n break;\n }\n\n this.streamControllers[streamId].controller.enqueue(data.chunk);\n break;\n\n case StreamKind.CLOSE:\n (0, _util.assert)(this.streamControllers[streamId], \"close should have stream controller\");\n\n if (this.streamControllers[streamId].isClosed) {\n break;\n }\n\n this.streamControllers[streamId].isClosed = true;\n this.streamControllers[streamId].controller.close();\n\n this._deleteStreamController(streamId);\n\n break;\n\n case StreamKind.ERROR:\n (0, _util.assert)(this.streamControllers[streamId], \"error should have stream controller\");\n this.streamControllers[streamId].controller.error(wrapReason(data.reason));\n\n this._deleteStreamController(streamId);\n\n break;\n\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n this.streamControllers[streamId].cancelCall.resolve();\n } else {\n this.streamControllers[streamId].cancelCall.reject(wrapReason(data.reason));\n }\n\n this._deleteStreamController(streamId);\n\n break;\n\n case StreamKind.CANCEL:\n if (!this.streamSinks[streamId]) {\n break;\n }\n\n const {\n onCancel\n } = this.streamSinks[data.streamId];\n new Promise(function (resolve) {\n resolve(onCancel && onCancel(wrapReason(data.reason)));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n this.streamSinks[streamId].sinkCapability.reject(wrapReason(data.reason));\n this.streamSinks[streamId].isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n async _deleteStreamController(streamId) {\n await Promise.allSettled([this.streamControllers[streamId].startCall, this.streamControllers[streamId].pullCall, this.streamControllers[streamId].cancelCall].map(function (capability) {\n return capability && capability.promise;\n }));\n delete this.streamControllers[streamId];\n }\n\n _postMessage(message, transfers) {\n if (transfers && this.postMessageTransfers) {\n this.comObj.postMessage(message, transfers);\n } else {\n this.comObj.postMessage(message);\n }\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n\n}\n\nexports.MessageHandler = MessageHandler;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Metadata = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _xml_parser = __w_pdfjs_require__(15);\n\nclass Metadata {\n constructor(data) {\n (0, _util.assert)(typeof data === \"string\", \"Metadata: input is not a string\");\n data = this._repair(data);\n const parser = new _xml_parser.SimpleXMLParser();\n const xmlDocument = parser.parseFromString(data);\n this._metadataMap = new Map();\n\n if (xmlDocument) {\n this._parse(xmlDocument);\n }\n }\n\n _repair(data) {\n return data.replace(/^[^<]+/, \"\").replace(/>\\\\376\\\\377([^<]+)/g, function (all, codes) {\n const bytes = codes.replace(/\\\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {\n return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n }).replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {\n switch (name) {\n case \"amp\":\n return \"&\";\n\n case \"apos\":\n return \"'\";\n\n case \"gt\":\n return \">\";\n\n case \"lt\":\n return \"<\";\n\n case \"quot\":\n return '\"';\n }\n\n throw new Error(`_repair: ${name} isn't defined.`);\n });\n let chars = \"\";\n\n for (let i = 0, ii = bytes.length; i < ii; i += 2) {\n const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n\n if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) {\n chars += String.fromCharCode(code);\n } else {\n chars += \"&#x\" + (0x10000 + code).toString(16).substring(1) + \";\";\n }\n }\n\n return \">\" + chars;\n });\n }\n\n _parse(xmlDocument) {\n let rdf = xmlDocument.documentElement;\n\n if (rdf.nodeName.toLowerCase() !== \"rdf:rdf\") {\n rdf = rdf.firstChild;\n\n while (rdf && rdf.nodeName.toLowerCase() !== \"rdf:rdf\") {\n rdf = rdf.nextSibling;\n }\n }\n\n const nodeName = rdf ? rdf.nodeName.toLowerCase() : null;\n\n if (!rdf || nodeName !== \"rdf:rdf\" || !rdf.hasChildNodes()) {\n return;\n }\n\n const children = rdf.childNodes;\n\n for (let i = 0, ii = children.length; i < ii; i++) {\n const desc = children[i];\n\n if (desc.nodeName.toLowerCase() !== \"rdf:description\") {\n continue;\n }\n\n for (let j = 0, jj = desc.childNodes.length; j < jj; j++) {\n if (desc.childNodes[j].nodeName.toLowerCase() !== \"#text\") {\n const entry = desc.childNodes[j];\n const name = entry.nodeName.toLowerCase();\n\n this._metadataMap.set(name, entry.textContent.trim());\n }\n }\n }\n }\n\n get(name) {\n return this._metadataMap.has(name) ? this._metadataMap.get(name) : null;\n }\n\n getAll() {\n return Object.fromEntries(this._metadataMap);\n }\n\n has(name) {\n return this._metadataMap.has(name);\n }\n\n}\n\nexports.Metadata = Metadata;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SimpleXMLParser = void 0;\nconst XMLParserErrorCode = {\n NoError: 0,\n EndOfDocument: -1,\n UnterminatedCdat: -2,\n UnterminatedXmlDeclaration: -3,\n UnterminatedDoctypeDeclaration: -4,\n UnterminatedComment: -5,\n MalformedElement: -6,\n OutOfMemory: -7,\n UnterminatedAttributeValue: -8,\n UnterminatedElement: -9,\n ElementNeverBegun: -10\n};\n\nfunction isWhitespace(s, index) {\n const ch = s[index];\n return ch === \" \" || ch === \"\\n\" || ch === \"\\r\" || ch === \"\\t\";\n}\n\nfunction isWhitespaceString(s) {\n for (let i = 0, ii = s.length; i < ii; i++) {\n if (!isWhitespace(s, i)) {\n return false;\n }\n }\n\n return true;\n}\n\nclass XMLParserBase {\n _resolveEntities(s) {\n return s.replace(/&([^;]+);/g, (all, entity) => {\n if (entity.substring(0, 2) === \"#x\") {\n return String.fromCharCode(parseInt(entity.substring(2), 16));\n } else if (entity.substring(0, 1) === \"#\") {\n return String.fromCharCode(parseInt(entity.substring(1), 10));\n }\n\n switch (entity) {\n case \"lt\":\n return \"<\";\n\n case \"gt\":\n return \">\";\n\n case \"amp\":\n return \"&\";\n\n case \"quot\":\n return '\"';\n }\n\n return this.onResolveEntity(entity);\n });\n }\n\n _parseContent(s, start) {\n const attributes = [];\n let pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \">\" && s[pos] !== \"/\") {\n ++pos;\n }\n\n const name = s.substring(start, pos);\n skipWs();\n\n while (pos < s.length && s[pos] !== \">\" && s[pos] !== \"/\" && s[pos] !== \"?\") {\n skipWs();\n let attrName = \"\",\n attrValue = \"\";\n\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \"=\") {\n attrName += s[pos];\n ++pos;\n }\n\n skipWs();\n\n if (s[pos] !== \"=\") {\n return null;\n }\n\n ++pos;\n skipWs();\n const attrEndChar = s[pos];\n\n if (attrEndChar !== '\"' && attrEndChar !== \"'\") {\n return null;\n }\n\n const attrEndIndex = s.indexOf(attrEndChar, ++pos);\n\n if (attrEndIndex < 0) {\n return null;\n }\n\n attrValue = s.substring(pos, attrEndIndex);\n attributes.push({\n name: attrName,\n value: this._resolveEntities(attrValue)\n });\n pos = attrEndIndex + 1;\n skipWs();\n }\n\n return {\n name,\n attributes,\n parsed: pos - start\n };\n }\n\n _parseProcessingInstruction(s, start) {\n let pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \">\" && s[pos] !== \"/\") {\n ++pos;\n }\n\n const name = s.substring(start, pos);\n skipWs();\n const attrStart = pos;\n\n while (pos < s.length && (s[pos] !== \"?\" || s[pos + 1] !== \">\")) {\n ++pos;\n }\n\n const value = s.substring(attrStart, pos);\n return {\n name,\n value,\n parsed: pos - start\n };\n }\n\n parseXml(s) {\n let i = 0;\n\n while (i < s.length) {\n const ch = s[i];\n let j = i;\n\n if (ch === \"<\") {\n ++j;\n const ch2 = s[j];\n let q;\n\n switch (ch2) {\n case \"/\":\n ++j;\n q = s.indexOf(\">\", j);\n\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n\n this.onEndElement(s.substring(j, q));\n j = q + 1;\n break;\n\n case \"?\":\n ++j;\n\n const pi = this._parseProcessingInstruction(s, j);\n\n if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== \"?>\") {\n this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\n return;\n }\n\n this.onPi(pi.name, pi.value);\n j += pi.parsed + 2;\n break;\n\n case \"!\":\n if (s.substring(j + 1, j + 3) === \"--\") {\n q = s.indexOf(\"-->\", j + 3);\n\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedComment);\n return;\n }\n\n this.onComment(s.substring(j + 3, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"[CDATA[\") {\n q = s.indexOf(\"]]>\", j + 8);\n\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedCdat);\n return;\n }\n\n this.onCdata(s.substring(j + 8, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"DOCTYPE\") {\n const q2 = s.indexOf(\"[\", j + 8);\n let complexDoctype = false;\n q = s.indexOf(\">\", j + 8);\n\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n\n if (q2 > 0 && q > q2) {\n q = s.indexOf(\"]>\", j + 8);\n\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n\n complexDoctype = true;\n }\n\n const doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0));\n this.onDoctype(doctypeContent);\n j = q + (complexDoctype ? 2 : 1);\n } else {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n\n break;\n\n default:\n const content = this._parseContent(s, j);\n\n if (content === null) {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n\n let isClosed = false;\n\n if (s.substring(j + content.parsed, j + content.parsed + 2) === \"/>\") {\n isClosed = true;\n } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== \">\") {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n\n this.onBeginElement(content.name, content.attributes, isClosed);\n j += content.parsed + (isClosed ? 2 : 1);\n break;\n }\n } else {\n while (j < s.length && s[j] !== \"<\") {\n j++;\n }\n\n const text = s.substring(i, j);\n this.onText(this._resolveEntities(text));\n }\n\n i = j;\n }\n }\n\n onResolveEntity(name) {\n return `&${name};`;\n }\n\n onPi(name, value) {}\n\n onComment(text) {}\n\n onCdata(text) {}\n\n onDoctype(doctypeContent) {}\n\n onText(text) {}\n\n onBeginElement(name, attributes, isEmpty) {}\n\n onEndElement(name) {}\n\n onError(code) {}\n\n}\n\nclass SimpleDOMNode {\n constructor(nodeName, nodeValue) {\n this.nodeName = nodeName;\n this.nodeValue = nodeValue;\n Object.defineProperty(this, \"parentNode\", {\n value: null,\n writable: true\n });\n }\n\n get firstChild() {\n return this.childNodes && this.childNodes[0];\n }\n\n get nextSibling() {\n const childNodes = this.parentNode.childNodes;\n\n if (!childNodes) {\n return undefined;\n }\n\n const index = childNodes.indexOf(this);\n\n if (index === -1) {\n return undefined;\n }\n\n return childNodes[index + 1];\n }\n\n get textContent() {\n if (!this.childNodes) {\n return this.nodeValue || \"\";\n }\n\n return this.childNodes.map(function (child) {\n return child.textContent;\n }).join(\"\");\n }\n\n hasChildNodes() {\n return this.childNodes && this.childNodes.length > 0;\n }\n\n}\n\nclass SimpleXMLParser extends XMLParserBase {\n constructor() {\n super();\n this._currentFragment = null;\n this._stack = null;\n this._errorCode = XMLParserErrorCode.NoError;\n }\n\n parseFromString(data) {\n this._currentFragment = [];\n this._stack = [];\n this._errorCode = XMLParserErrorCode.NoError;\n this.parseXml(data);\n\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined;\n }\n\n const [documentElement] = this._currentFragment;\n\n if (!documentElement) {\n return undefined;\n }\n\n return {\n documentElement\n };\n }\n\n onResolveEntity(name) {\n switch (name) {\n case \"apos\":\n return \"'\";\n }\n\n return super.onResolveEntity(name);\n }\n\n onText(text) {\n if (isWhitespaceString(text)) {\n return;\n }\n\n const node = new SimpleDOMNode(\"#text\", text);\n\n this._currentFragment.push(node);\n }\n\n onCdata(text) {\n const node = new SimpleDOMNode(\"#text\", text);\n\n this._currentFragment.push(node);\n }\n\n onBeginElement(name, attributes, isEmpty) {\n const node = new SimpleDOMNode(name);\n node.childNodes = [];\n\n this._currentFragment.push(node);\n\n if (isEmpty) {\n return;\n }\n\n this._stack.push(this._currentFragment);\n\n this._currentFragment = node.childNodes;\n }\n\n onEndElement(name) {\n this._currentFragment = this._stack.pop() || [];\n const lastElement = this._currentFragment[this._currentFragment.length - 1];\n\n if (!lastElement) {\n return;\n }\n\n for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {\n lastElement.childNodes[i].parentNode = lastElement;\n }\n }\n\n onError(code) {\n this._errorCode = code;\n }\n\n}\n\nexports.SimpleXMLParser = SimpleXMLParser;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OptionalContentConfig = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nclass OptionalContentGroup {\n constructor(name, intent) {\n this.visible = true;\n this.name = name;\n this.intent = intent;\n }\n\n}\n\nclass OptionalContentConfig {\n constructor(data) {\n this.name = null;\n this.creator = null;\n this._order = null;\n this._groups = new Map();\n\n if (data === null) {\n return;\n }\n\n this.name = data.name;\n this.creator = data.creator;\n this._order = data.order;\n\n for (const group of data.groups) {\n this._groups.set(group.id, new OptionalContentGroup(group.name, group.intent));\n }\n\n if (data.baseState === \"OFF\") {\n for (const group of this._groups) {\n group.visible = false;\n }\n }\n\n for (const on of data.on) {\n this._groups.get(on).visible = true;\n }\n\n for (const off of data.off) {\n this._groups.get(off).visible = false;\n }\n }\n\n isVisible(group) {\n if (group.type === \"OCG\") {\n if (!this._groups.has(group.id)) {\n (0, _util.warn)(`Optional content group not found: ${group.id}`);\n return true;\n }\n\n return this._groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n (0, _util.warn)(\"Visibility expression not supported yet.\");\n }\n\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n\n if (this._groups.get(id).visible) {\n return true;\n }\n }\n\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n\n if (!this._groups.get(id).visible) {\n return false;\n }\n }\n\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n\n if (!this._groups.get(id).visible) {\n return true;\n }\n }\n\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n\n if (this._groups.get(id).visible) {\n return false;\n }\n }\n\n return true;\n }\n\n (0, _util.warn)(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n\n (0, _util.warn)(`Unknown group type ${group.type}.`);\n return true;\n }\n\n setVisibility(id, visible = true) {\n if (!this._groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return;\n }\n\n this._groups.get(id).visible = !!visible;\n }\n\n getOrder() {\n if (!this._groups.size) {\n return null;\n }\n\n if (this._order) {\n return this._order.slice();\n }\n\n return Array.from(this._groups.keys());\n }\n\n getGroups() {\n if (!this._groups.size) {\n return null;\n }\n\n return Object.fromEntries(this._groups);\n }\n\n getGroup(id) {\n return this._groups.get(id) || null;\n }\n\n}\n\nexports.OptionalContentConfig = OptionalContentConfig;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFDataTransportStream = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nclass PDFDataTransportStream {\n constructor(params, pdfDataRangeTransport) {\n (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n this._queuedChunks = [];\n this._progressiveDone = params.progressiveDone || false;\n const initialData = params.initialData;\n\n if (initialData && initialData.length > 0) {\n const buffer = new Uint8Array(initialData).buffer;\n\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !params.disableStream;\n this._isRangeSupported = !params.disableRange;\n this._contentLength = params.length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n\n this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n\n this._pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n\n this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n\n this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n\n this._pdfDataRangeTransport.transportReady();\n }\n\n _onReceiveData(args) {\n const buffer = new Uint8Array(args.chunk).buffer;\n\n if (args.begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== args.begin) {\n return false;\n }\n\n rangeReader._enqueue(buffer);\n\n return true;\n });\n\n (0, _util.assert)(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader ? this._fullRequestReader._loaded : 0;\n }\n\n _onProgress(evt) {\n if (evt.total === undefined) {\n const firstReader = this._rangeReaders[0];\n\n if (firstReader && firstReader.onProgress) {\n firstReader.onProgress({\n loaded: evt.loaded\n });\n }\n } else {\n const fullReader = this._fullRequestReader;\n\n if (fullReader && fullReader.onProgress) {\n fullReader.onProgress({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n }\n\n _onProgressiveDone() {\n if (this._fullRequestReader) {\n this._fullRequestReader.progressiveDone();\n }\n\n this._progressiveDone = true;\n }\n\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone);\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n\n this._rangeReaders.push(reader);\n\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n const readers = this._rangeReaders.slice(0);\n\n readers.forEach(function (rangeReader) {\n rangeReader.cancel(reason);\n });\n\n this._pdfDataRangeTransport.abort();\n }\n\n}\n\nexports.PDFDataTransportStream = PDFDataTransportStream;\n\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n\n this._loaded += chunk.byteLength;\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n\n get contentLength() {\n return this._stream._contentLength;\n }\n\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n\n return {\n value: chunk,\n done: false\n };\n }\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n const requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n }\n\n progressiveDone() {\n if (this._done) {\n return;\n }\n\n this._done = true;\n }\n\n}\n\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n }\n\n this._done = true;\n\n this._stream._removeRangeReader(this);\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n const requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n\n this._stream._removeRangeReader(this);\n }\n\n}\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.WebGLContext = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nclass WebGLContext {\n constructor({\n enable = false\n }) {\n this._enabled = enable === true;\n }\n\n get isEnabled() {\n let enabled = this._enabled;\n\n if (enabled) {\n enabled = WebGLUtils.tryInitGL();\n }\n\n return (0, _util.shadow)(this, \"isEnabled\", enabled);\n }\n\n composeSMask({\n layer,\n mask,\n properties\n }) {\n return WebGLUtils.composeSMask(layer, mask, properties);\n }\n\n drawFigures({\n width,\n height,\n backgroundColor,\n figures,\n context\n }) {\n return WebGLUtils.drawFigures(width, height, backgroundColor, figures, context);\n }\n\n clear() {\n WebGLUtils.cleanup();\n }\n\n}\n\nexports.WebGLContext = WebGLContext;\n\nvar WebGLUtils = function WebGLUtilsClosure() {\n function loadShader(gl, code, shaderType) {\n var shader = gl.createShader(shaderType);\n gl.shaderSource(shader, code);\n gl.compileShader(shader);\n var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n\n if (!compiled) {\n var errorMsg = gl.getShaderInfoLog(shader);\n throw new Error(\"Error during shader compilation: \" + errorMsg);\n }\n\n return shader;\n }\n\n function createVertexShader(gl, code) {\n return loadShader(gl, code, gl.VERTEX_SHADER);\n }\n\n function createFragmentShader(gl, code) {\n return loadShader(gl, code, gl.FRAGMENT_SHADER);\n }\n\n function createProgram(gl, shaders) {\n var program = gl.createProgram();\n\n for (var i = 0, ii = shaders.length; i < ii; ++i) {\n gl.attachShader(program, shaders[i]);\n }\n\n gl.linkProgram(program);\n var linked = gl.getProgramParameter(program, gl.LINK_STATUS);\n\n if (!linked) {\n var errorMsg = gl.getProgramInfoLog(program);\n throw new Error(\"Error during program linking: \" + errorMsg);\n }\n\n return program;\n }\n\n function createTexture(gl, image, textureId) {\n gl.activeTexture(textureId);\n var texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n return texture;\n }\n\n var currentGL, currentCanvas;\n\n function generateGL() {\n if (currentGL) {\n return;\n }\n\n currentCanvas = document.createElement(\"canvas\");\n currentGL = currentCanvas.getContext(\"webgl\", {\n premultipliedalpha: false\n });\n }\n\n var smaskVertexShaderCode = \"\\\n attribute vec2 a_position; \\\n attribute vec2 a_texCoord; \\\n \\\n uniform vec2 u_resolution; \\\n \\\n varying vec2 v_texCoord; \\\n \\\n void main() { \\\n vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0; \\\n gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \\\n \\\n v_texCoord = a_texCoord; \\\n } \";\n var smaskFragmentShaderCode = \"\\\n precision mediump float; \\\n \\\n uniform vec4 u_backdrop; \\\n uniform int u_subtype; \\\n uniform sampler2D u_image; \\\n uniform sampler2D u_mask; \\\n \\\n varying vec2 v_texCoord; \\\n \\\n void main() { \\\n vec4 imageColor = texture2D(u_image, v_texCoord); \\\n vec4 maskColor = texture2D(u_mask, v_texCoord); \\\n if (u_backdrop.a > 0.0) { \\\n maskColor.rgb = maskColor.rgb * maskColor.a + \\\n u_backdrop.rgb * (1.0 - maskColor.a); \\\n } \\\n float lum; \\\n if (u_subtype == 0) { \\\n lum = maskColor.a; \\\n } else { \\\n lum = maskColor.r * 0.3 + maskColor.g * 0.59 + \\\n maskColor.b * 0.11; \\\n } \\\n imageColor.a *= lum; \\\n imageColor.rgb *= imageColor.a; \\\n gl_FragColor = imageColor; \\\n } \";\n var smaskCache = null;\n\n function initSmaskGL() {\n var canvas, gl;\n generateGL();\n canvas = currentCanvas;\n currentCanvas = null;\n gl = currentGL;\n currentGL = null;\n var vertexShader = createVertexShader(gl, smaskVertexShaderCode);\n var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);\n var program = createProgram(gl, [vertexShader, fragmentShader]);\n gl.useProgram(program);\n var cache = {};\n cache.gl = gl;\n cache.canvas = canvas;\n cache.resolutionLocation = gl.getUniformLocation(program, \"u_resolution\");\n cache.positionLocation = gl.getAttribLocation(program, \"a_position\");\n cache.backdropLocation = gl.getUniformLocation(program, \"u_backdrop\");\n cache.subtypeLocation = gl.getUniformLocation(program, \"u_subtype\");\n var texCoordLocation = gl.getAttribLocation(program, \"a_texCoord\");\n var texLayerLocation = gl.getUniformLocation(program, \"u_image\");\n var texMaskLocation = gl.getUniformLocation(program, \"u_mask\");\n var texCoordBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(texCoordLocation);\n gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0);\n gl.uniform1i(texLayerLocation, 0);\n gl.uniform1i(texMaskLocation, 1);\n smaskCache = cache;\n }\n\n function composeSMask(layer, mask, properties) {\n var width = layer.width,\n height = layer.height;\n\n if (!smaskCache) {\n initSmaskGL();\n }\n\n var cache = smaskCache,\n canvas = cache.canvas,\n gl = cache.gl;\n canvas.width = width;\n canvas.height = height;\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniform2f(cache.resolutionLocation, width, height);\n\n if (properties.backdrop) {\n gl.uniform4f(cache.resolutionLocation, properties.backdrop[0], properties.backdrop[1], properties.backdrop[2], 1);\n } else {\n gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0);\n }\n\n gl.uniform1i(cache.subtypeLocation, properties.subtype === \"Luminosity\" ? 1 : 0);\n var texture = createTexture(gl, layer, gl.TEXTURE0);\n var maskTexture = createTexture(gl, mask, gl.TEXTURE1);\n var buffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, 0, width, 0, 0, height, 0, height, width, 0, width, height]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.positionLocation);\n gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n gl.clearColor(0, 0, 0, 0);\n gl.enable(gl.BLEND);\n gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n gl.clear(gl.COLOR_BUFFER_BIT);\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n gl.flush();\n gl.deleteTexture(texture);\n gl.deleteTexture(maskTexture);\n gl.deleteBuffer(buffer);\n return canvas;\n }\n\n var figuresVertexShaderCode = \"\\\n attribute vec2 a_position; \\\n attribute vec3 a_color; \\\n \\\n uniform vec2 u_resolution; \\\n uniform vec2 u_scale; \\\n uniform vec2 u_offset; \\\n \\\n varying vec4 v_color; \\\n \\\n void main() { \\\n vec2 position = (a_position + u_offset) * u_scale; \\\n vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0; \\\n gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \\\n \\\n v_color = vec4(a_color / 255.0, 1.0); \\\n } \";\n var figuresFragmentShaderCode = \"\\\n precision mediump float; \\\n \\\n varying vec4 v_color; \\\n \\\n void main() { \\\n gl_FragColor = v_color; \\\n } \";\n var figuresCache = null;\n\n function initFiguresGL() {\n var canvas, gl;\n generateGL();\n canvas = currentCanvas;\n currentCanvas = null;\n gl = currentGL;\n currentGL = null;\n var vertexShader = createVertexShader(gl, figuresVertexShaderCode);\n var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);\n var program = createProgram(gl, [vertexShader, fragmentShader]);\n gl.useProgram(program);\n var cache = {};\n cache.gl = gl;\n cache.canvas = canvas;\n cache.resolutionLocation = gl.getUniformLocation(program, \"u_resolution\");\n cache.scaleLocation = gl.getUniformLocation(program, \"u_scale\");\n cache.offsetLocation = gl.getUniformLocation(program, \"u_offset\");\n cache.positionLocation = gl.getAttribLocation(program, \"a_position\");\n cache.colorLocation = gl.getAttribLocation(program, \"a_color\");\n figuresCache = cache;\n }\n\n function drawFigures(width, height, backgroundColor, figures, context) {\n if (!figuresCache) {\n initFiguresGL();\n }\n\n var cache = figuresCache,\n canvas = cache.canvas,\n gl = cache.gl;\n canvas.width = width;\n canvas.height = height;\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniform2f(cache.resolutionLocation, width, height);\n var count = 0;\n var i, ii, rows;\n\n for (i = 0, ii = figures.length; i < ii; i++) {\n switch (figures[i].type) {\n case \"lattice\":\n rows = figures[i].coords.length / figures[i].verticesPerRow | 0;\n count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6;\n break;\n\n case \"triangles\":\n count += figures[i].coords.length;\n break;\n }\n }\n\n var coords = new Float32Array(count * 2);\n var colors = new Uint8Array(count * 3);\n var coordsMap = context.coords,\n colorsMap = context.colors;\n var pIndex = 0,\n cIndex = 0;\n\n for (i = 0, ii = figures.length; i < ii; i++) {\n var figure = figures[i],\n ps = figure.coords,\n cs = figure.colors;\n\n switch (figure.type) {\n case \"lattice\":\n var cols = figure.verticesPerRow;\n rows = ps.length / cols | 0;\n\n for (var row = 1; row < rows; row++) {\n var offset = row * cols + 1;\n\n for (var col = 1; col < cols; col++, offset++) {\n coords[pIndex] = coordsMap[ps[offset - cols - 1]];\n coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1];\n coords[pIndex + 2] = coordsMap[ps[offset - cols]];\n coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1];\n coords[pIndex + 4] = coordsMap[ps[offset - 1]];\n coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1];\n colors[cIndex] = colorsMap[cs[offset - cols - 1]];\n colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1];\n colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2];\n colors[cIndex + 3] = colorsMap[cs[offset - cols]];\n colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1];\n colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2];\n colors[cIndex + 6] = colorsMap[cs[offset - 1]];\n colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1];\n colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2];\n coords[pIndex + 6] = coords[pIndex + 2];\n coords[pIndex + 7] = coords[pIndex + 3];\n coords[pIndex + 8] = coords[pIndex + 4];\n coords[pIndex + 9] = coords[pIndex + 5];\n coords[pIndex + 10] = coordsMap[ps[offset]];\n coords[pIndex + 11] = coordsMap[ps[offset] + 1];\n colors[cIndex + 9] = colors[cIndex + 3];\n colors[cIndex + 10] = colors[cIndex + 4];\n colors[cIndex + 11] = colors[cIndex + 5];\n colors[cIndex + 12] = colors[cIndex + 6];\n colors[cIndex + 13] = colors[cIndex + 7];\n colors[cIndex + 14] = colors[cIndex + 8];\n colors[cIndex + 15] = colorsMap[cs[offset]];\n colors[cIndex + 16] = colorsMap[cs[offset] + 1];\n colors[cIndex + 17] = colorsMap[cs[offset] + 2];\n pIndex += 12;\n cIndex += 18;\n }\n }\n\n break;\n\n case \"triangles\":\n for (var j = 0, jj = ps.length; j < jj; j++) {\n coords[pIndex] = coordsMap[ps[j]];\n coords[pIndex + 1] = coordsMap[ps[j] + 1];\n colors[cIndex] = colorsMap[cs[j]];\n colors[cIndex + 1] = colorsMap[cs[j] + 1];\n colors[cIndex + 2] = colorsMap[cs[j] + 2];\n pIndex += 2;\n cIndex += 3;\n }\n\n break;\n }\n }\n\n if (backgroundColor) {\n gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255, backgroundColor[2] / 255, 1.0);\n } else {\n gl.clearColor(0, 0, 0, 0);\n }\n\n gl.clear(gl.COLOR_BUFFER_BIT);\n var coordsBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.positionLocation);\n gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n var colorsBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.colorLocation);\n gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false, 0, 0);\n gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY);\n gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY);\n gl.drawArrays(gl.TRIANGLES, 0, count);\n gl.flush();\n gl.deleteBuffer(coordsBuffer);\n gl.deleteBuffer(colorsBuffer);\n return canvas;\n }\n\n return {\n tryInitGL() {\n try {\n generateGL();\n return !!currentGL;\n } catch (ex) {}\n\n return false;\n },\n\n composeSMask,\n drawFigures,\n\n cleanup() {\n if (smaskCache && smaskCache.canvas) {\n smaskCache.canvas.width = 0;\n smaskCache.canvas.height = 0;\n }\n\n if (figuresCache && figuresCache.canvas) {\n figuresCache.canvas.width = 0;\n figuresCache.canvas.height = 0;\n }\n\n smaskCache = null;\n figuresCache = null;\n }\n\n };\n}();\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AnnotationLayer = void 0;\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _annotation_storage = __w_pdfjs_require__(8);\n\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case _util.AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case _util.AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case _util.AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n\n return new PushButtonWidgetAnnotationElement(parameters);\n\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n }\n\n return new WidgetAnnotationElement(parameters);\n\n case _util.AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case _util.AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n\n case _util.AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case _util.AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n\n case _util.AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n\n case _util.AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n\n case _util.AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n\n case _util.AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n\n case _util.AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n\n case _util.AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case _util.AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case _util.AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case _util.AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case _util.AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n\n case _util.AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n }\n\n}\n\nclass AnnotationElement {\n constructor(parameters, isRenderable = false, ignoreBorder = false) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.page = parameters.page;\n this.viewport = parameters.viewport;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderInteractiveForms = parameters.renderInteractiveForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n }\n\n _createContainer(ignoreBorder = false) {\n const data = this.data,\n page = this.page,\n viewport = this.viewport;\n const container = document.createElement(\"section\");\n let width = data.rect[2] - data.rect[0];\n let height = data.rect[3] - data.rect[1];\n container.setAttribute(\"data-annotation-id\", data.id);\n\n const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n\n container.style.transform = `matrix(${viewport.transform.join(\",\")})`;\n container.style.transformOrigin = `-${rect[0]}px -${rect[1]}px`;\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = `${data.borderStyle.width}px`;\n\n if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) {\n width = width - 2 * data.borderStyle.width;\n height = height - 2 * data.borderStyle.width;\n }\n\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `${horizontalRadius}px / ${verticalRadius}px`;\n container.style.borderRadius = radius;\n }\n\n switch (data.borderStyle.style) {\n case _util.AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n\n case _util.AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n\n case _util.AnnotationBorderStyleType.BEVELED:\n (0, _util.warn)(\"Unimplemented border style: beveled\");\n break;\n\n case _util.AnnotationBorderStyleType.INSET:\n (0, _util.warn)(\"Unimplemented border style: inset\");\n break;\n\n case _util.AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n\n default:\n break;\n }\n\n if (data.color) {\n container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0);\n } else {\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = `${rect[0]}px`;\n container.style.top = `${rect[1]}px`;\n container.style.width = `${width}px`;\n container.style.height = `${height}px`;\n return container;\n }\n\n _createPopup(container, trigger, data) {\n if (!trigger) {\n trigger = document.createElement(\"div\");\n trigger.style.height = container.style.height;\n trigger.style.width = container.style.width;\n container.appendChild(trigger);\n }\n\n const popupElement = new PopupElement({\n container,\n trigger,\n color: data.color,\n title: data.title,\n modificationDate: data.modificationDate,\n contents: data.contents,\n hideWrapper: true\n });\n const popup = popupElement.render();\n popup.style.left = container.style.width;\n container.appendChild(popup);\n }\n\n render() {\n (0, _util.unreachable)(\"Abstract method `AnnotationElement.render` called\");\n }\n\n}\n\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action);\n super(parameters, isRenderable);\n }\n\n render() {\n this.container.className = \"linkAnnotation\";\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n\n if (data.url) {\n (0, _display_utils.addLinkAttributes)(link, {\n url: data.url,\n target: data.newWindow ? _display_utils.LinkTarget.BLANK : linkService.externalLinkTarget,\n rel: linkService.externalLinkRel,\n enabled: linkService.externalLinkEnabled\n });\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n } else {\n this._bindLink(link, data.dest);\n }\n\n this.container.appendChild(link);\n return this.container;\n }\n\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n\n link.onclick = () => {\n if (destination) {\n this.linkService.navigateTo(destination);\n }\n\n return false;\n };\n\n if (destination) {\n link.className = \"internalLink\";\n }\n }\n\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n\n link.className = \"internalLink\";\n }\n\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable);\n }\n\n render() {\n this.container.className = \"textAnnotation\";\n const image = document.createElement(\"img\");\n image.style.height = this.container.style.height;\n image.style.width = this.container.style.width;\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.alt = \"[{{type}} Annotation]\";\n image.dataset.l10nId = \"text_annotation_type\";\n image.dataset.l10nArgs = JSON.stringify({\n type: this.data.name\n });\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, image, this.data);\n }\n\n this.container.appendChild(image);\n return this.container;\n }\n\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n return this.container;\n }\n\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, isRenderable);\n }\n\n render() {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.className = \"textWidgetAnnotation\";\n let element = null;\n\n if (this.renderInteractiveForms) {\n const textContent = storage.getOrCreateValue(id, this.data.fieldValue);\n\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = textContent;\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", textContent);\n }\n\n element.addEventListener(\"input\", function (event) {\n storage.setValue(id, event.target.value);\n });\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n\n if (this.data.maxLen !== null) {\n element.maxLength = this.data.maxLen;\n }\n\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / this.data.maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n let font = null;\n\n if (this.data.fontRefName && this.page.commonObjs.has(this.data.fontRefName)) {\n font = this.page.commonObjs.get(this.data.fontRefName);\n }\n\n this._setTextStyle(element, font);\n }\n\n if (this.data.textAlignment !== null) {\n element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n\n this.container.appendChild(element);\n return this.container;\n }\n\n _setTextStyle(element, font) {\n const style = element.style;\n style.fontSize = `${this.data.fontSize}px`;\n style.direction = this.data.fontDirection < 0 ? \"rtl\" : \"ltr\";\n\n if (!font) {\n return;\n }\n\n let bold = \"normal\";\n\n if (font.black) {\n bold = \"900\";\n } else if (font.bold) {\n bold = \"bold\";\n }\n\n style.fontWeight = bold;\n style.fontStyle = font.italic ? \"italic\" : \"normal\";\n const fontFamily = font.loadedName ? `\"${font.loadedName}\", ` : \"\";\n const fallbackName = font.fallbackName || \"Helvetica, sans-serif\";\n style.fontFamily = fontFamily + fallbackName;\n }\n\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, parameters.renderInteractiveForms);\n }\n\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n const value = storage.getOrCreateValue(id, data.fieldValue && data.fieldValue !== \"Off\");\n this.container.className = \"buttonWidgetAnnotation checkBox\";\n const element = document.createElement(\"input\");\n element.disabled = data.readOnly;\n element.type = \"checkbox\";\n element.name = this.data.fieldName;\n\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n\n element.addEventListener(\"change\", function (event) {\n storage.setValue(id, event.target.checked);\n });\n this.container.appendChild(element);\n return this.container;\n }\n\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, parameters.renderInteractiveForms);\n }\n\n render() {\n this.container.className = \"buttonWidgetAnnotation radioButton\";\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n const value = storage.getOrCreateValue(id, data.fieldValue === data.buttonValue);\n const element = document.createElement(\"input\");\n element.disabled = data.readOnly;\n element.type = \"radio\";\n element.name = data.fieldName;\n\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n\n element.addEventListener(\"change\", function (event) {\n const name = event.target.name;\n\n for (const radio of document.getElementsByName(name)) {\n if (radio !== event.target) {\n storage.setValue(radio.parentNode.getAttribute(\"data-annotation-id\"), false);\n }\n }\n\n storage.setValue(id, event.target.checked);\n });\n this.container.appendChild(element);\n return this.container;\n }\n\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n render() {\n const container = super.render();\n container.className = \"buttonWidgetAnnotation pushButton\";\n return container;\n }\n\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, parameters.renderInteractiveForms);\n }\n\n render() {\n this.container.className = \"choiceWidgetAnnotation\";\n const storage = this.annotationStorage;\n const id = this.data.id;\n storage.getOrCreateValue(id, this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null);\n const selectElement = document.createElement(\"select\");\n selectElement.disabled = this.data.readOnly;\n selectElement.name = this.data.fieldName;\n\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n\n if (this.data.fieldValue.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n }\n\n selectElement.appendChild(optionElement);\n }\n\n selectElement.addEventListener(\"input\", function (event) {\n const options = event.target.options;\n const value = options[options.selectedIndex].value;\n storage.setValue(id, value);\n });\n this.container.appendChild(selectElement);\n return this.container;\n }\n\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable);\n }\n\n render() {\n const IGNORE_TYPES = [\"Line\", \"Square\", \"Circle\", \"PolyLine\", \"Polygon\", \"Ink\"];\n this.container.className = \"popupAnnotation\";\n\n if (IGNORE_TYPES.includes(this.data.parentType)) {\n return this.container;\n }\n\n const selector = `[data-annotation-id=\"${this.data.parentId}\"]`;\n const parentElement = this.layer.querySelector(selector);\n\n if (!parentElement) {\n return this.container;\n }\n\n const popup = new PopupElement({\n container: this.container,\n trigger: parentElement,\n color: this.data.color,\n title: this.data.title,\n modificationDate: this.data.modificationDate,\n contents: this.data.contents\n });\n const parentLeft = parseFloat(parentElement.style.left);\n const parentWidth = parseFloat(parentElement.style.width);\n this.container.style.transformOrigin = `-${parentLeft + parentWidth}px -${parentElement.style.top}`;\n this.container.style.left = `${parentLeft + parentWidth}px`;\n this.container.appendChild(popup.render());\n return this.container;\n }\n\n}\n\nclass PopupElement {\n constructor(parameters) {\n this.container = parameters.container;\n this.trigger = parameters.trigger;\n this.color = parameters.color;\n this.title = parameters.title;\n this.modificationDate = parameters.modificationDate;\n this.contents = parameters.contents;\n this.hideWrapper = parameters.hideWrapper || false;\n this.pinned = false;\n }\n\n render() {\n const BACKGROUND_ENLIGHT = 0.7;\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"popupWrapper\";\n this.hideElement = this.hideWrapper ? wrapper : this.container;\n this.hideElement.setAttribute(\"hidden\", true);\n const popup = document.createElement(\"div\");\n popup.className = \"popup\";\n const color = this.color;\n\n if (color) {\n const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0);\n }\n\n const title = document.createElement(\"h1\");\n title.textContent = this.title;\n popup.appendChild(title);\n\n const dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate);\n\n if (dateObject) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.textContent = \"{{date}}, {{time}}\";\n modificationDate.dataset.l10nId = \"annotation_date_string\";\n modificationDate.dataset.l10nArgs = JSON.stringify({\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString()\n });\n popup.appendChild(modificationDate);\n }\n\n const contents = this._formatContents(this.contents);\n\n popup.appendChild(contents);\n this.trigger.addEventListener(\"click\", this._toggle.bind(this));\n this.trigger.addEventListener(\"mouseover\", this._show.bind(this, false));\n this.trigger.addEventListener(\"mouseout\", this._hide.bind(this, false));\n popup.addEventListener(\"click\", this._hide.bind(this, true));\n wrapper.appendChild(popup);\n return wrapper;\n }\n\n _formatContents(contents) {\n const p = document.createElement(\"p\");\n const lines = contents.split(/(?:\\r\\n?|\\n)/);\n\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.appendChild(document.createTextNode(line));\n\n if (i < ii - 1) {\n p.appendChild(document.createElement(\"br\"));\n }\n }\n\n return p;\n }\n\n _toggle() {\n if (this.pinned) {\n this._hide(true);\n } else {\n this._show(true);\n }\n }\n\n _show(pin = false) {\n if (pin) {\n this.pinned = true;\n }\n\n if (this.hideElement.hasAttribute(\"hidden\")) {\n this.hideElement.removeAttribute(\"hidden\");\n this.container.style.zIndex += 1;\n }\n }\n\n _hide(unpin = true) {\n if (unpin) {\n this.pinned = false;\n }\n\n if (!this.hideElement.hasAttribute(\"hidden\") && !this.pinned) {\n this.hideElement.setAttribute(\"hidden\", true);\n this.container.style.zIndex -= 1;\n }\n }\n\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"freeTextAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"lineAnnotation\";\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n const line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n svg.appendChild(line);\n this.container.append(svg);\n\n this._createPopup(this.container, line, data);\n\n return this.container;\n }\n\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"squareAnnotation\";\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n const borderWidth = data.borderStyle.width;\n const square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"none\");\n svg.appendChild(square);\n this.container.append(svg);\n\n this._createPopup(this.container, square, data);\n\n return this.container;\n }\n\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"circleAnnotation\";\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n const borderWidth = data.borderStyle.width;\n const circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"none\");\n svg.appendChild(circle);\n this.container.append(svg);\n\n this._createPopup(this.container, circle, data);\n\n return this.container;\n }\n\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.className = this.containerClassName;\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n let points = [];\n\n for (const coordinate of data.vertices) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n\n points = points.join(\" \");\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"none\");\n svg.appendChild(polyline);\n this.container.append(svg);\n\n this._createPopup(this.container, polyline, data);\n\n return this.container;\n }\n\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"caretAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.className = this.containerClassName;\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n\n for (const inkList of data.inkLists) {\n let points = [];\n\n for (const coordinate of inkList) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(`${x},${y}`);\n }\n\n points = points.join(\" \");\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"none\");\n\n this._createPopup(this.container, polyline, data);\n\n svg.appendChild(polyline);\n }\n\n this.container.append(svg);\n return this.container;\n }\n\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"highlightAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"underlineAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"squigglyAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"strikeoutAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"stampAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, true);\n const {\n filename,\n content\n } = this.data.file;\n this.filename = (0, _display_utils.getFilenameFromUrl)(filename);\n this.content = content;\n\n if (this.linkService.eventBus) {\n this.linkService.eventBus.dispatch(\"fileattachmentannotation\", {\n source: this,\n id: (0, _util.stringToPDFString)(filename),\n filename,\n content\n });\n }\n }\n\n render() {\n this.container.className = \"fileAttachmentAnnotation\";\n const trigger = document.createElement(\"div\");\n trigger.style.height = this.container.style.height;\n trigger.style.width = this.container.style.width;\n trigger.addEventListener(\"dblclick\", this._download.bind(this));\n\n if (!this.data.hasPopup && (this.data.title || this.data.contents)) {\n this._createPopup(this.container, trigger, this.data);\n }\n\n this.container.appendChild(trigger);\n return this.container;\n }\n\n _download() {\n if (!this.downloadManager) {\n (0, _util.warn)(\"Download cannot be started due to unavailable download manager\");\n return;\n }\n\n this.downloadManager.downloadData(this.content, this.filename, \"\");\n }\n\n}\n\nclass AnnotationLayer {\n static render(parameters) {\n const sortedAnnotations = [],\n popupAnnotations = [];\n\n for (const data of parameters.annotations) {\n if (!data) {\n continue;\n }\n\n if (data.annotationType === _util.AnnotationType.POPUP) {\n popupAnnotations.push(data);\n continue;\n }\n\n sortedAnnotations.push(data);\n }\n\n if (popupAnnotations.length) {\n sortedAnnotations.push(...popupAnnotations);\n }\n\n for (const data of sortedAnnotations) {\n const element = AnnotationElementFactory.create({\n data,\n layer: parameters.div,\n page: parameters.page,\n viewport: parameters.viewport,\n linkService: parameters.linkService,\n downloadManager: parameters.downloadManager,\n imageResourcesPath: parameters.imageResourcesPath || \"\",\n renderInteractiveForms: typeof parameters.renderInteractiveForms === \"boolean\" ? parameters.renderInteractiveForms : true,\n svgFactory: new _display_utils.DOMSVGFactory(),\n annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage()\n });\n\n if (element.isRenderable) {\n parameters.div.appendChild(element.render());\n }\n }\n }\n\n static update(parameters) {\n for (const data of parameters.annotations) {\n const element = parameters.div.querySelector(`[data-annotation-id=\"${data.id}\"]`);\n\n if (element) {\n element.style.transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n }\n }\n\n parameters.div.removeAttribute(\"hidden\");\n }\n\n}\n\nexports.AnnotationLayer = AnnotationLayer;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.renderTextLayer = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar renderTextLayer = function renderTextLayerClosure() {\n var MAX_TEXT_DIVS_TO_RENDER = 100000;\n var NonWhitespaceRegexp = /\\S/;\n\n function isAllWhitespace(str) {\n return !NonWhitespaceRegexp.test(str);\n }\n\n function appendText(task, geom, styles) {\n var textDiv = document.createElement(\"span\");\n var textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n isWhitespace: false,\n originalTransform: null,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n scale: 1\n };\n\n task._textDivs.push(textDiv);\n\n if (isAllWhitespace(geom.str)) {\n textDivProperties.isWhitespace = true;\n\n task._textDivProperties.set(textDiv, textDivProperties);\n\n return;\n }\n\n var tx = _util.Util.transform(task._viewport.transform, geom.transform);\n\n var angle = Math.atan2(tx[1], tx[0]);\n var style = styles[geom.fontName];\n\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n\n var fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]);\n var fontAscent = fontHeight;\n\n if (style.ascent) {\n fontAscent = style.ascent * fontAscent;\n } else if (style.descent) {\n fontAscent = (1 + style.descent) * fontAscent;\n }\n\n let left, top;\n\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n\n textDiv.style.left = `${left}px`;\n textDiv.style.top = `${top}px`;\n textDiv.style.fontSize = `${fontHeight}px`;\n textDiv.style.fontFamily = style.fontFamily;\n textDiv.textContent = geom.str;\n\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName = geom.fontName;\n }\n\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n\n let shouldScaleText = false;\n\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n\n if (shouldScaleText) {\n if (style.vertical) {\n textDivProperties.canvasWidth = geom.height * task._viewport.scale;\n } else {\n textDivProperties.canvasWidth = geom.width * task._viewport.scale;\n }\n }\n\n task._textDivProperties.set(textDiv, textDivProperties);\n\n if (task._textContentStream) {\n task._layoutText(textDiv);\n }\n\n if (task._enhanceTextSelection) {\n var angleCos = 1,\n angleSin = 0;\n\n if (angle !== 0) {\n angleCos = Math.cos(angle);\n angleSin = Math.sin(angle);\n }\n\n var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;\n var divHeight = fontHeight;\n var m, b;\n\n if (angle !== 0) {\n m = [angleCos, angleSin, -angleSin, angleCos, left, top];\n b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);\n } else {\n b = [left, top, left + divWidth, top + divHeight];\n }\n\n task._bounds.push({\n left: b[0],\n top: b[1],\n right: b[2],\n bottom: b[3],\n div: textDiv,\n size: [divWidth, divHeight],\n m\n });\n }\n }\n\n function render(task) {\n if (task._canceled) {\n return;\n }\n\n var textDivs = task._textDivs;\n var capability = task._capability;\n var textDivsLength = textDivs.length;\n\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n task._renderingDone = true;\n capability.resolve();\n return;\n }\n\n if (!task._textContentStream) {\n for (var i = 0; i < textDivsLength; i++) {\n task._layoutText(textDivs[i]);\n }\n }\n\n task._renderingDone = true;\n capability.resolve();\n }\n\n function findPositiveMin(ts, offset, count) {\n let result = 0;\n\n for (let i = 0; i < count; i++) {\n const t = ts[offset++];\n\n if (t > 0) {\n result = result ? Math.min(t, result) : t;\n }\n }\n\n return result;\n }\n\n function expand(task) {\n var bounds = task._bounds;\n var viewport = task._viewport;\n var expanded = expandBounds(viewport.width, viewport.height, bounds);\n\n for (var i = 0; i < expanded.length; i++) {\n var div = bounds[i].div;\n\n var divProperties = task._textDivProperties.get(div);\n\n if (divProperties.angle === 0) {\n divProperties.paddingLeft = bounds[i].left - expanded[i].left;\n divProperties.paddingTop = bounds[i].top - expanded[i].top;\n divProperties.paddingRight = expanded[i].right - bounds[i].right;\n divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;\n\n task._textDivProperties.set(div, divProperties);\n\n continue;\n }\n\n var e = expanded[i],\n b = bounds[i];\n var m = b.m,\n c = m[0],\n s = m[1];\n var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n var ts = new Float64Array(64);\n points.forEach(function (p, j) {\n var t = _util.Util.applyTransform(p, m);\n\n ts[j + 0] = c && (e.left - t[0]) / c;\n ts[j + 4] = s && (e.top - t[1]) / s;\n ts[j + 8] = c && (e.right - t[0]) / c;\n ts[j + 12] = s && (e.bottom - t[1]) / s;\n ts[j + 16] = s && (e.left - t[0]) / -s;\n ts[j + 20] = c && (e.top - t[1]) / c;\n ts[j + 24] = s && (e.right - t[0]) / -s;\n ts[j + 28] = c && (e.bottom - t[1]) / c;\n ts[j + 32] = c && (e.left - t[0]) / -c;\n ts[j + 36] = s && (e.top - t[1]) / -s;\n ts[j + 40] = c && (e.right - t[0]) / -c;\n ts[j + 44] = s && (e.bottom - t[1]) / -s;\n ts[j + 48] = s && (e.left - t[0]) / s;\n ts[j + 52] = c && (e.top - t[1]) / -c;\n ts[j + 56] = s && (e.right - t[0]) / s;\n ts[j + 60] = c && (e.bottom - t[1]) / -c;\n });\n var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));\n divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;\n divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;\n divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;\n divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;\n\n task._textDivProperties.set(div, divProperties);\n }\n }\n\n function expandBounds(width, height, boxes) {\n var bounds = boxes.map(function (box, i) {\n return {\n x1: box.left,\n y1: box.top,\n x2: box.right,\n y2: box.bottom,\n index: i,\n x1New: undefined,\n x2New: undefined\n };\n });\n expandBoundsLTR(width, bounds);\n var expanded = new Array(boxes.length);\n bounds.forEach(function (b) {\n var i = b.index;\n expanded[i] = {\n left: b.x1New,\n top: 0,\n right: b.x2New,\n bottom: 0\n };\n });\n boxes.map(function (box, i) {\n var e = expanded[i],\n b = bounds[i];\n b.x1 = box.top;\n b.y1 = width - e.right;\n b.x2 = box.bottom;\n b.y2 = width - e.left;\n b.index = i;\n b.x1New = undefined;\n b.x2New = undefined;\n });\n expandBoundsLTR(height, bounds);\n bounds.forEach(function (b) {\n var i = b.index;\n expanded[i].top = b.x1New;\n expanded[i].bottom = b.x2New;\n });\n return expanded;\n }\n\n function expandBoundsLTR(width, bounds) {\n bounds.sort(function (a, b) {\n return a.x1 - b.x1 || a.index - b.index;\n });\n var fakeBoundary = {\n x1: -Infinity,\n y1: -Infinity,\n x2: 0,\n y2: Infinity,\n index: -1,\n x1New: 0,\n x2New: 0\n };\n var horizon = [{\n start: -Infinity,\n end: Infinity,\n boundary: fakeBoundary\n }];\n bounds.forEach(function (boundary) {\n var i = 0;\n\n while (i < horizon.length && horizon[i].end <= boundary.y1) {\n i++;\n }\n\n var j = horizon.length - 1;\n\n while (j >= 0 && horizon[j].start >= boundary.y2) {\n j--;\n }\n\n var horizonPart, affectedBoundary;\n var q,\n k,\n maxXNew = -Infinity;\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n var xNew;\n\n if (affectedBoundary.x2 > boundary.x1) {\n xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1;\n } else if (affectedBoundary.x2New === undefined) {\n xNew = (affectedBoundary.x2 + boundary.x1) / 2;\n } else {\n xNew = affectedBoundary.x2New;\n }\n\n if (xNew > maxXNew) {\n maxXNew = xNew;\n }\n }\n\n boundary.x1New = maxXNew;\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n\n if (affectedBoundary.x2New === undefined) {\n if (affectedBoundary.x2 > boundary.x1) {\n if (affectedBoundary.index > boundary.index) {\n affectedBoundary.x2New = affectedBoundary.x2;\n }\n } else {\n affectedBoundary.x2New = maxXNew;\n }\n } else if (affectedBoundary.x2New > maxXNew) {\n affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);\n }\n }\n\n var changedHorizon = [],\n lastBoundary = null;\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n var useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;\n\n if (lastBoundary === useBoundary) {\n changedHorizon[changedHorizon.length - 1].end = horizonPart.end;\n } else {\n changedHorizon.push({\n start: horizonPart.start,\n end: horizonPart.end,\n boundary: useBoundary\n });\n lastBoundary = useBoundary;\n }\n }\n\n if (horizon[i].start < boundary.y1) {\n changedHorizon[0].start = boundary.y1;\n changedHorizon.unshift({\n start: horizon[i].start,\n end: boundary.y1,\n boundary: horizon[i].boundary\n });\n }\n\n if (boundary.y2 < horizon[j].end) {\n changedHorizon[changedHorizon.length - 1].end = boundary.y2;\n changedHorizon.push({\n start: boundary.y2,\n end: horizon[j].end,\n boundary: horizon[j].boundary\n });\n }\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n\n if (affectedBoundary.x2New !== undefined) {\n continue;\n }\n\n var used = false;\n\n for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) {\n used = horizon[k].boundary === affectedBoundary;\n }\n\n for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) {\n used = horizon[k].boundary === affectedBoundary;\n }\n\n for (k = 0; !used && k < changedHorizon.length; k++) {\n used = changedHorizon[k].boundary === affectedBoundary;\n }\n\n if (!used) {\n affectedBoundary.x2New = maxXNew;\n }\n }\n\n Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon));\n });\n horizon.forEach(function (horizonPart) {\n var affectedBoundary = horizonPart.boundary;\n\n if (affectedBoundary.x2New === undefined) {\n affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n }\n });\n }\n\n function TextLayerRenderTask({\n textContent,\n textContentStream,\n container,\n viewport,\n textDivs,\n textContentItemsStr,\n enhanceTextSelection\n }) {\n this._textContent = textContent;\n this._textContentStream = textContentStream;\n this._container = container;\n this._document = container.ownerDocument;\n this._viewport = viewport;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._enhanceTextSelection = !!enhanceTextSelection;\n this._fontInspectorEnabled = !!(globalThis.FontInspector && globalThis.FontInspector.enabled);\n this._reader = null;\n this._layoutTextLastFontSize = null;\n this._layoutTextLastFontFamily = null;\n this._layoutTextCtx = null;\n this._textDivProperties = new WeakMap();\n this._renderingDone = false;\n this._canceled = false;\n this._capability = (0, _util.createPromiseCapability)();\n this._renderTimer = null;\n this._bounds = [];\n\n this._capability.promise.finally(() => {\n if (this._layoutTextCtx) {\n this._layoutTextCtx.canvas.width = 0;\n this._layoutTextCtx.canvas.height = 0;\n this._layoutTextCtx = null;\n }\n }).catch(() => {});\n }\n\n TextLayerRenderTask.prototype = {\n get promise() {\n return this._capability.promise;\n },\n\n cancel: function TextLayer_cancel() {\n this._canceled = true;\n\n if (this._reader) {\n this._reader.cancel(new _util.AbortException(\"TextLayer task cancelled.\"));\n\n this._reader = null;\n }\n\n if (this._renderTimer !== null) {\n clearTimeout(this._renderTimer);\n this._renderTimer = null;\n }\n\n this._capability.reject(new Error(\"TextLayer task cancelled.\"));\n },\n\n _processItems(items, styleCache) {\n for (let i = 0, len = items.length; i < len; i++) {\n this._textContentItemsStr.push(items[i].str);\n\n appendText(this, items[i], styleCache);\n }\n },\n\n _layoutText(textDiv) {\n const textDivProperties = this._textDivProperties.get(textDiv);\n\n if (textDivProperties.isWhitespace) {\n return;\n }\n\n let transform = \"\";\n\n if (textDivProperties.canvasWidth !== 0) {\n const {\n fontSize,\n fontFamily\n } = textDiv.style;\n\n if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) {\n this._layoutTextCtx.font = `${fontSize} ${fontFamily}`;\n this._layoutTextLastFontSize = fontSize;\n this._layoutTextLastFontFamily = fontFamily;\n }\n\n const {\n width\n } = this._layoutTextCtx.measureText(textDiv.textContent);\n\n if (width > 0) {\n textDivProperties.scale = textDivProperties.canvasWidth / width;\n transform = `scaleX(${textDivProperties.scale})`;\n }\n }\n\n if (textDivProperties.angle !== 0) {\n transform = `rotate(${textDivProperties.angle}deg) ${transform}`;\n }\n\n if (transform.length > 0) {\n if (this._enhanceTextSelection) {\n textDivProperties.originalTransform = transform;\n }\n\n textDiv.style.transform = transform;\n }\n\n this._textDivProperties.set(textDiv, textDivProperties);\n\n this._container.appendChild(textDiv);\n },\n\n _render: function TextLayer_render(timeout) {\n const capability = (0, _util.createPromiseCapability)();\n let styleCache = Object.create(null);\n\n const canvas = this._document.createElement(\"canvas\");\n\n canvas.mozOpaque = true;\n this._layoutTextCtx = canvas.getContext(\"2d\", {\n alpha: false\n });\n\n if (this._textContent) {\n const textItems = this._textContent.items;\n const textStyles = this._textContent.styles;\n\n this._processItems(textItems, textStyles);\n\n capability.resolve();\n } else if (this._textContentStream) {\n const pump = () => {\n this._reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n capability.resolve();\n return;\n }\n\n Object.assign(styleCache, value.styles);\n\n this._processItems(value.items, styleCache);\n\n pump();\n }, capability.reject);\n };\n\n this._reader = this._textContentStream.getReader();\n pump();\n } else {\n throw new Error('Neither \"textContent\" nor \"textContentStream\"' + \" parameters specified.\");\n }\n\n capability.promise.then(() => {\n styleCache = null;\n\n if (!timeout) {\n render(this);\n } else {\n this._renderTimer = setTimeout(() => {\n render(this);\n this._renderTimer = null;\n }, timeout);\n }\n }, this._capability.reject);\n },\n expandTextDivs: function TextLayer_expandTextDivs(expandDivs) {\n if (!this._enhanceTextSelection || !this._renderingDone) {\n return;\n }\n\n if (this._bounds !== null) {\n expand(this);\n this._bounds = null;\n }\n\n const transformBuf = [],\n paddingBuf = [];\n\n for (var i = 0, ii = this._textDivs.length; i < ii; i++) {\n const div = this._textDivs[i];\n\n const divProps = this._textDivProperties.get(div);\n\n if (divProps.isWhitespace) {\n continue;\n }\n\n if (expandDivs) {\n transformBuf.length = 0;\n paddingBuf.length = 0;\n\n if (divProps.originalTransform) {\n transformBuf.push(divProps.originalTransform);\n }\n\n if (divProps.paddingTop > 0) {\n paddingBuf.push(`${divProps.paddingTop}px`);\n transformBuf.push(`translateY(${-divProps.paddingTop}px)`);\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingRight > 0) {\n paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`);\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingBottom > 0) {\n paddingBuf.push(`${divProps.paddingBottom}px`);\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingLeft > 0) {\n paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`);\n transformBuf.push(`translateX(${-divProps.paddingLeft / divProps.scale}px)`);\n } else {\n paddingBuf.push(0);\n }\n\n div.style.padding = paddingBuf.join(\" \");\n\n if (transformBuf.length) {\n div.style.transform = transformBuf.join(\" \");\n }\n } else {\n div.style.padding = null;\n div.style.transform = divProps.originalTransform;\n }\n }\n }\n };\n\n function renderTextLayer(renderParameters) {\n var task = new TextLayerRenderTask({\n textContent: renderParameters.textContent,\n textContentStream: renderParameters.textContentStream,\n container: renderParameters.container,\n viewport: renderParameters.viewport,\n textDivs: renderParameters.textDivs,\n textContentItemsStr: renderParameters.textContentItemsStr,\n enhanceTextSelection: renderParameters.enhanceTextSelection\n });\n\n task._render(renderParameters.timeout);\n\n return task;\n }\n\n return renderTextLayer;\n}();\n\nexports.renderTextLayer = renderTextLayer;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SVGGraphics = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nvar _is_node = __w_pdfjs_require__(4);\n\nlet SVGGraphics = function () {\n throw new Error(\"Not implemented: SVGGraphics\");\n};\n\nexports.SVGGraphics = SVGGraphics;\n{\n const SVG_DEFAULTS = {\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fillColor: \"#000000\"\n };\n const XML_NS = \"http://www.w3.org/XML/1998/namespace\";\n const XLINK_NS = \"http://www.w3.org/1999/xlink\";\n const LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n const LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n\n const convertImgDataToPng = function () {\n const PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);\n const CHUNK_WRAPPER_SIZE = 12;\n const crcTable = new Int32Array(256);\n\n for (let i = 0; i < 256; i++) {\n let c = i;\n\n for (let h = 0; h < 8; h++) {\n if (c & 1) {\n c = 0xedb88320 ^ c >> 1 & 0x7fffffff;\n } else {\n c = c >> 1 & 0x7fffffff;\n }\n }\n\n crcTable[i] = c;\n }\n\n function crc32(data, start, end) {\n let crc = -1;\n\n for (let i = start; i < end; i++) {\n const a = (crc ^ data[i]) & 0xff;\n const b = crcTable[a];\n crc = crc >>> 8 ^ b;\n }\n\n return crc ^ -1;\n }\n\n function writePngChunk(type, body, data, offset) {\n let p = offset;\n const len = body.length;\n data[p] = len >> 24 & 0xff;\n data[p + 1] = len >> 16 & 0xff;\n data[p + 2] = len >> 8 & 0xff;\n data[p + 3] = len & 0xff;\n p += 4;\n data[p] = type.charCodeAt(0) & 0xff;\n data[p + 1] = type.charCodeAt(1) & 0xff;\n data[p + 2] = type.charCodeAt(2) & 0xff;\n data[p + 3] = type.charCodeAt(3) & 0xff;\n p += 4;\n data.set(body, p);\n p += body.length;\n const crc = crc32(data, offset + 4, p);\n data[p] = crc >> 24 & 0xff;\n data[p + 1] = crc >> 16 & 0xff;\n data[p + 2] = crc >> 8 & 0xff;\n data[p + 3] = crc & 0xff;\n }\n\n function adler32(data, start, end) {\n let a = 1;\n let b = 0;\n\n for (let i = start; i < end; ++i) {\n a = (a + (data[i] & 0xff)) % 65521;\n b = (b + a) % 65521;\n }\n\n return b << 16 | a;\n }\n\n function deflateSync(literals) {\n if (!_is_node.isNodeJS) {\n return deflateSyncUncompressed(literals);\n }\n\n try {\n let input;\n\n if (parseInt(process.versions.node) >= 8) {\n input = literals;\n } else {\n input = Buffer.from(literals);\n }\n\n const output = require(\"zlib\").deflateSync(input, {\n level: 9\n });\n\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n (0, _util.warn)(\"Not compressing PNG because zlib.deflateSync is unavailable: \" + e);\n }\n\n return deflateSyncUncompressed(literals);\n }\n\n function deflateSyncUncompressed(literals) {\n let len = literals.length;\n const maxBlockLength = 0xffff;\n const deflateBlocks = Math.ceil(len / maxBlockLength);\n const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n let pi = 0;\n idat[pi++] = 0x78;\n idat[pi++] = 0x9c;\n let pos = 0;\n\n while (len > maxBlockLength) {\n idat[pi++] = 0x00;\n idat[pi++] = 0xff;\n idat[pi++] = 0xff;\n idat[pi++] = 0x00;\n idat[pi++] = 0x00;\n idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n pi += maxBlockLength;\n pos += maxBlockLength;\n len -= maxBlockLength;\n }\n\n idat[pi++] = 0x01;\n idat[pi++] = len & 0xff;\n idat[pi++] = len >> 8 & 0xff;\n idat[pi++] = ~len & 0xffff & 0xff;\n idat[pi++] = (~len & 0xffff) >> 8 & 0xff;\n idat.set(literals.subarray(pos), pi);\n pi += literals.length - pos;\n const adler = adler32(literals, 0, literals.length);\n idat[pi++] = adler >> 24 & 0xff;\n idat[pi++] = adler >> 16 & 0xff;\n idat[pi++] = adler >> 8 & 0xff;\n idat[pi++] = adler & 0xff;\n return idat;\n }\n\n function encode(imgData, kind, forceDataSchema, isMask) {\n const width = imgData.width;\n const height = imgData.height;\n let bitDepth, colorType, lineSize;\n const bytes = imgData.data;\n\n switch (kind) {\n case _util.ImageKind.GRAYSCALE_1BPP:\n colorType = 0;\n bitDepth = 1;\n lineSize = width + 7 >> 3;\n break;\n\n case _util.ImageKind.RGB_24BPP:\n colorType = 2;\n bitDepth = 8;\n lineSize = width * 3;\n break;\n\n case _util.ImageKind.RGBA_32BPP:\n colorType = 6;\n bitDepth = 8;\n lineSize = width * 4;\n break;\n\n default:\n throw new Error(\"invalid format\");\n }\n\n const literals = new Uint8Array((1 + lineSize) * height);\n let offsetLiterals = 0,\n offsetBytes = 0;\n\n for (let y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0;\n literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals);\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n\n if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) {\n offsetLiterals = 0;\n\n for (let y = 0; y < height; y++) {\n offsetLiterals++;\n\n for (let i = 0; i < lineSize; i++) {\n literals[offsetLiterals++] ^= 0xff;\n }\n }\n }\n\n const ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]);\n const idat = deflateSync(literals);\n const pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;\n const data = new Uint8Array(pngLength);\n let offset = 0;\n data.set(PNG_HEADER, offset);\n offset += PNG_HEADER.length;\n writePngChunk(\"IHDR\", ihdr, data, offset);\n offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n writePngChunk(\"IDATA\", idat, data, offset);\n offset += CHUNK_WRAPPER_SIZE + idat.length;\n writePngChunk(\"IEND\", new Uint8Array(0), data, offset);\n return (0, _util.createObjectURL)(data, \"image/png\", forceDataSchema);\n }\n\n return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n const kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind;\n return encode(imgData, kind, forceDataSchema, isMask);\n };\n }();\n\n class SVGExtraState {\n constructor() {\n this.fontSizeScale = 1;\n this.fontWeight = SVG_DEFAULTS.fontWeight;\n this.fontSize = 0;\n this.textMatrix = _util.IDENTITY_MATRIX;\n this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.textRenderingMode = _util.TextRenderingMode.FILL;\n this.textMatrixScale = 1;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n this.fillColor = SVG_DEFAULTS.fillColor;\n this.strokeColor = \"#000000\";\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = \"\";\n this.lineCap = \"\";\n this.miterLimit = 0;\n this.dashArray = [];\n this.dashPhase = 0;\n this.dependencies = [];\n this.activeClipUrl = null;\n this.clipGroup = null;\n this.maskId = \"\";\n }\n\n clone() {\n return Object.create(this);\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n\n }\n\n function opListToTree(opList) {\n let opTree = [];\n const tmp = [];\n\n for (const opListElement of opList) {\n if (opListElement.fn === \"save\") {\n opTree.push({\n fnId: 92,\n fn: \"group\",\n items: []\n });\n tmp.push(opTree);\n opTree = opTree[opTree.length - 1].items;\n continue;\n }\n\n if (opListElement.fn === \"restore\") {\n opTree = tmp.pop();\n } else {\n opTree.push(opListElement);\n }\n }\n\n return opTree;\n }\n\n function pf(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n const s = value.toFixed(10);\n let i = s.length - 1;\n\n if (s[i] !== \"0\") {\n return s;\n }\n\n do {\n i--;\n } while (s[i] === \"0\");\n\n return s.substring(0, s[i] === \".\" ? i : i + 1);\n }\n\n function pm(m) {\n if (m[4] === 0 && m[5] === 0) {\n if (m[1] === 0 && m[2] === 0) {\n if (m[0] === 1 && m[3] === 1) {\n return \"\";\n }\n\n return `scale(${pf(m[0])} ${pf(m[3])})`;\n }\n\n if (m[0] === m[3] && m[1] === -m[2]) {\n const a = Math.acos(m[0]) * 180 / Math.PI;\n return `rotate(${pf(a)})`;\n }\n } else {\n if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n return `translate(${pf(m[4])} ${pf(m[5])})`;\n }\n }\n\n return `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` + `${pf(m[5])})`;\n }\n\n let clipCount = 0;\n let maskCount = 0;\n let shadingCount = 0;\n exports.SVGGraphics = SVGGraphics = class SVGGraphics {\n constructor(commonObjs, objs, forceDataSchema = false) {\n this.svgFactory = new _display_utils.DOMSVGFactory();\n this.current = new SVGExtraState();\n this.transformMatrix = _util.IDENTITY_MATRIX;\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.embedFonts = false;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!forceDataSchema;\n this._operatorIdMapping = [];\n\n for (const op in _util.OPS) {\n this._operatorIdMapping[_util.OPS[op]] = op;\n }\n }\n\n save() {\n this.transformStack.push(this.transformMatrix);\n const old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n this.pendingClip = null;\n this.tgrp = null;\n }\n\n group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n }\n\n loadDependencies(operatorList) {\n const fnArray = operatorList.fnArray;\n const argsArray = operatorList.argsArray;\n\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n if (fnArray[i] !== _util.OPS.dependency) {\n continue;\n }\n\n for (const obj of argsArray[i]) {\n const objsPool = obj.startsWith(\"g_\") ? this.commonObjs : this.objs;\n const promise = new Promise(resolve => {\n objsPool.get(obj, resolve);\n });\n this.current.dependencies.push(promise);\n }\n }\n\n return Promise.all(this.current.dependencies);\n }\n\n transform(a, b, c, d, e, f) {\n const transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix);\n this.tgrp = null;\n }\n\n getSVG(operatorList, viewport) {\n this.viewport = viewport;\n\n const svgElement = this._initialize(viewport);\n\n return this.loadDependencies(operatorList).then(() => {\n this.transformMatrix = _util.IDENTITY_MATRIX;\n this.executeOpTree(this.convertOpList(operatorList));\n return svgElement;\n });\n }\n\n convertOpList(operatorList) {\n const operatorIdMapping = this._operatorIdMapping;\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n const opList = [];\n\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n const fnId = fnArray[i];\n opList.push({\n fnId,\n fn: operatorIdMapping[fnId],\n args: argsArray[i]\n });\n }\n\n return opListToTree(opList);\n }\n\n executeOpTree(opTree) {\n for (const opTreeElement of opTree) {\n const fn = opTreeElement.fn;\n const fnId = opTreeElement.fnId;\n const args = opTreeElement.args;\n\n switch (fnId | 0) {\n case _util.OPS.beginText:\n this.beginText();\n break;\n\n case _util.OPS.dependency:\n break;\n\n case _util.OPS.setLeading:\n this.setLeading(args);\n break;\n\n case _util.OPS.setLeadingMoveText:\n this.setLeadingMoveText(args[0], args[1]);\n break;\n\n case _util.OPS.setFont:\n this.setFont(args);\n break;\n\n case _util.OPS.showText:\n this.showText(args[0]);\n break;\n\n case _util.OPS.showSpacedText:\n this.showText(args[0]);\n break;\n\n case _util.OPS.endText:\n this.endText();\n break;\n\n case _util.OPS.moveText:\n this.moveText(args[0], args[1]);\n break;\n\n case _util.OPS.setCharSpacing:\n this.setCharSpacing(args[0]);\n break;\n\n case _util.OPS.setWordSpacing:\n this.setWordSpacing(args[0]);\n break;\n\n case _util.OPS.setHScale:\n this.setHScale(args[0]);\n break;\n\n case _util.OPS.setTextMatrix:\n this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n\n case _util.OPS.setTextRise:\n this.setTextRise(args[0]);\n break;\n\n case _util.OPS.setTextRenderingMode:\n this.setTextRenderingMode(args[0]);\n break;\n\n case _util.OPS.setLineWidth:\n this.setLineWidth(args[0]);\n break;\n\n case _util.OPS.setLineJoin:\n this.setLineJoin(args[0]);\n break;\n\n case _util.OPS.setLineCap:\n this.setLineCap(args[0]);\n break;\n\n case _util.OPS.setMiterLimit:\n this.setMiterLimit(args[0]);\n break;\n\n case _util.OPS.setFillRGBColor:\n this.setFillRGBColor(args[0], args[1], args[2]);\n break;\n\n case _util.OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(args[0], args[1], args[2]);\n break;\n\n case _util.OPS.setStrokeColorN:\n this.setStrokeColorN(args);\n break;\n\n case _util.OPS.setFillColorN:\n this.setFillColorN(args);\n break;\n\n case _util.OPS.shadingFill:\n this.shadingFill(args[0]);\n break;\n\n case _util.OPS.setDash:\n this.setDash(args[0], args[1]);\n break;\n\n case _util.OPS.setRenderingIntent:\n this.setRenderingIntent(args[0]);\n break;\n\n case _util.OPS.setFlatness:\n this.setFlatness(args[0]);\n break;\n\n case _util.OPS.setGState:\n this.setGState(args[0]);\n break;\n\n case _util.OPS.fill:\n this.fill();\n break;\n\n case _util.OPS.eoFill:\n this.eoFill();\n break;\n\n case _util.OPS.stroke:\n this.stroke();\n break;\n\n case _util.OPS.fillStroke:\n this.fillStroke();\n break;\n\n case _util.OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n\n case _util.OPS.clip:\n this.clip(\"nonzero\");\n break;\n\n case _util.OPS.eoClip:\n this.clip(\"evenodd\");\n break;\n\n case _util.OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n\n case _util.OPS.paintImageXObject:\n this.paintImageXObject(args[0]);\n break;\n\n case _util.OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(args[0]);\n break;\n\n case _util.OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(args[0]);\n break;\n\n case _util.OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(args[0], args[1]);\n break;\n\n case _util.OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n\n case _util.OPS.closePath:\n this.closePath();\n break;\n\n case _util.OPS.closeStroke:\n this.closeStroke();\n break;\n\n case _util.OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n\n case _util.OPS.closeEOFillStroke:\n this.closeEOFillStroke();\n break;\n\n case _util.OPS.nextLine:\n this.nextLine();\n break;\n\n case _util.OPS.transform:\n this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n\n case _util.OPS.constructPath:\n this.constructPath(args[0], args[1]);\n break;\n\n case _util.OPS.endPath:\n this.endPath();\n break;\n\n case 92:\n this.group(opTreeElement.items);\n break;\n\n default:\n (0, _util.warn)(`Unimplemented operator ${fn}`);\n break;\n }\n }\n }\n\n setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n }\n\n setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n const current = this.current;\n current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];\n current.textMatrixScale = Math.sqrt(a * a + b * b);\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtElement.appendChild(current.tspan);\n }\n\n beginText() {\n const current = this.current;\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.textMatrix = _util.IDENTITY_MATRIX;\n current.lineMatrix = _util.IDENTITY_MATRIX;\n current.textMatrixScale = 1;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtgrp = this.svgFactory.createElement(\"svg:g\");\n current.xcoords = [];\n current.ycoords = [];\n }\n\n moveText(x, y) {\n const current = this.current;\n current.x = current.lineX += x;\n current.y = current.lineY += y;\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n\n if (fontSize === 0) {\n return;\n }\n\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n let x = 0;\n\n for (const glyph of glyphs) {\n if (glyph === null) {\n x += fontDirection * wordSpacing;\n continue;\n } else if ((0, _util.isNum)(glyph)) {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n let scaledX, scaledY;\n let width = glyph.width;\n\n if (vertical) {\n let vx;\n const vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (glyph.isInFont || font.missingFile) {\n current.xcoords.push(current.x + scaledX);\n\n if (vertical) {\n current.ycoords.push(-current.y + scaledY);\n }\n\n current.tspan.textContent += character;\n } else {}\n\n let charWidth;\n\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n\n x += charWidth;\n }\n\n current.tspan.setAttributeNS(null, \"x\", current.xcoords.map(pf).join(\" \"));\n\n if (vertical) {\n current.tspan.setAttributeNS(null, \"y\", current.ycoords.map(pf).join(\" \"));\n } else {\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n\n if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n current.tspan.setAttributeNS(null, \"font-style\", current.fontStyle);\n }\n\n if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n current.tspan.setAttributeNS(null, \"font-weight\", current.fontWeight);\n }\n\n const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, \"fill\", current.fillColor);\n }\n\n if (current.fillAlpha < 1) {\n current.tspan.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n }\n } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) {\n current.tspan.setAttributeNS(null, \"fill\", \"transparent\");\n } else {\n current.tspan.setAttributeNS(null, \"fill\", \"none\");\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n const lineWidthScale = 1 / (current.textMatrixScale || 1);\n\n this._setStrokeAttributes(current.tspan, lineWidthScale);\n }\n\n let textMatrix = current.textMatrix;\n\n if (current.textRise !== 0) {\n textMatrix = textMatrix.slice();\n textMatrix[5] += current.textRise;\n }\n\n current.txtElement.setAttributeNS(null, \"transform\", `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`);\n current.txtElement.setAttributeNS(XML_NS, \"xml:space\", \"preserve\");\n current.txtElement.appendChild(current.tspan);\n current.txtgrp.appendChild(current.txtElement);\n\n this._ensureTransformGroup().appendChild(current.txtElement);\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n addFontStyle(fontObj) {\n if (!fontObj.data) {\n throw new Error(\"addFontStyle: No font data available, \" + 'ensure that the \"fontExtraProperties\" API parameter is set.');\n }\n\n if (!this.cssStyle) {\n this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n this.defs.appendChild(this.cssStyle);\n }\n\n const url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema);\n this.cssStyle.textContent += `@font-face { font-family: \"${fontObj.loadedName}\";` + ` src: url(${url}); }\\n`;\n }\n\n setFont(details) {\n const current = this.current;\n const fontObj = this.commonObjs.get(details[0]);\n let size = details[1];\n current.font = fontObj;\n\n if (this.embedFonts && !fontObj.missingFile && !this.embeddedFonts[fontObj.loadedName]) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n\n current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;\n let bold = \"normal\";\n\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n current.fontSize = size;\n current.fontFamily = fontObj.loadedName;\n current.fontWeight = bold;\n current.fontStyle = italic;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.xcoords = [];\n current.ycoords = [];\n }\n\n endText() {\n const current = this.current;\n\n if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement && current.txtElement.hasChildNodes()) {\n current.element = current.txtElement;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n setLineWidth(width) {\n if (width > 0) {\n this.current.lineWidth = width;\n }\n }\n\n setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.current.miterLimit = limit;\n }\n\n setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n }\n\n setStrokeRGBColor(r, g, b) {\n this.current.strokeColor = _util.Util.makeCssRgb(r, g, b);\n }\n\n setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n }\n\n setFillRGBColor(r, g, b) {\n this.current.fillColor = _util.Util.makeCssRgb(r, g, b);\n this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n this.current.xcoords = [];\n this.current.ycoords = [];\n }\n\n setStrokeColorN(args) {\n this.current.strokeColor = this._makeColorN_Pattern(args);\n }\n\n setFillColorN(args) {\n this.current.fillColor = this._makeColorN_Pattern(args);\n }\n\n shadingFill(args) {\n const width = this.viewport.width;\n const height = this.viewport.height;\n\n const inv = _util.Util.inverseTransform(this.transformMatrix);\n\n const bl = _util.Util.applyTransform([0, 0], inv);\n\n const br = _util.Util.applyTransform([0, height], inv);\n\n const ul = _util.Util.applyTransform([width, 0], inv);\n\n const ur = _util.Util.applyTransform([width, height], inv);\n\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", x0);\n rect.setAttributeNS(null, \"y\", y0);\n rect.setAttributeNS(null, \"width\", x1 - x0);\n rect.setAttributeNS(null, \"height\", y1 - y0);\n rect.setAttributeNS(null, \"fill\", this._makeShadingPattern(args));\n\n if (this.current.fillAlpha < 1) {\n rect.setAttributeNS(null, \"fill-opacity\", this.current.fillAlpha);\n }\n\n this._ensureTransformGroup().appendChild(rect);\n }\n\n _makeColorN_Pattern(args) {\n if (args[0] === \"TilingPattern\") {\n return this._makeTilingPattern(args);\n }\n\n return this._makeShadingPattern(args);\n }\n\n _makeTilingPattern(args) {\n const color = args[1];\n const operatorList = args[2];\n const matrix = args[3] || _util.IDENTITY_MATRIX;\n const [x0, y0, x1, y1] = args[4];\n const xstep = args[5];\n const ystep = args[6];\n const paintType = args[7];\n const tilingId = `shading${shadingCount++}`;\n\n const [tx0, ty0] = _util.Util.applyTransform([x0, y0], matrix);\n\n const [tx1, ty1] = _util.Util.applyTransform([x1, y1], matrix);\n\n const [xscale, yscale] = _util.Util.singularValueDecompose2dScale(matrix);\n\n const txstep = xstep * xscale;\n const tystep = ystep * yscale;\n const tiling = this.svgFactory.createElement(\"svg:pattern\");\n tiling.setAttributeNS(null, \"id\", tilingId);\n tiling.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n tiling.setAttributeNS(null, \"width\", txstep);\n tiling.setAttributeNS(null, \"height\", tystep);\n tiling.setAttributeNS(null, \"x\", `${tx0}`);\n tiling.setAttributeNS(null, \"y\", `${ty0}`);\n const svg = this.svg;\n const transformMatrix = this.transformMatrix;\n const fillColor = this.current.fillColor;\n const strokeColor = this.current.strokeColor;\n const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);\n this.svg = bbox;\n this.transformMatrix = matrix;\n\n if (paintType === 2) {\n const cssColor = _util.Util.makeCssRgb(...color);\n\n this.current.fillColor = cssColor;\n this.current.strokeColor = cssColor;\n }\n\n this.executeOpTree(this.convertOpList(operatorList));\n this.svg = svg;\n this.transformMatrix = transformMatrix;\n this.current.fillColor = fillColor;\n this.current.strokeColor = strokeColor;\n tiling.appendChild(bbox.childNodes[0]);\n this.defs.appendChild(tiling);\n return `url(#${tilingId})`;\n }\n\n _makeShadingPattern(args) {\n switch (args[0]) {\n case \"RadialAxial\":\n const shadingId = `shading${shadingCount++}`;\n const colorStops = args[3];\n let gradient;\n\n switch (args[1]) {\n case \"axial\":\n const point0 = args[4];\n const point1 = args[5];\n gradient = this.svgFactory.createElement(\"svg:linearGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"x1\", point0[0]);\n gradient.setAttributeNS(null, \"y1\", point0[1]);\n gradient.setAttributeNS(null, \"x2\", point1[0]);\n gradient.setAttributeNS(null, \"y2\", point1[1]);\n break;\n\n case \"radial\":\n const focalPoint = args[4];\n const circlePoint = args[5];\n const focalRadius = args[6];\n const circleRadius = args[7];\n gradient = this.svgFactory.createElement(\"svg:radialGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"cx\", circlePoint[0]);\n gradient.setAttributeNS(null, \"cy\", circlePoint[1]);\n gradient.setAttributeNS(null, \"r\", circleRadius);\n gradient.setAttributeNS(null, \"fx\", focalPoint[0]);\n gradient.setAttributeNS(null, \"fy\", focalPoint[1]);\n gradient.setAttributeNS(null, \"fr\", focalRadius);\n break;\n\n default:\n throw new Error(`Unknown RadialAxial type: ${args[1]}`);\n }\n\n for (const colorStop of colorStops) {\n const stop = this.svgFactory.createElement(\"svg:stop\");\n stop.setAttributeNS(null, \"offset\", colorStop[0]);\n stop.setAttributeNS(null, \"stop-color\", colorStop[1]);\n gradient.appendChild(stop);\n }\n\n this.defs.appendChild(gradient);\n return `url(#${shadingId})`;\n\n case \"Mesh\":\n (0, _util.warn)(\"Unimplemented pattern Mesh\");\n return null;\n\n case \"Dummy\":\n return \"hotpink\";\n\n default:\n throw new Error(`Unknown IR type: ${args[0]}`);\n }\n }\n\n setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n }\n\n constructPath(ops, args) {\n const current = this.current;\n let x = current.x,\n y = current.y;\n let d = [];\n let j = 0;\n\n for (const op of ops) {\n switch (op | 0) {\n case _util.OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n d.push(\"M\", pf(x), pf(y), \"L\", pf(xw), pf(y), \"L\", pf(xw), pf(yh), \"L\", pf(x), pf(yh), \"Z\");\n break;\n\n case _util.OPS.moveTo:\n x = args[j++];\n y = args[j++];\n d.push(\"M\", pf(x), pf(y));\n break;\n\n case _util.OPS.lineTo:\n x = args[j++];\n y = args[j++];\n d.push(\"L\", pf(x), pf(y));\n break;\n\n case _util.OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));\n j += 6;\n break;\n\n case _util.OPS.curveTo2:\n d.push(\"C\", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n\n case _util.OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));\n j += 4;\n break;\n\n case _util.OPS.closePath:\n d.push(\"Z\");\n break;\n }\n }\n\n d = d.join(\" \");\n\n if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) {\n d = current.path.getAttributeNS(null, \"d\") + d;\n } else {\n current.path = this.svgFactory.createElement(\"svg:path\");\n\n this._ensureTransformGroup().appendChild(current.path);\n }\n\n current.path.setAttributeNS(null, \"d\", d);\n current.path.setAttributeNS(null, \"fill\", \"none\");\n current.element = current.path;\n current.setCurrentPoint(x, y);\n }\n\n endPath() {\n const current = this.current;\n current.path = null;\n\n if (!this.pendingClip) {\n return;\n }\n\n if (!current.element) {\n this.pendingClip = null;\n return;\n }\n\n const clipId = `clippath${clipCount++}`;\n const clipPath = this.svgFactory.createElement(\"svg:clipPath\");\n clipPath.setAttributeNS(null, \"id\", clipId);\n clipPath.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n const clipElement = current.element.cloneNode(true);\n\n if (this.pendingClip === \"evenodd\") {\n clipElement.setAttributeNS(null, \"clip-rule\", \"evenodd\");\n } else {\n clipElement.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n }\n\n this.pendingClip = null;\n clipPath.appendChild(clipElement);\n this.defs.appendChild(clipPath);\n\n if (current.activeClipUrl) {\n current.clipGroup = null;\n this.extraStack.forEach(function (prev) {\n prev.clipGroup = null;\n });\n clipPath.setAttributeNS(null, \"clip-path\", current.activeClipUrl);\n }\n\n current.activeClipUrl = `url(#${clipId})`;\n this.tgrp = null;\n }\n\n clip(type) {\n this.pendingClip = type;\n }\n\n closePath() {\n const current = this.current;\n\n if (current.path) {\n const d = `${current.path.getAttributeNS(null, \"d\")}Z`;\n current.path.setAttributeNS(null, \"d\", d);\n }\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setTextRise(textRise) {\n this.current.textRise = textRise;\n }\n\n setTextRenderingMode(textRenderingMode) {\n this.current.textRenderingMode = textRenderingMode;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setRenderingIntent(intent) {}\n\n setFlatness(flatness) {}\n\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n\n case \"LC\":\n this.setLineCap(value);\n break;\n\n case \"LJ\":\n this.setLineJoin(value);\n break;\n\n case \"ML\":\n this.setMiterLimit(value);\n break;\n\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n\n case \"FL\":\n this.setFlatness(value);\n break;\n\n case \"Font\":\n this.setFont(value);\n break;\n\n case \"CA\":\n this.setStrokeAlpha(value);\n break;\n\n case \"ca\":\n this.setFillAlpha(value);\n break;\n\n default:\n (0, _util.warn)(`Unimplemented graphic state operator ${key}`);\n break;\n }\n }\n }\n\n fill() {\n const current = this.current;\n\n if (current.element) {\n current.element.setAttributeNS(null, \"fill\", current.fillColor);\n current.element.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n this.endPath();\n }\n }\n\n stroke() {\n const current = this.current;\n\n if (current.element) {\n this._setStrokeAttributes(current.element);\n\n current.element.setAttributeNS(null, \"fill\", \"none\");\n this.endPath();\n }\n }\n\n _setStrokeAttributes(element, lineWidthScale = 1) {\n const current = this.current;\n let dashArray = current.dashArray;\n\n if (lineWidthScale !== 1 && dashArray.length > 0) {\n dashArray = dashArray.map(function (value) {\n return lineWidthScale * value;\n });\n }\n\n element.setAttributeNS(null, \"stroke\", current.strokeColor);\n element.setAttributeNS(null, \"stroke-opacity\", current.strokeAlpha);\n element.setAttributeNS(null, \"stroke-miterlimit\", pf(current.miterLimit));\n element.setAttributeNS(null, \"stroke-linecap\", current.lineCap);\n element.setAttributeNS(null, \"stroke-linejoin\", current.lineJoin);\n element.setAttributeNS(null, \"stroke-width\", pf(lineWidthScale * current.lineWidth) + \"px\");\n element.setAttributeNS(null, \"stroke-dasharray\", dashArray.map(pf).join(\" \"));\n element.setAttributeNS(null, \"stroke-dashoffset\", pf(lineWidthScale * current.dashPhase) + \"px\");\n }\n\n eoFill() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n\n this.fill();\n }\n\n fillStroke() {\n this.stroke();\n this.fill();\n }\n\n eoFillStroke() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n\n this.fillStroke();\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.closePath();\n this.eoFillStroke();\n }\n\n paintSolidColorImageMask() {\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", \"1px\");\n rect.setAttributeNS(null, \"height\", \"1px\");\n rect.setAttributeNS(null, \"fill\", this.current.fillColor);\n\n this._ensureTransformGroup().appendChild(rect);\n }\n\n paintImageXObject(objId) {\n const imgData = objId.startsWith(\"g_\") ? this.commonObjs.get(objId) : this.objs.get(objId);\n\n if (!imgData) {\n (0, _util.warn)(`Dependent image with object ID ${objId} is not ready yet`);\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n }\n\n paintInlineImageXObject(imgData, mask) {\n const width = imgData.width;\n const height = imgData.height;\n const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", \"0\");\n cliprect.setAttributeNS(null, \"y\", \"0\");\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n const imgEl = this.svgFactory.createElement(\"svg:image\");\n imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgSrc);\n imgEl.setAttributeNS(null, \"x\", \"0\");\n imgEl.setAttributeNS(null, \"y\", pf(-height));\n imgEl.setAttributeNS(null, \"width\", pf(width) + \"px\");\n imgEl.setAttributeNS(null, \"height\", pf(height) + \"px\");\n imgEl.setAttributeNS(null, \"transform\", `scale(${pf(1 / width)} ${pf(-1 / height)})`);\n\n if (mask) {\n mask.appendChild(imgEl);\n } else {\n this._ensureTransformGroup().appendChild(imgEl);\n }\n }\n\n paintImageMaskXObject(imgData) {\n const current = this.current;\n const width = imgData.width;\n const height = imgData.height;\n const fillColor = current.fillColor;\n current.maskId = `mask${maskCount++}`;\n const mask = this.svgFactory.createElement(\"svg:mask\");\n mask.setAttributeNS(null, \"id\", current.maskId);\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", pf(width));\n rect.setAttributeNS(null, \"height\", pf(height));\n rect.setAttributeNS(null, \"fill\", fillColor);\n rect.setAttributeNS(null, \"mask\", `url(#${current.maskId})`);\n this.defs.appendChild(mask);\n\n this._ensureTransformGroup().appendChild(rect);\n\n this.paintInlineImageXObject(imgData, mask);\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n }\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", bbox[0]);\n cliprect.setAttributeNS(null, \"y\", bbox[1]);\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {}\n\n _initialize(viewport) {\n const svg = this.svgFactory.create(viewport.width, viewport.height);\n const definitions = this.svgFactory.createElement(\"svg:defs\");\n svg.appendChild(definitions);\n this.defs = definitions;\n const rootGroup = this.svgFactory.createElement(\"svg:g\");\n rootGroup.setAttributeNS(null, \"transform\", pm(viewport.transform));\n svg.appendChild(rootGroup);\n this.svg = rootGroup;\n return svg;\n }\n\n _ensureClipGroup() {\n if (!this.current.clipGroup) {\n const clipGroup = this.svgFactory.createElement(\"svg:g\");\n clipGroup.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n this.svg.appendChild(clipGroup);\n this.current.clipGroup = clipGroup;\n }\n\n return this.current.clipGroup;\n }\n\n _ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = this.svgFactory.createElement(\"svg:g\");\n this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n\n if (this.current.activeClipUrl) {\n this._ensureClipGroup().appendChild(this.tgrp);\n } else {\n this.svg.appendChild(this.tgrp);\n }\n }\n\n return this.tgrp;\n }\n\n };\n}\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFNodeStream = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _network_utils = __w_pdfjs_require__(23);\n\n;\n\nconst fs = require(\"fs\");\n\nconst http = require(\"http\");\n\nconst https = require(\"https\");\n\nconst url = require(\"url\");\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n const parsedUrl = url.parse(sourceUrl);\n\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(`file:///${sourceUrl}`);\n }\n\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n\n return parsedUrl;\n}\n\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp = this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader ? this._fullRequestReader._loaded : 0;\n }\n\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);\n\n this._rangeRequestReaders.push(rangeReader);\n\n return rangeReader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n const readers = this._rangeRequestReaders.slice(0);\n\n readers.forEach(function (reader) {\n reader.cancel(reason);\n });\n }\n\n}\n\nexports.PDFNodeStream = PDFNodeStream;\n\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = (0, _util.createPromiseCapability)();\n this._headersCapability = (0, _util.createPromiseCapability)();\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n\n if (chunk === null) {\n this._readCapability = (0, _util.createPromiseCapability)();\n return this.read();\n }\n\n this._loaded += chunk.length;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength\n });\n }\n\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n\n return;\n }\n\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new _util.AbortException(\"streaming is disabled\"));\n }\n\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n\n}\n\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = (0, _util.createPromiseCapability)();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n\n if (chunk === null) {\n this._readCapability = (0, _util.createPromiseCapability)();\n return this.read();\n }\n\n this._loaded += chunk.length;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded\n });\n }\n\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n\n return;\n }\n\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n\n}\n\nfunction createRequestOptions(parsedUrl, headers) {\n return {\n protocol: parsedUrl.protocol,\n auth: parsedUrl.auth,\n host: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.path,\n method: \"GET\",\n headers\n };\n}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new _util.MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n\n this._headersCapability.reject(error);\n\n return;\n }\n\n this._headersCapability.resolve();\n\n this._setReadableStream(response);\n\n const getResponseHeader = name => {\n return this._readableStream.headers[name.toLowerCase()];\n };\n\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n };\n\n this._request = null;\n\n if (this._url.protocol === \"http:\") {\n this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n } else {\n this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n\n this._headersCapability.reject(reason);\n });\n\n this._request.end();\n }\n\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n this._httpHeaders = {};\n\n for (const property in stream.httpHeaders) {\n const value = stream.httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n this._httpHeaders[property] = value;\n }\n\n this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new _util.MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n\n this._setReadableStream(response);\n };\n\n this._request = null;\n\n if (this._url.protocol === \"http:\") {\n this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n } else {\n this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n\n this._request.end();\n }\n\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n let path = decodeURIComponent(this._url.path);\n\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n fs.lstat(path, (error, stat) => {\n if (error) {\n if (error.code === \"ENOENT\") {\n error = new _util.MissingPDFException(`Missing PDF \"${path}\".`);\n }\n\n this._storedError = error;\n\n this._headersCapability.reject(error);\n\n return;\n }\n\n this._contentLength = stat.size;\n\n this._setReadableStream(fs.createReadStream(path));\n\n this._headersCapability.resolve();\n });\n }\n\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n let path = decodeURIComponent(this._url.path);\n\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n this._setReadableStream(fs.createReadStream(path, {\n start,\n end: end - 1\n }));\n }\n\n}\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createResponseStatusError = createResponseStatusError;\nexports.extractFilenameFromHeader = extractFilenameFromHeader;\nexports.validateRangeRequestCapabilities = validateRangeRequestCapabilities;\nexports.validateResponseStatus = validateResponseStatus;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _content_disposition = __w_pdfjs_require__(24);\n\nfunction validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n (0, _util.assert)(rangeChunkSize > 0, \"Range chunk size must be larger than zero\");\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n\n returnValues.suggestedLength = length;\n\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n\n if (disableRange || !isHttp) {\n return returnValues;\n }\n\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n\n const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n const contentDisposition = getResponseHeader(\"Content-Disposition\");\n\n if (contentDisposition) {\n let filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition);\n\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch (ex) {}\n }\n\n if (/\\.pdf$/i.test(filename)) {\n return filename;\n }\n }\n\n return null;\n}\n\nfunction createResponseStatusError(status, url) {\n if (status === 404 || status === 0 && url.startsWith(\"file:\")) {\n return new _util.MissingPDFException('Missing PDF \"' + url + '\".');\n }\n\n return new _util.UnexpectedResponseException(\"Unexpected server response (\" + status + ') while retrieving PDF \"' + url + '\".', status);\n}\n\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n tmp = rfc2231getparam(contentDisposition);\n\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const bytes = Array.from(value, function (ch) {\n return ch.charCodeAt(0) & 0xff;\n });\n value = decoder.decode(new Uint8Array(bytes));\n needsEncodingFixup = false;\n } catch (e) {\n if (/^utf-?8$/i.test(encoding)) {\n try {\n value = decodeURIComponent(escape(value));\n needsEncodingFixup = false;\n } catch (err) {}\n }\n }\n }\n\n return value;\n }\n\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n\n return value;\n }\n\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n\n if (n in matches) {\n if (n === 0) {\n break;\n }\n\n continue;\n }\n\n matches[n] = [quot, part];\n }\n\n const parts = [];\n\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n\n if (quot) {\n part = unescape(part);\n\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n\n parts.push(part);\n }\n\n return parts.join(\"\");\n }\n\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n\n parts[i] = parts[i].replace(/\\\\(.)/g, \"$1\");\n }\n\n value = parts.join('\"');\n }\n\n return value;\n }\n\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n\n if (encodingend === -1) {\n return extvalue;\n }\n\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n\n return value.replace(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replace(/_/g, \" \");\n text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n\n try {\n text = atob(text);\n } catch (e) {}\n\n return textdecode(charset, text);\n });\n }\n\n return \"\";\n}\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFNetworkStream = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _network_utils = __w_pdfjs_require__(23);\n\n;\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n const data = xhr.response;\n\n if (typeof data !== \"string\") {\n return data;\n }\n\n const array = (0, _util.stringToBytes)(data);\n return array.buffer;\n}\n\nclass NetworkManager {\n constructor(url, args) {\n this.url = url;\n args = args || {};\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = this.isHttp && args.httpHeaders || {};\n this.withCredentials = args.withCredentials || false;\n\n this.getXhr = args.getXhr || function NetworkManager_getXhr() {\n return new XMLHttpRequest();\n };\n\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end\n };\n\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n\n return this.request(args);\n }\n\n requestFull(listeners) {\n return this.request(listeners);\n }\n\n request(args) {\n const xhr = this.getXhr();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n\n for (const property in this.httpHeaders) {\n const value = this.httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n xhr.setRequestHeader(property, value);\n }\n\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n\n xhr.responseType = \"arraybuffer\";\n\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n\n if (!pendingRequest) {\n return;\n }\n\n if (pendingRequest.onProgress) {\n pendingRequest.onProgress(evt);\n }\n }\n\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n\n if (!pendingRequest) {\n return;\n }\n\n const xhr = pendingRequest.xhr;\n\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n\n delete this.pendingRequests[xhrId];\n\n if (xhr.status === 0 && this.isHttp) {\n if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n\n return;\n }\n\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n\n return;\n }\n\n const chunk = getArrayBuffer(xhr);\n\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n }\n\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n\n}\n\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n\n this._rangeRequestReaders.push(reader);\n\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n const readers = this._rangeRequestReaders.slice(0);\n\n readers.forEach(function (reader) {\n reader.cancel(reason);\n });\n }\n\n}\n\nexports.PDFNetworkStream = PDFNetworkStream;\n\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = (0, _util.createPromiseCapability)();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n const getResponseHeader = name => {\n return fullRequestXhr.getResponseHeader(name);\n };\n\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n }\n\n _onDone(args) {\n if (args) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: args.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(args.chunk);\n }\n }\n\n this._done = true;\n\n if (this._cachedChunks.length > 0) {\n return;\n }\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n }\n\n _onError(status) {\n const url = this._url;\n const exception = (0, _network_utils.createResponseStatusError)(status, url);\n this._storedError = exception;\n\n this._headersReceivedCapability.reject(exception);\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.reject(exception);\n });\n\n this._requests = [];\n this._cachedChunks = [];\n }\n\n _onProgress(data) {\n if (this.onProgress) {\n this.onProgress({\n loaded: data.loaded,\n total: data.lengthComputable ? data.total : this._contentLength\n });\n }\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n\n return {\n value: chunk,\n done: false\n };\n }\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n const requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n\n this._headersReceivedCapability.reject(reason);\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n\n this._fullRequestReader = null;\n }\n\n}\n\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n const args = {\n onDone: this._onDone.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this.onProgress = null;\n this.onClosed = null;\n }\n\n _close() {\n if (this.onClosed) {\n this.onClosed(this);\n }\n }\n\n _onDone(data) {\n const chunk = data.chunk;\n\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n\n this._done = true;\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n\n this._close();\n }\n\n _onProgress(evt) {\n if (!this.isStreamingSupported && this.onProgress) {\n this.onProgress({\n loaded: evt.loaded\n });\n }\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n const requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n\n this._close();\n }\n\n}\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFFetchStream = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _network_utils = __w_pdfjs_require__(23);\n\n;\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController && abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\n\nfunction createHeaders(httpHeaders) {\n const headers = new Headers();\n\n for (const property in httpHeaders) {\n const value = httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n headers.append(property, value);\n }\n\n return headers;\n}\n\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader ? this._fullRequestReader._loaded : 0;\n }\n\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n\n this._rangeRequestReaders.push(reader);\n\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n const readers = this._rangeRequestReaders.slice(0);\n\n readers.forEach(function (reader) {\n reader.cancel(reason);\n });\n }\n\n}\n\nexports.PDFFetchStream = PDFFetchStream;\n\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = (0, _util.createPromiseCapability)();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._headers = createHeaders(this._stream.httpHeaders);\n const url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n throw (0, _network_utils.createResponseStatusError)(response.status, url);\n }\n\n this._reader = response.body.getReader();\n\n this._headersCapability.resolve();\n\n const getResponseHeader = name => {\n return response.headers.get(name);\n };\n\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new _util.AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n\n if (done) {\n return {\n value,\n done\n };\n }\n\n this._loaded += value.byteLength;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength\n });\n }\n\n const buffer = new Uint8Array(value).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n\n}\n\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = (0, _util.createPromiseCapability)();\n this._isStreamingSupported = !source.disableStream;\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n\n this._headers = createHeaders(this._stream.httpHeaders);\n\n this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n const url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n throw (0, _network_utils.createResponseStatusError)(response.status, url);\n }\n\n this._readCapability.resolve();\n\n this._reader = response.body.getReader();\n }).catch(reason => {\n if (reason && reason.name === \"AbortError\") {\n return;\n }\n\n throw reason;\n });\n this.onProgress = null;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n\n if (done) {\n return {\n value,\n done\n };\n }\n\n this._loaded += value.byteLength;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded\n });\n }\n\n const buffer = new Uint8Array(value).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n\n}\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=pdf.js.map","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n defineProperty(\n GeneratorFunctionPrototype,\n \"constructor\",\n { value: GeneratorFunction, configurable: true }\n );\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, \"_invoke\", { value: enqueue });\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method;\n var method = delegate.iterator[methodName];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method, or a missing .next mehtod, always terminate the\n // yield* loop.\n context.delegate = null;\n\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n if (methodName !== \"return\") {\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a '\" + methodName + \"' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +\n ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","module.exports = require('./readable').PassThrough\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/*<replacement>*/\n\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n/*<replacement>*/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*<replacement>*/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/*</replacement>*/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","module.exports = require('./readable').Transform\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pdf-catalogue.vue?vue&type=style&index=0&id=6757c916&prod&scoped=true&lang=css&\"","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","'use strict'\r\n\r\nconst watermark = {}\r\n\r\n/**\r\n *\r\n * @param {string} str 要设置的水印的内容\r\n * @param container 需要设置水印的容器\r\n */\r\nconst setWatermark = (str, container) => {\r\n const id = '1.23452384164.123412415'\r\n\r\n if (container === undefined) {\r\n return\r\n }\r\n\r\n // 查看页面上有没有,如果有则删除\r\n if (document.getElementById(id) !== null) {\r\n const childelement = document.getElementById(id)\r\n childelement.parentNode.removeChild(childelement)\r\n }\r\n\r\n var containerWidth = container.offsetWidth // 获取父容器宽\r\n var containerHeight = container.offsetHeight // 获取父容器高\r\n container.style.position = 'relative' // 设置布局为相对布局\r\n\r\n // 创建canvas元素(先制作一块背景图)\r\n const can = document.createElement('canvas')\r\n can.width = 120 // 设置每一块的宽度\r\n can.height = 120 // 高度\r\n const cans = can.getContext('2d') // 获取canvas画布\r\n cans.rotate(-20 * Math.PI / 180) // 逆时针旋转π/9 cans.font = '20px Vedana' // 设置字体\r\n cans.fillStyle = 'rgba(0, 0, 0, 0.20)' // 设置字体的颜色\r\n cans.textAlign = 'left' // 文本对齐方式\r\n cans.textBaseline = 'Middle' // 文本基线\r\n cans.fillText(str, 0, 4 * can.height / 5) // 绘制文字\r\n\r\n // 创建一个div元素\r\n const div = document.createElement('div')\r\n div.id = id // 设置id\r\n div.style.pointerEvents = 'none' // 取消所有事件\r\n div.style.top = '0px'\r\n div.style.left = '0px'\r\n div.style.position = 'absolute'\r\n div.style.zIndex = '100000'\r\n div.style.width = containerWidth + 'px'\r\n div.style.height = containerHeight + 'px'\r\n div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat'\r\n container.appendChild(div) // 追加到页面\r\n\r\n return id\r\n}\r\n\r\n// 该方法只允许调用一次\r\nwatermark.set = (str, container) => {\r\n let id = setWatermark(str, container)\r\n setInterval(() => {\r\n if (document.getElementById(id) === null) {\r\n id = setWatermark(str, container)\r\n }\r\n }, 500)\r\n // 监听页面大小的变化\r\n window.onresize = () => {\r\n setWatermark(str, container)\r\n }\r\n}\r\n\r\nexport default watermark","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/*<replacement>*/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/*</replacement>*/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","module.exports = require('events').EventEmitter;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n"],"sourceRoot":""}
|