{"version":3,"sources":["webpack:////home/vsts/work/1/s/node_modules/miller-rabin/node_modules/bn.js/lib/bn.js","webpack:////home/vsts/work/1/s/node_modules/parse-asn1/certificate.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash.js","webpack:////home/vsts/work/1/s/node_modules/ripemd160/index.js","webpack:////home/vsts/work/1/s/node_modules/timers-browserify/main.js","webpack:////home/vsts/work/1/s/node_modules/jsonwebtoken/decode.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:////home/vsts/work/1/s/node_modules/diffie-hellman/browser.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/ghash.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/modes/cfb1.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js","webpack:////home/vsts/work/1/s/node_modules/hmac-drbg/lib/hmac-drbg.js","webpack:////home/vsts/work/1/s/node_modules/miller-rabin/lib/mr.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/modes/ctr.js","webpack:////home/vsts/work/1/s/node_modules/ieee754/index.js","webpack:////home/vsts/work/1/s/node_modules/jsonwebtoken/lib/psSupported.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/encoders/der.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/curves.js","webpack:////home/vsts/work/1/s/node_modules/buffer-equal-constant-time/index.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/core/transformData.js","webpack:////home/vsts/work/1/s/node_modules/public-encrypt/browser.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/aes.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/writable-browser.js","webpack:////home/vsts/work/1/s/node_modules/string_decoder/lib/string_decoder.js","webpack:////home/vsts/work/1/s/node_modules/sha.js/hash.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/base/node.js","webpack:////home/vsts/work/1/s/node_modules/browserify-cipher/browser.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack:////home/vsts/work/1/s/node_modules/util/node_modules/inherits/inherits_browser.js","webpack:////home/vsts/work/1/s/node_modules/jwa/index.js","webpack:////home/vsts/work/1/s/node_modules/des.js/lib/des/utils.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/sha/1.js","webpack:////home/vsts/work/1/s/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:////home/vsts/work/1/s/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:////home/vsts/work/1/s/node_modules/jws/lib/tostring.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/modes/ecb.js","webpack:////home/vsts/work/1/s/node_modules/cipher-base/index.js","webpack:////home/vsts/work/1/s/node_modules/public-encrypt/node_modules/bn.js/lib/bn.js","webpack:////home/vsts/work/1/s/node_modules/lodash.isnumber/index.js","webpack:////home/vsts/work/1/s/node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/browser/verify.js","webpack:////home/vsts/work/1/s/node_modules/md5.js/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/axios.js","webpack:////home/vsts/work/1/s/node_modules/stream-browserify/index.js","webpack:////home/vsts/work/1/s/node_modules/lodash.isboolean/index.js","webpack:////home/vsts/work/1/s/node_modules/des.js/lib/des/des.js","webpack:////home/vsts/work/1/s/node_modules/parse-asn1/asn1.js","webpack:////home/vsts/work/1/s/node_modules/sha.js/sha1.js","webpack:////home/vsts/work/1/s/node_modules/jsonwebtoken/lib/TokenExpiredError.js","webpack:////home/vsts/work/1/s/node_modules/create-hmac/browser.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/node_modules/bn.js/lib/bn.js","webpack:////home/vsts/work/1/s/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/lib/_stream_transform.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/adapters/xhr.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/core/dispatchRequest.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/decoders/der.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack:////home/vsts/work/1/s/node_modules/crypto-browserify/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/modes/cbc.js","webpack:////home/vsts/work/1/s/node_modules/create-hash/browser.js","webpack:////home/vsts/work/1/s/node_modules/hash-base/node_modules/readable-stream/readable-browser.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/combineURLs.js","webpack:////home/vsts/work/1/s/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:////home/vsts/work/1/s/node_modules/lodash.isplainobject/index.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/utils.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/curve/mont.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:////home/vsts/work/1/s/node_modules/util/support/isBufferBrowser.js","webpack:////home/vsts/work/1/s/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:////home/vsts/work/1/s/node_modules/public-encrypt/publicEncrypt.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/cancel/Cancel.js","webpack:////home/vsts/work/1/s/node_modules/jws/index.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/readable-browser.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/node_modules/bn.js/lib/bn.js","webpack:////home/vsts/work/1/s/node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js","webpack:////home/vsts/work/1/s/node_modules/buffer/index.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/decoders/pem.js","webpack:////home/vsts/work/1/s/node_modules/public-encrypt/withPublic.js","webpack:////home/vsts/work/1/s/node_modules/pbkdf2/lib/to-buffer.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/spread.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/api.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/ec/index.js","webpack:////home/vsts/work/1/s/node_modules/diffie-hellman/lib/generatePrime.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/cancel/CancelToken.js","webpack:////home/vsts/work/1/s/node_modules/evp_bytestokey/index.js","webpack:////home/vsts/work/1/s/node_modules/public-encrypt/privateDecrypt.js","webpack:////home/vsts/work/1/s/node_modules/create-hash/md5.js","webpack:////home/vsts/work/1/s/node_modules/sha.js/sha256.js","webpack:////home/vsts/work/1/s/node_modules/safe-buffer/index.js","webpack:////home/vsts/work/1/s/node_modules/sha.js/sha.js","webpack:////home/vsts/work/1/s/node_modules/browserify-des/index.js","webpack:////home/vsts/work/1/s/node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/core/enhanceError.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/core/mergeConfig.js","webpack:////home/vsts/work/1/s/node_modules/create-ecdh/browser.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/modes/cfb.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/core/InterceptorManager.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/browser/sign.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/utils.js","webpack:////home/vsts/work/1/s/node_modules/util-deprecate/browser.js","webpack:///./src/utils/reviews.ts","webpack:////home/vsts/work/1/s/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/decrypter.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/buildURL.js","webpack:///./src/constants/arrays.ts","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/curve/base.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/encoders/index.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/curve/short.js","webpack:////home/vsts/work/1/s/node_modules/isarray/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/core/settle.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/encrypter.js","webpack:////home/vsts/work/1/s/node_modules/randomfill/browser.js","webpack:////home/vsts/work/1/s/node_modules/lodash.includes/index.js","webpack:////home/vsts/work/1/s/node_modules/public-encrypt/mgf.js","webpack:////home/vsts/work/1/s/node_modules/pbkdf2/lib/async.js","webpack:////home/vsts/work/1/s/node_modules/pbkdf2/lib/sync-browser.js","webpack:////home/vsts/work/1/s/node_modules/synchronous-promise/index.js","webpack:////home/vsts/work/1/s/node_modules/toposort/index.js","webpack:////home/vsts/work/1/s/node_modules/jws/lib/data-stream.js","webpack:////home/vsts/work/1/s/node_modules/hash-base/node_modules/readable-stream/errors-browser.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/constants/index.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/passthrough.js","webpack:////home/vsts/work/1/s/node_modules/jsonwebtoken/index.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/cancel/isCancel.js","webpack:////home/vsts/work/1/s/node_modules/sha.js/sha224.js","webpack:////home/vsts/work/1/s/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js","webpack:////home/vsts/work/1/s/node_modules/process-nextick-args/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js","webpack:////home/vsts/work/1/s/node_modules/minimalistic-assert/index.js","webpack:////home/vsts/work/1/s/node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/core/Axios.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/utils.js","webpack:////home/vsts/work/1/s/node_modules/jws/lib/verify-stream.js","webpack:////home/vsts/work/1/s/node_modules/browserify-rsa/index.js","webpack:////home/vsts/work/1/s/node_modules/ms/index.js","webpack:////home/vsts/work/1/s/node_modules/core-util-is/lib/util.js","webpack:////home/vsts/work/1/s/node_modules/sha.js/sha512.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1.js","webpack:////home/vsts/work/1/s/node_modules/jsonwebtoken/node_modules/semver/semver.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/authCipher.js","webpack:////home/vsts/work/1/s/node_modules/util/util.js","webpack:////home/vsts/work/1/s/node_modules/safer-buffer/safer.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/sha/256.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/base/reporter.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:////home/vsts/work/1/s/node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack:////home/vsts/work/1/s/node_modules/des.js/lib/des/cipher.js","webpack:////home/vsts/work/1/s/node_modules/parse-asn1/index.js","webpack:////home/vsts/work/1/s/node_modules/des.js/lib/des.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/browser/index.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/base/buffer.js","webpack:////home/vsts/work/1/s/node_modules/jsonwebtoken/sign.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/encoders/pem.js","webpack:////home/vsts/work/1/s/node_modules/base64-js/index.js","webpack:////home/vsts/work/1/s/node_modules/property-expr/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-des/modes.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/defaults.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./src/utils/axios.ts","webpack:////home/vsts/work/1/s/node_modules/readable-stream/duplex-browser.js","webpack:///./src/hooks/reviews.ts","webpack:///./src/hooks/boards.ts","webpack:///./src/hooks/organizations.ts","webpack:///./src/hooks/reviewDownloads.ts","webpack:///./src/models/ResponseException.ts","webpack:///./src/hooks/uploadAttachments.ts","webpack:///./src/hooks/responses.ts","webpack:///./src/hooks/commentSet.tsx","webpack:///./src/hooks/users.ts","webpack:///./src/hooks/newsLetterApi.tsx","webpack:///./src/hooks/getEngagements.ts","webpack:////home/vsts/work/1/s/node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js","webpack:////home/vsts/work/1/s/node_modules/des.js/lib/des/ede.js","webpack:////home/vsts/work/1/s/node_modules/public-encrypt/xor.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/base/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/modes/index.js","webpack:////home/vsts/work/1/s/node_modules/lodash.isstring/index.js","webpack:////home/vsts/work/1/s/node_modules/lodash.once/index.js","webpack:////home/vsts/work/1/s/node_modules/minimalistic-crypto-utils/lib/utils.js","webpack:////home/vsts/work/1/s/node_modules/axios/index.js","webpack:////home/vsts/work/1/s/node_modules/sha.js/index.js","webpack:////home/vsts/work/1/s/node_modules/string_decoder/node_modules/safe-buffer/index.js","webpack:////home/vsts/work/1/s/node_modules/jsonwebtoken/lib/JsonWebTokenError.js","webpack:////home/vsts/work/1/s/node_modules/randombytes/browser.js","webpack:////home/vsts/work/1/s/node_modules/hash-base/index.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/node_modules/safe-buffer/index.js","webpack:////home/vsts/work/1/s/node_modules/pbkdf2/browser.js","webpack:////home/vsts/work/1/s/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/sha/512.js","webpack:////home/vsts/work/1/s/node_modules/create-hmac/legacy.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/browser.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./src/constants/index.ts","webpack:////home/vsts/work/1/s/node_modules/sha.js/sha384.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/hmac.js","webpack:////home/vsts/work/1/s/node_modules/diffie-hellman/lib/dh.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/modes/ofb.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/ec/signature.js","webpack:////home/vsts/work/1/s/node_modules/jsonwebtoken/lib/timespan.js","webpack:////home/vsts/work/1/s/node_modules/jsonwebtoken/lib/NotBeforeError.js","webpack:////home/vsts/work/1/s/node_modules/bn.js/lib/bn.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/sha.js","webpack:////home/vsts/work/1/s/node_modules/lodash.isinteger/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/modes/cfb8.js","webpack:////home/vsts/work/1/s/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/ec/key.js","webpack:////home/vsts/work/1/s/node_modules/jsonwebtoken/verify.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/core/createError.js","webpack:////home/vsts/work/1/s/node_modules/jws/lib/sign-stream.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/transform.js","webpack:////home/vsts/work/1/s/node_modules/inherits/inherits_browser.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/decoders/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/algos.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/core/buildFullPath.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/lib/_stream_readable.js","webpack:////home/vsts/work/1/s/node_modules/events/events.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/sha/224.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/common.js","webpack:////home/vsts/work/1/s/node_modules/create-ecdh/node_modules/bn.js/lib/bn.js","webpack:////home/vsts/work/1/s/node_modules/des.js/lib/des/cbc.js","webpack:////home/vsts/work/1/s/node_modules/buffer-xor/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/incr32.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/sha/384.js","webpack:////home/vsts/work/1/s/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:////home/vsts/work/1/s/node_modules/brorand/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/curve/index.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/bind.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/constants/der.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/lib/_stream_writable.js","webpack:////home/vsts/work/1/s/node_modules/pbkdf2/lib/precondition.js","webpack:////home/vsts/work/1/s/node_modules/parse-asn1/fixProc.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/lib/_stream_duplex.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/sha/common.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/streamCipher.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/ripemd.js","webpack:////home/vsts/work/1/s/node_modules/pbkdf2/lib/default-encoding.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/cookies.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_baseHas.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_isKey.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_castPath.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_hasPath.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/has.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/cloneDeepWith.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/isString.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_iteratorToArray.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_mapToArray.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_setToArray.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_asciiToArray.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_hasUnicode.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_unicodeToArray.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_stringToArray.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_baseValues.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/values.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/toArray.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/util/printValue.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/locale.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/util/isSchema.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/Condition.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/ValidationError.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/util/runValidations.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/util/prependDeep.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_createBaseFor.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_baseFor.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_baseForOwn.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_setCacheAdd.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_setCacheHas.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_SetCache.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_arraySome.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_cacheHas.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_equalArrays.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_equalByTag.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_equalObjects.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_baseIsEqualDeep.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_baseIsEqual.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_baseIsMatch.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_isStrictComparable.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_getMatchData.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_matchesStrictComparable.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_baseMatches.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_baseGet.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/get.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_baseHasIn.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/hasIn.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_baseMatchesProperty.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/identity.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_baseProperty.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_basePropertyDeep.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/property.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_baseIteratee.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/mapValues.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/Reference.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/util/createValidation.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/util/reach.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/mixed.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/util/inherits.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/boolean.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/util/isAbsent.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/string.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/number.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/util/isodate.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/date.js","webpack:////home/vsts/work/1/s/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_arrayReduce.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_basePropertyOf.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_deburrLetter.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/deburr.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_asciiWords.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_hasUnicodeWord.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_unicodeWords.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/words.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_createCompounder.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/snakeCase.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_baseSlice.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_castSlice.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/_createCaseFirst.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/upperFirst.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/capitalize.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/camelCase.js","webpack:////home/vsts/work/1/s/node_modules/lodash-es/mapKeys.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/util/sortFields.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/util/sortByKeyOrder.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/util/makePath.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/object.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/array.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/Lazy.js","webpack:////home/vsts/work/1/s/node_modules/yup/es/index.js","webpack:///./src/constants/validation.ts"],"names":["assert","val","msg","Error","inherits","ctor","superCtor","super_","TempCtor","prototype","constructor","BN","number","base","endian","isBN","this","negative","words","length","red","_init","Buffer","module","exports","wordSize","e","parseHex","str","start","end","r","len","Math","min","i","c","charCodeAt","parseBase","mul","num","Array","isArray","max","left","right","cmp","_initNumber","_initArray","toString","replace","_parseHex","_parseBase","strip","toArray","ceil","j","w","off","limbLen","limbPow","total","mod","word","imuln","_iaddn","pow","copy","dest","clone","_expand","size","_normSign","inspect","zeros","groupSizes","groupBases","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","bitLength","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","bit","wbit","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","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","x","y","mulTo","hncarry","bigMulTo","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","toBitArray","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","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","primes","k256","p224","p192","p25519","MPrime","name","tmp","_tmp","K256","call","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","split","imulK","undefined","_strip","input","output","outLen","prev","next","mod3","one","nOne","lpow","z","inv","wnd","current","currentLen","mont","u","asn","Time","define","choice","utcTime","utctime","generalTime","gentime","AttributeTypeValue","seq","obj","key","objid","any","AlgorithmIdentifier","optional","SubjectPublicKeyInfo","use","bitstr","RelativeDistinguishedName","setof","RDNSequence","seqof","Name","rdnSequence","Validity","Extension","bool","def","octstr","TBSCertificate","explicit","int","implicit","X509Certificate","hash","utils","common","sha","ripemd","hmac","sha1","sha256","sha224","sha384","sha512","ripemd160","HashBase","ARRAY16","zl","zr","sl","sr","hl","hr","RIPEMD160","_a","_b","_c","_d","_e","rotl","fn1","d","fn2","fn3","fn4","fn5","_update","_block","readInt32LE","al","bl","cl","dl","el","ar","br","cr","dr","er","tl","tr","_digest","_blockOffset","fill","writeUInt32LE","_length","buffer","alloc","writeInt32LE","apply","Function","Timeout","id","clearFn","_id","_clearFn","setTimeout","scope","arguments","clearTimeout","setInterval","clearInterval","timeout","close","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","setImmediate","global","clearImmediate","jws","jwt","options","decoded","decode","payload","JSON","parse","complete","header","signature","EventEmitter","DH","ENCODINGS","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","gen","createDiffieHellman","DiffieHellman","enc","generator","genc","isBuffer","generatePrime","ZEROES","fromArray","buf","allocUnsafe","writeUInt32BE","GHASH","state","cache","ghash","block","_multiply","lsbVi","Vi","readUInt32BE","Zi","update","chunk","concat","slice","final","abl","Duplex","Readable","ReadableState","EElistenerCount","emitter","type","listeners","Stream","OurUint8Array","Uint8Array","debug","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","from","BufferList","destroyImpl","getHighWaterMark","_require$codes","codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","stream","isDuplex","objectMode","readableObjectMode","highWaterMark","pipes","pipesCount","flowing","ended","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","destroyed","defaultEncoding","awaitDrain","readingMore","decoder","encoding","_readableState","readable","read","_read","destroy","_destroy","readableAddChunk","addToFront","skipChunkCheck","push","emitReadable","emitReadable_","onEofChunk","chunkInvalid","Object","getPrototypeOf","_uint8ArrayToBuffer","addChunk","write","maybeReadMore","emit","unshift","defineProperty","enumerable","get","set","value","_undestroy","undestroy","err","cb","isPaused","setEncoding","head","content","data","clear","howMuchToRead","computeNewHighWaterMark","process","nextTick","flow","maybeReadMore_","updateReadableListening","listenerCount","resume","nReadingNextTick","resume_","fromList","join","first","consume","endReadable","endReadableNT","wState","_writableState","finished","indexOf","xs","parseInt","nOrig","doRead","pipe","pipeOpts","src","endFn","stdout","stderr","onend","unpipe","onunpipe","unpipeInfo","hasUnpiped","removeListener","onclose","onfinish","ondrain","onerror","ondata","cleanedUp","needDrain","once","on","pipeOnDrain","pause","event","fn","prependListener","_events","dests","index","splice","ev","addListener","removeAllListeners","wrap","_this","method","bind","Symbol","asyncIterator","_fromList","iterable","opts","curves","parseBytes","KeyPair","Signature","EDDSA","curve","precompute","pointClass","point","encodingLength","sign","message","secret","keyFromSecret","hashInt","messagePrefix","R","Rencoded","encodePoint","s_","pubBytes","priv","S","makeSignature","verify","sig","pub","keyFromPublic","SG","intFromLE","digest","fromPublic","fromSecret","getY","getX","decodePoint","bytes","lastIx","normed","xIsOdd","pointFromY","encodeInt","decodeInt","isPoint","isStandardBrowserEnv","originURL","msie","test","navigator","userAgent","urlParsingNode","document","createElement","resolveURL","url","href","setAttribute","protocol","host","search","hostname","port","pathname","charAt","window","location","requestURL","parsed","isString","encryptByte","byteParam","decrypt","_cipher","encryptBlock","_prev","shiftIn","encrypt","createErrorType","code","Base","NodeError","_Base","subClass","superClass","arg1","arg2","arg3","getMessage","create","__proto__","oneOf","expected","thing","map","String","TypeError","actual","determiner","pos","substr","this_len","substring","endsWith","includes","arg","HmacDRBG","predResist","outSize","minEntropy","hmacStrength","_reseed","reseedInterval","K","V","entropy","entropyEnc","nonce","nonceEnc","pers","persEnc","seed","_hmac","kmac","reseed","addEnc","generate","temp","encode","bn","brorand","MillerRabin","rand","Rand","_randbelow","min_bytes","_randrange","stop","rone","n1","rn1","getDivisor","incr32","getBlock","encryptBlockRaw","chunkNum","_cache","offset","pad","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","Infinity","rt","isNaN","floor","log","LN2","semver","satisfies","version","Node","der","DEREncoder","entity","tree","DERNode","body","parent","two","reporter","_encode","_encodeComposite","tag","primitive","cls","encodedTag","tagByName","hasOwnProperty","error","tagClassByName","encodeTag","_header","_createEncoderBuffer","lenOctets","_i","_encodeStr","unused","writeUInt16BE","_isNumstr","_isPrintstr","_encodeObjid","values","relative","_i2","stringify","_i3","ident","_i4","_ident","_encodeTime","time","date","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","_encodeNull","_encodeInt","numArray","_size","_out","_i5","_encodeBool","_use","_getEncoder","_skipDefault","dataBuffer","_baseState","defaultBuffer","_encodeValue","pre","PresetCurve","short","edwards","validate","isInfinity","defineCurve","configurable","gRed","beta","lambda","basis","SlowBuffer","bufferEq","install","equal","that","origBufEqual","origSlowBufEqual","restore","headers","fns","forEach","publicEncrypt","privateDecrypt","privateEncrypt","publicDecrypt","asUInt32Array","scrubVec","v","cryptBlock","M","keySchedule","SUB_MIX","SBOX","nRounds","t0","t1","t2","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s1","s2","s3","ksRow","RCON","G","INV_SBOX","INV_SUB_MIX","xi","sx","x4","x8","AES","_key","_reset","blockSize","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","decryptBlock","m1","scrub","isEncoding","toLowerCase","nb","nenc","retried","_normalizeEncoding","normalizeEncoding","text","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","Hash","finalSize","_finalSize","_blockSize","_len","accum","assigned","remainder","rem","lowBits","highBits","_hash","Reporter","EncoderBuffer","DecoderBuffer","tags","methods","children","args","reverseArgs","useDecoder","contains","_wrap","stateProps","cstate","prop","filter","child","_useArgs","keys","newKey","_decode","wrapResult","prevObj","result","present","prevKey","enterKey","_peekTag","isError","save","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","_save","raw","track","path","_getUse","_reporterState","leaveObject","exitKey","leaveKey","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","match","some","node","_encodeChoice","_encodePrimitive","DES","aes","aesModes","desModes","ebtk","createCipheriv","suite","iv","createDecipheriv","createCipher","Cipher","password","keyLen","ivLen","Cipheriv","createDecipher","Decipher","Decipheriv","listCiphers","getCiphers","doubles","step","points","naf","writable","bufferEqual","crypto","formatEcdsa","util","MSG_INVALID_SECRET","MSG_INVALID_VERIFIER_KEY","supportsKeyObjects","createPublicKey","checkIsPublicKey","typeError","asymmetricKeyType","export","checkIsPrivateKey","fromBase64","base64","toBase64","base64url","template","errMsg","format","normalizeInput","createHmacSigner","checkIsSecretKey","createHmac","createHmacVerifier","computedSig","createKeySigner","privateKey","signer","createSign","createKeyVerifier","publicKey","verifier","createVerify","createPSSKeySigner","constants","RSA_PKCS1_PSS_PADDING","saltLength","RSA_PSS_SALTLEN_DIGEST","createPSSKeyVerifier","createECDSASigner","inner","derToJose","createECDSAVerifer","joseToDer","createNoneSigner","createNoneVerifier","algorithm","signerFactories","hs","rs","ps","es","none","verifierFactories","algo","ip","inL","inR","outL","outR","rip","pc1","r28shl","pc2table","pc2","expand","sTable","substitute","permuteTable","padSplit","group","ERR_STREAM_PREMATURE_CLOSE","noop","eos","callback","called","onlegacyfinish","writableEnded","readableEnded","onrequest","req","setHeader","abort","isRequest","shaCommon","rotl32","sum32","sum32_5","ft_1","BlockHash","sha1_K","SHA1","W","padLength","toHex32","split32","Transform","CipherBase","hashMode","_finalOrDigest","_final","__final","_decoder","_encoding","inputEnc","outputEnc","outData","_toString","setAutoPadding","getAuthTag","setAuthTag","setAAD","_transform","_flush","done","fin","objectToString","isObjectLike","PassThrough","EC","ec","parseKeys","checkValue","signType","curveId","pubkey","subjectPrivateKey","ecVerify","pub_key","unpacked","montp","dsaVerify","modulus","padNum","publicExponent","MD5","fnF","fnG","fnH","fnI","_Object$setPrototypeO","_defineProperty","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","resolve","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","setPrototypeOf","Promise","reject","promise","lastPromise","then","wrapForNext","_this2","_Object$create","iterator","Axios","mergeConfig","createInstance","defaultConfig","context","instance","request","extend","axios","instanceConfig","defaults","Cancel","CancelToken","isCancel","all","promises","spread","isAxiosError","default","EE","Writable","source","_isStdio","didOnEnd","cleanup","DESState","_desState","deriveKeys","shiftTable","kL","kR","inp","inOff","outOff","_encrypt","_decrypt","_pad","_unpad","lStart","rStart","keyL","keyR","asn1","certificate","RSAPrivateKey","RSAPublicKey","PublicKey","null_","PrivateKeyInfo","PrivateKey","EncryptedPrivateKeyInfo","EncryptedPrivateKey","DSAPrivateKey","DSAparam","ECPrivateKey","ECParameters","namedCurve","Sha1","init","_w","rotl5","rotl30","ft","readInt32BE","H","writeInt32BE","JsonWebTokenError","TokenExpiredError","expiredAt","Legacy","md5","ZEROS","Hmac","alg","blocksize","_alg","ipad","_ipad","opad","_opad","getParamSize","paramBytesForAlg","ES256","ES384","ES512","paramBytes","afterTransform","ts","_transformState","transforming","writecb","writechunk","needTransform","writeencoding","flush","prefinish","_write","err2","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","config","requestData","requestHeaders","isFormData","XMLHttpRequest","auth","username","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","open","toUpperCase","params","paramsSerializer","onreadystatechange","readyState","status","responseURL","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onabort","ontimeout","timeoutErrorMessage","xsrfValue","withCredentials","xsrfCookieName","xsrfHeaderName","setRequestHeader","isUndefined","onDownloadProgress","addEventListener","onUploadProgress","upload","cancelToken","cancel","send","transformData","throwIfCancellationRequested","throwIfRequested","transformRequest","merge","adapter","transformResponse","reason","bignum","DERDecoder","derDecodeTag","fail","readUInt8","tagClass","oct","tagStr","derDecodeLen","isDecoderBuffer","isEmpty","decodedTag","skip","_skipUntilEnd","possibleEnd","fromCharCode","readUInt16BE","numstr","printstr","identifiers","subident","second","year","mon","day","hour","sec","UTC","_getDecoder","cachedProperty","eddsa","_R","_S","_Rencoded","_Sencoded","Sencoded","toBytes","toHex","randomBytes","rng","pseudoRandomBytes","prng","createHash","algos","algoKeys","hashes","getHashes","pbkdf2","pbkdf2Sync","dh","Sign","Verify","createECDH","rf","randomFill","randomFillSync","createCredentials","pipeline","relativeURL","ERR_MISSING_ARGS","ERR_STREAM_DESTROYED","destroyer","writing","closed","to","popCallback","streams","pop","destroys","reduce","func","funcProto","objectProto","funcToString","objectCtorString","getPrototype","isHostObject","proto","Ctor","minAssert","minUtils","zero2","getNAF","getJSF","k1","k2","jsf","d1","d2","u1","u2","m8","m14","m24","computer","MontCurve","conf","i4","a24","Point","BasePoint","zero","normalize","rhs","pointFromJSON","fromJSON","dbl","aa","bb","nx","nz","diffAdd","da","mulAdd","jumlAdd","other","mgf","withPublic","crt","reverse","paddedMsg","iHash","hLen","hLen2","dblen","maskedDb","maskedSeed","oaep","cur","nonZero","pkcs1","__CANCEL__","SignStream","VerifyStream","ALGORITHMS","isValid","Constructor","_classCallCheck","tail","entry","target","custom","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","RangeError","encodingOrOffset","ArrayBuffer","array","byteOffset","fromArrayLike","fromArrayBuffer","string","fromString","checked","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","arr","indexSize","arrLength","valLength","foundIndex","found","hexWrite","Number","remaining","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","decodeCodePointsArray","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","compare","list","swap16","swap32","swap64","equals","thisStart","thisEnd","thisCopy","targetCopy","isFinite","_arr","checkOffset","ext","checkInt","objectWriteUInt16","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","readUIntBE","readUInt16LE","readUInt32LE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","trim","stringtrim","base64clean","dst","PEMDecoder","lines","label","encoders","decoders","Entity","_createNamed","Generated","_initNamed","nh","keyPair","keyFromPrivate","fromPrivate","genKeyPair","drbg","ns2","_truncateToN","truncOnly","bkey","getPrivate","ns1","kp","kpX","recoveryParam","canonical","sinv","_maxwellTrick","jmulAdd","getPublic","eqXToP","recoverPubKey","isYOdd","isSecondKey","pointFromX","rInv","getKeyRecoveryParam","Q","Qprime","findPrime","simpleSieve","fermatTest","TWENTYFOUR","millerRabin","ONE","TWO","FIVE","TEN","THREE","ELEVEN","FOUR","_getPrimes","n2","executor","resolvePromise","token","salt","keyBits","used","keyStart","ivStart","zBuffer","db","dif","p1","Sha256","ch","maj","sigma0","sigma1","gamma0","_f","_g","_h","f","T1","T2","copyProps","SafeBuffer","Sha","des","modes","CBC","instantiate","EDE","modeName","_des","des3","description","fileName","lineNumber","columnNumber","stack","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","isPlainObject","mergeDeepProperties","axiosKeys","otherKeys","ECDH","aliases","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","elliptic","formatReturnValue","p256","secp256r1","secp192r1","p384","p521","generateKeys","getPublicKey","computeSecret","inenc","getPrivateKey","setPublicKey","_importPublic","setPrivateKey","_priv","_importPrivate","pna","emitErrorNT","readableDestroyed","writableDestroyed","errorEmitted","ending","encryptStart","InterceptorManager","handlers","fulfilled","rejected","eject","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","getKey","hlen","hbits","bits2int","bits2octets","obits","makeKey","kv","makeR","hashType","toDER","ecSign","priv_key","dsaSign","isObject","isFunction","isArrayBuffer","FormData","isArrayBufferView","isNumber","isDate","isFile","isBlob","isStream","isURLSearchParams","URLSearchParams","product","assignValue","thisArg","stripBOM","localStorage","warned","console","trace","warn","getRelatedReviews","isPublic","AxiosPublic","AxiosPrivate","generateQuery","searchFilter","typeFilter","statusFilter","dateFilter","organizationtFilter","orderBy","order","SORT_ORDER","ROWS_PER_PAGE","isStaffUser","isAdminUser","ReviewStatusEnum","ACTIVE","COMPLETED","DRAFT","AuthCipher","MODES","StreamCipher","Splitter","_last","_mode","_autopadding","last","padded","unpad","setTo","autoPadding","serializedParams","parts","toISOString","hashmarkIndex","DownloadTypesEnum","CommentStatusEnum","CommentTypeEnum","ActionType","DownloadFormatOptions","DownloadOptions","NONE","ALL","menuOption","showIfAttachments","COMMENTS","ATTACHMENTS","CommentSizeBase","CommentSizeFactor","Types","PublicStatuses","StaffStatuses","DateRanges","MenuItems","ReviewListColumns","isSortable","style","minWidth","link","VIEW","EDIT","BaseCurve","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","precomputed","_fixedNafMul","_getDoubles","I","repr","nafW","jpoint","mixedAdd","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","ja","jb","encodeCompressed","compact","power","_getBeta","_hasDoubles","pem","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","isRed","inf","JPoint","zOne","betas","_getEndoRoots","lambdas","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","y1","y2","len1","_endoSplit","v1","v2","c1","c2","p2","q1","q2","ax","_endoWnafMulAdd","npoints","ncoeffs","endoMul","obj2point","ny","ys1","dyinv","_precompute","negate","zinv","zinv2","ay","pz2","z2","h2","h3","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","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","zs","xc","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","validateStatus","PADDING","padBuff","oldBrowser","safeBuffer","randombytes","kBufferMaxLength","msCrypto","kMaxUint32","assertOffset","actualFill","browser","ourBuf","uint","getRandomValues","reTrim","reIsBadHex","reIsBinary","reIsOctal","reIsUint","freeParseInt","baseIsNaN","baseValues","object","props","iteratee","arrayMap","propertyIsEnumerable","nativeKeys","nativeMax","arrayLikeKeys","inherited","isArrayLike","isArrayLikeObject","isArguments","baseTimes","skipIndexes","isIndex","baseKeys","isLength","collection","fromIndex","guard","isSymbol","valueOf","isBinary","toFinite","toInteger","predicate","fromRight","baseFindIndex","baseIndexOf","i2ops","ZERO_BUF","checkParameters","subtle","toBrowser","checks","browserPbkdf2","iterations","importKey","deriveBits","keylen","prom","catch","checkNative","resp","sizes","rmd160","saltLen","shaFunc","getDigest","ipad1","ipad2","run","DK","block1","destPos","T","U","makeArrayFrom","SynchronousPromise","handler","_continuations","_parent","_paused","_continueWith","_failWith","looksLikeAPromise","passThrough","createAggregateErrorFrom","errors","AggregateError","nextFn","catchFn","unresolved","_setParent","_isRejected","catchResult","_error","_chainPromiseData","_runResolutions","_isResolved","_data","_runRejections","finally","ran","runFinally","callbackResult","firstPaused","_findFirstPaused","_findAncestry","firstPending","_findFirstPending","_setResolved","_findFirstAncestor","_isPending","matching","firstRejected","_setRejected","_takeContinuations","continuations","cont","_handleUserFunctionResult","_handleWhenResolvedDataIsPromise","_handleResolutionError","continuation","e2","nextSynchronousPromise","promiseData","newData","newError","newResult","allData","numResolved","idx","thisResult","doReject","allErrors","numRejected","resolved","allSettled","numSettled","doSettled","RealPromise","installGlobally","__awaiter","__patched","originalAwaiter","patchAwaiterIfRequired","uninstallGlobally","toposort","nodes","edges","cursor","sorted","visited","outgoingEdges","Map","edge","has","Set","makeOutgoingEdges","nodesHash","makeNodesHash","visit","predecessors","nodeRep","outgoing","delete","uniqueNodes","DataStream","_reverse","NotBeforeError","Sha224","getParamBytesForAlg","signatureAsBuffer","countPadding","maxEncodedParamLength","inputLength","TAG_SEQ","seqLength","TAG_INT","rLength","rOffset","sLength","sOffset","rPadding","sPadding","signatureBytes","rsBytes","shortLength","MAX_OCTET","CorkedRequest","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","WritableState","internalUtil","deprecate","realHasInstance","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","noDecode","decodeStrings","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","doWrite","onwriteDrain","holder","count","allBuffers","isBuf","callFinal","need","rState","getBuffer","hasInstance","writeAfterEnd","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","dispatchRequest","interceptors","chain","interceptor","getUri","isSurrogatePair","htonl","zero8","join32","rotr32","sum32_3","sum32_4","sum64","ah","bh","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","eh","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","jwa","JWS_REGEX","safeJsonParse","headerFromJWS","jwsSig","encodedHeader","signatureFromJWS","isValidJws","jwsVerify","secretOrKey","securedInput","securedInputFromJWS","jwsDecode","payloadFromJWS","typ","json","secretStream","valid","getr","prime1","prime2","blinds","blinder","unblinder","blind","blinded","qinv","coefficient","exponent1","m2","exponent2","plural","ms","msAbs","isPlural","exec","parseFloat","long","fmtLong","fmtShort","isBoolean","isNull","isNullOrUndefined","isRegExp","isPrimitive","Sha512","Ch","xl","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","fh","gh","hh","fl","gl","xh","gamma0l","gamma1","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","writeInt64BE","NODE_DEBUG","SEMVER_SPEC_VERSION","MAX_SAFE_INTEGER","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","MAINVERSION","MAINVERSIONLOOSE","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","PRERELEASE","PRERELEASELOOSE","BUILDIDENTIFIER","BUILD","FULL","FULLPLAIN","LOOSEPLAIN","LOOSE","GTLT","XRANGEIDENTIFIERLOOSE","XRANGEIDENTIFIER","XRANGEPLAIN","XRANGEPLAINLOOSE","XRANGE","XRANGELOOSE","COERCE","LONETILDE","TILDETRIM","RegExp","TILDE","TILDELOOSE","LONECARET","CARETTRIM","CARET","CARETLOOSE","COMPARATORLOOSE","COMPARATOR","COMPARATORTRIM","HYPHENRANGE","HYPHENRANGELOOSE","STAR","loose","includePrerelease","SemVer","major","minor","patch","prerelease","build","clean","compareMain","comparePre","compareIdentifiers","inc","release","identifier","version1","version2","prefix","defaultResult","numeric","anum","bnum","neq","op","Comparator","comp","ANY","operator","rcompareIdentifiers","compareLoose","rcompare","sort","rsort","Range","range","parseRange","isX","hyphenReplace","$0","fM","fm","fp","fpr","fb","tM","tm","tp","tpr","tb","testSet","allowed","outside","hilo","gtfn","ltefn","ltfn","ecomp","comparators","high","low","comparator","intersects","rangeTmp","sameDirectionIncreasing","sameDirectionDecreasing","sameSemVer","differentDirectionsInclusive","oppositeDirectionsLessThan","oppositeDirectionsGreaterThan","comps","compRe","pr","replaceCaret","replaceCarets","replaceTilde","replaceTildes","gtlt","xM","xm","replaceXRange","replaceXRanges","replaceStars","parseComparator","thisComparators","every","thisComparator","rangeComparators","rangeComparator","toComparators","maxSatisfying","versions","maxSV","rangeObj","minSatisfying","minSV","minVersion","minver","compver","validRange","ltr","gtr","r1","coerce","ck","_ghash","_finID","toPad","ivBits","calcIv","_secCache","_alen","_authTag","_called","rump","xorTest","getOwnPropertyDescriptors","descriptors","getOwnPropertyDescriptor","formatRegExp","objects","noDeprecation","throwDeprecation","traceDeprecation","debugEnviron","debugs","seen","stylize","stylizeNoColor","depth","colors","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","styles","recurseTimes","simple","formatPrimitive","visibleKeys","arrayToHash","getOwnPropertyNames","formatError","braces","toUTCString","formatProperty","formatArray","numLinesEst","reduceToSingleString","desc","line","pid","months","timestamp","getHours","getMinutes","getSeconds","getDate","getMonth","origin","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","original","promiseResolve","promiseReject","defineProperties","callbackify","callbackified","maybeCb","rej","safer","Safer","kStringMaxLength","binding","MAX_LENGTH","MAX_STRING_LENGTH","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","SHA256","ReporterError","rethrow","pathLen","now","elem","partial","captureStackTrace","EdwardsCurve","twisted","mOneA","dd","oneC","_mulA","_mulC","lhs","_extDbl","nt","_projDbl","_extAdd","_projAdd","zi","bufferOff","_updateDecrypt","_updateEncrypt","_buffer","_flushBuffer","inputOff","outputOff","_finalEncrypt","_finalDecrypt","aesid","fixProc","ciphers","compat","passphrase","subtype","ndata","stripped","tbsCertificate","subjectPublicKeyInfo","subjectPublicKey","kde","kdeparams","iters","cipher","cipherText","parameters","algorithms","_hashType","_tag","_signType","isEncoderBuffer","PS_SUPPORTED","isInteger","SUPPORTED_ALGS","sign_options_schema","expiresIn","notBefore","audience","issuer","subject","jwtid","noTimestamp","keyid","mutatePayload","registered_claims_schema","iat","exp","nbf","schema","allowUnknown","parameterName","validator","options_to_payload","options_for_objects","secretOrPrivateKey","isObjectPayload","assign","kid","failure","validatePayload","invalid_options","opt","validateOptions","timespan","claim","PEMEncoder","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","Cache","maxSize","_maxSize","_values","SPLIT_REGEX","DIGIT_REGEX","LEAD_DIGIT_REGEX","SPEC_CHAR_REGEX","CLEAN_QUOTES_REGEX","pathCache","setCache","getCache","normalizePath","part","isQuoted","shouldBeQuoted","hasLeadingNumber","hasSpecialChars","setter","getter","safe","segments","isBracket","_forEach","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","maxContentLength","maxBodyLength","ignoreDuplicateOf","Accept","orsCookie","Cookies","logout","profile","refreshToken","accessToken","getTime","tokenExpiry","tokenTimeLeft","refreshTokenExpiry","refreshTokenTimeLeft","post","refreshResponse","newAccessToken","newRefreshToken","refreshExpiry","expires","useReviews","useState","hasReviewError","setError","isFetchingReviews","setFetching","getReview","queryParams","getReviews","getBoardReviews","boardId","useBoards","hasBoardError","isFetchingBoard","setFetchingBoard","isFetchingBoards","getBoards","includePosition","position","getBoard","abbr","useOrganizations","hasOrgError","isFetchingOrgs","getOrganizations","useReviewDownloads","isFetching","downloadComments","reviewId","published","enqueueDownloadAttachments","dataFormat","includeComments","referenceId","downloadAttachments","ResponseErrorType","errorType","ResponseErrorDetails","details","class","ResponseData","errorDetails","errorMessage","getMessages","getErrorType","Response","ResponseException","exception","getErrorMessage","useUploadResponseAttachments","uploadingErrors","setUploadErrors","isUploadingAttachments","setUploading","uploadAttachments","file","formData","append","useResponses","resErrors","setResErrors","isSubmitingResponse","setSubmiting","submitResponses","useGetCommentSet","getCommentSetsSummary","getCommentSetById","commentSetId","withReplies","comments","customTopic","parsePlainTextToJSON","useGetUsers","users","setUsers","getUsers","organizationId","getUser","useNewsLetterApi","dataNewsLetter","setDataNewsLetter","apiSuccess","setApisuccess","apiErrors","setApiErrors","showNL","setShowNL","listFile","userCount","setUserCount","updateUserNewsLetter","submissionType","NewsLetterSubmissionType","Submit","Update","UpdatePreferences","getNewsLetters","rows","Email","getUserNewsLetter","getUserPreferences","Newsletter","useGetEngagements","setIsFetching","engagementList","setEngagementList","setCount","getEngagements","engagementData","dataCount","objectKeys","allowHalfOpen","onEndNT","EDEState","k3","_edeState","modeModules","ECB","CFB","CFB8","CFB1","OFB","CTR","GCM","before","Algorithm","generated","_finalized","throwIfNotStringOrBuffer","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","_defineProperties","descriptor","protoProps","staticProps","hasStrings","_getString","_getBuffer","_objectSpread","sha512_K","SHA512","ch64_hi","yh","yl","zh","ch64_lo","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","deciphers","Sha384","outer","SEVEN","_pub","primeCache","malleable","setGenerator","__prime","_primeLen","_primeCode","hex","checkPrime","__gen","_gen","getPrime","front","getGenerator","emitErrorAndCloseNT","emitCloseNT","_secret","_pubBytes","privBytes","getSecret","_importDER","Position","place","getLength","initial","octetLen","rmPadding","constructLength","octets","slen","backHalf","milliseconds","move","_move","for","modrn","allocate","_toArrayLikeLE","_toArrayLikeBE","isNegNum","privEnc","pubEnc","derive","PUB_KEY_ALGS","RSA_KEY_ALGS","HS_ALGS","jwtString","secretOrPublicKey","clockTimestamp","decodedToken","secretCallback","hasSignature","ignoreNotBefore","clockTolerance","ignoreExpiration","audiences","aud","targetAudience","iss","jti","maxAge","maxAgeTimestamp","enhanceError","jwsSign","encodedPayload","jwsSecuredInput","isAbsoluteURL","combineURLs","requestedURL","readableHwm","readableHighWaterMark","defaultHwm","needMoreData","copyFromBufferString","copyFromBuffer","fromListPartial","increasedAwaitDrain","ReflectOwnKeys","Reflect","ReflectApply","receiver","NumberIsNaN","eventListener","errorListener","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","_addListener","prepend","events","existing","warning","newListener","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","setMaxListeners","getMaxListeners","doError","prependOnceListener","originalListener","spliceOne","rawListeners","eventNames","normalizedName","SHA224","pending","pendingTotal","_delta8","_delta32","CBCState","_cbcInit","_cbcState","superProto","SHA384","_rand","getBytes","getByte","0","1","2","3","asyncWrite","writableHwm","writableHighWaterMark","MAX_ALLOC","findProc","startRegex","fullRegex","evp","okey","decrypted","cipherKey","match2","p32","Kh","E","Ah","Bh","Dh","Eh","rh","sh","domain","secure","cookie","toGMTString","decodeURIComponent","remove","reIsDeepProp","reIsPlainProp","hasFunc","customizer","CLONE_DEEP_FLAG","reHasUnicode","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsSeq","rsSymbol","reUnicode","symIterator","errorToString","regExpToString","symbolToString","SYMBOL_REGEXP","printSimpleValue","quoteStrings","typeOf","printNumber","printValue","mixed","required","notOneOf","notType","_ref","originalValue","isCast","defined","matches","email","uuid","lowercase","uppercase","lessThan","moreThan","notEqual","integer","noUnknown","__isYupSchema__","Condition","refs","otherwise","is","check","_len2","_key2","branch","getValue","isSchema","strReg","ValidationError","field","propagateErrors","endEarly","collectErrors","validations","unwrapError","settled","results","nestedErrors","_ref2","runValidations","_ref3","keysFunc","__data__","SetCache","bitmask","equalFunc","isPartial","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","symbolProto","symbolValueOf","convert","stacked","objProps","objLength","objStacked","skipCtor","objValue","objCtor","othCtor","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","isTypedArray","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","baseIsEqual","matchData","noCustomizer","srcValue","defaultValue","prefixes","Reference","isContext","isValue","isSibling","_proto","cast","describe","isRef","__isYupRef","createErrorFactory","_temp","_ref2$path","_ref2$message","_ref2$type","oldParams","newParams","resolveParams","createValidation","rest","testFn","runTest","validOrError","OPTIONS","getIn","lastPart","lastPartDebug","_part","innerType","fields","_type","parentPath","_createForOfIteratorHelperLoose","allowArrayLike","it","minLen","_arrayLikeToArray","_unsupportedIterableToArray","arr2","RefSet","_step","_iterator","_step2","_iterator2","newItems","removeItems","SchemaType","_deps","_conditions","_options","abortEarly","recursive","_exclusive","_whitelist","_blacklist","tests","transforms","withMutation","_defaultDefault","_mutate","_label","meta","_meta","prependDeep","sourceVal","targetVal","_default","isType","_nullable","_typeCheck","conditions","condition","resolvedSchema","_cast","formattedValue","formattedResult","rawValue","_this3","_validate","_value","_this4","isStrict","_option","validationParams","initialTests","_typeError","_whitelistError","_blacklistError","validateSync","isValidSync","getDefault","strict","_isPresent","exclusive","notRequired","nullable","isNullable","isExclusive","when","deps","dep","enums","valids","invalids","overrides","findIndex","_getIn","_arr2","_arr3","spec","BooleanSchema","Boolean","rEmail","rUrl","rUUID","isAbsent","StringSchema","_min","_max","regex","excludeEmptyString","ensure","NumberSchema","less","more","truncate","avail","isoReg","invalidDate","DateSchema","struct","numericKeys","minutesOffset","_taggedTemplateLiteralLoose","strings","accumulator","initAccum","reLatin","reComboMark","reAsciiWord","reHasUnicodeWord","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsEmoji","reUnicodeWord","pattern","reApos","methodName","strSymbols","chr","trailing","sortFields","excludes","addNode","depPath","ii","makePath","_templateObject3","_templateObject2","_templateObject","ObjectSchema","_nodes","dft","_excludedEdges","shape","intermediateValue","innerOptions","__validating","isChanged","exists","fieldValue","_from","alias","fromGetter","newObj","noAllow","unknownKeys","known","unknown","stripUnknown","allow","transformKeys","camelCase","snakeCase","constantCase","ArraySchema","_subType","of","_opts","castArray","castElement","_path","rejector","Lazy","mapFn","_resolve","validateAt","validateSyncAt","AddReplySchema","yup","proponentId","TRANSFORMATION_ERROR_MESSAGE","TYPE_ERROR_MESSAGE","EMPTY_RICH_TEXT_ERROR_MESSAGE","richTextInput","Utils","richTextContentToPlainText","EMPTY_RICH_TEXT_CONTENT_ERROR_MESSAGE","parentId","commentId","attachments","NewsLetterSchema","agree","lwb","rboard"],"mappings":"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AAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,IAChRC,EAAK,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,IAChRC,EAAK,CAAC,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAC3RC,EAAK,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,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AAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,sEAEtsRC,IAAK,CACHruB,IAAK,EACLouB,OAAQ,CAAC,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,iEAAkE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,C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EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,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,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV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","file":"f5b95a8ccc3e2148e2930a613dd2a9c95be66dd9-234e629b00c22e2d5f65.js","sourcesContent":["(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\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; // Reduction context\n\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\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 var Buffer;\n\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && 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\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\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\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\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\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\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\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this.strip();\n };\n\n function parseHex(str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r <<= 4; // 'a' - 'f'\n\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa; // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa; // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start) {\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\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w; // Scan 24-bit chunks and add them to the number\n\n var off = 0;\n\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= w << off & 0x3ffffff; // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n\n this.words[j + 1] |= w >>> 26 - off & 0x3fffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] |= w >>> 26 - off & 0x3fffff;\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\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n r += c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa; // '0' - '9'\n } else {\n r += c;\n }\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; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\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\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\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\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\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\n return this;\n };\n\n BN.prototype.inspect = function inspect() {\n return (this.red ? '';\n };\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\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 = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\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\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 off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\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]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\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\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\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\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\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 this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n\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 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 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\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\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 var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\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 w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\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\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\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\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 }; // Or `num` with `this` in-place\n\n\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 }; // Or `num` with `this`\n\n\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 }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\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 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 }; // And `num` with `this`\n\n\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 }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\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 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 }; // Xor `num` with `this`\n\n\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 }; // Not ``this`` with ``width`` bitwidth\n\n\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this.strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\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 }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\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(); // 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 } // a.length > b.length\n\n\n var a, b;\n\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\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\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\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // 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 }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\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 return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\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(); // -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 } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\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\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\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 } // Copy rest of the words\n\n\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 }; // Subtract `num` from `this`\n\n\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; // Peel one iteration (compiler can't do it, because of code complexity)\n\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\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\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\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\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\n\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 out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\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 var carry = 0;\n var hncarry = 0;\n\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\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 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 hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\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\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 }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\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\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\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 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 var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n /* jshint maxdepth : false */\n\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\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\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 rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\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\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\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\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n } // Pad with zeroes\n\n\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\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 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 var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, 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 out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n }; // Multiply `this` by `num`\n\n\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 }; // Multiply employing FFT\n\n\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 }; // In-place Multiplication\n\n\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); // Carry\n\n var carry = 0;\n\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; // NOTE: lo is 27bit maximum\n\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 }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\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 res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\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 }; // 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\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\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 h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\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\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 } // Push carried bits as a mask\n\n\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 }; // Shift-left\n\n\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 }; // Shift-right\n\n\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 }; // Test if n bit is set\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\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 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\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 }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\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 } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\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 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\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\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(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\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\n this.negative = 1;\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\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\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\n if (diff.negative === 0) {\n a = diff;\n\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 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q.strip();\n }\n\n a.strip(); // Denormalize\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\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\n\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\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\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\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\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 }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\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 }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\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 var acc = 0;\n\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 }; // In-place division by number\n\n\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n\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 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 } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\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 ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\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 ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\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 }; // 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\n\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\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 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 ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\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 ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\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\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 var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\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\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\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 }; // Invert number in the field F(num)\n\n\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 }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\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\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\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 if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n\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 var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\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 var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Unsigned comparison\n\n\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 var res = 0;\n\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 if (a === b) continue;\n\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\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 // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\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\n this.red._verify2(this, num);\n\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\n this.red._verify2(this, num);\n\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\n this.red._verify1(this);\n\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\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\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\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\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 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\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(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\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\n prev >>>= 22;\n input.words[i - 10] = prev;\n\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; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\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 } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\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 num.words[i] = lo;\n carry = hi;\n }\n\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\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\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\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, '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\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\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\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\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\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\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\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\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 var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\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\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\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\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 var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\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\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\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\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 res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\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 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 // Montgomery method engine\n //\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 this.shift = this.m.bitLength();\n\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 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\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 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\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);","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\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});\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(this.key('type').objid(), this.key('value').any());\n});\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(this.key('algorithm').objid(), this.key('parameters').optional(), this.key('curve').objid().optional());\n});\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPublicKey').bitstr());\n});\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue);\n});\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName);\n});\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n });\n});\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(this.key('notBefore').use(Time), this.key('notAfter').use(Time));\n});\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(this.key('extnID').objid(), this.key('critical').bool().def(false), this.key('extnValue').octstr());\n});\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(this.key('version').explicit(0).int().optional(), this.key('serialNumber').int(), this.key('signature').use(AlgorithmIdentifier), this.key('issuer').use(Name), this.key('validity').use(Validity), this.key('subject').use(Name), this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo), this.key('issuerUniqueID').implicit(1).bitstr().optional(), this.key('subjectUniqueID').implicit(2).bitstr().optional(), this.key('extensions').explicit(3).seqof(Extension).optional());\n});\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(this.key('tbsCertificate').use(TBSCertificate), this.key('signatureAlgorithm').use(AlgorithmIdentifier), this.key('signatureValue').bitstr());\n});\nmodule.exports = X509Certificate;","var hash = exports;\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'); // Proxy hash functions to the main object\n\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;","'use strict';\n\nvar Buffer = require('buffer').Buffer;\n\nvar inherits = require('inherits');\n\nvar HashBase = require('hash-base');\n\nvar ARRAY16 = new Array(16);\nvar zl = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];\nvar zr = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];\nvar sl = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];\nvar sr = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e];\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000];\n\nfunction RIPEMD160() {\n HashBase.call(this, 64); // state\n\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\n for (var j = 0; j < 16; ++j) {\n words[j] = this._block.readInt32LE(j * 4);\n }\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 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; // computation\n\n for (var i = 0; i < 80; i += 1) {\n var tl;\n var tr;\n\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 {\n // 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 ar = er;\n er = dr;\n dr = rotl(cr, 10);\n cr = br;\n br = tr;\n } // update state\n\n\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\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64);\n\n this._update();\n\n this._blockOffset = 0;\n }\n\n this._block.fill(0, this._blockOffset, 56);\n\n this._block.writeUInt32LE(this._length[0], 56);\n\n this._block.writeUInt32LE(this._length[1], 60);\n\n this._update(); // produce result\n\n\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;","var scope = typeof global !== \"undefined\" && global || typeof self !== \"undefined\" && self || window;\nvar apply = Function.prototype.apply; // DOM APIs, for completeness\n\nexports.setTimeout = function () {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\n\nexports.setInterval = function () {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\n\nexports.clearTimeout = exports.clearInterval = function (timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\n\nTimeout.prototype.unref = Timeout.prototype.ref = function () {};\n\nTimeout.prototype.close = function () {\n this._clearFn.call(scope, this._id);\n}; // Does not start the time, just sets up the members needed.\n\n\nexports.enroll = function (item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function (item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function (item) {\n clearTimeout(item._idleTimeoutId);\n var msecs = item._idleTimeout;\n\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout) item._onTimeout();\n }, msecs);\n }\n}; // setimmediate attaches itself to the global object\n\n\nrequire(\"setimmediate\"); // On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\n\n\nexports.setImmediate = typeof self !== \"undefined\" && self.setImmediate || typeof global !== \"undefined\" && global.setImmediate || this && this.setImmediate;\nexports.clearImmediate = typeof self !== \"undefined\" && self.clearImmediate || typeof global !== \"undefined\" && global.clearImmediate || this && this.clearImmediate;","var jws = require('jws');\n\nmodule.exports = function (jwt, options) {\n options = options || {};\n var decoded = jws.decode(jwt, options);\n\n if (!decoded) {\n return null;\n }\n\n var payload = decoded.payload; //try parse the payload\n\n if (typeof payload === 'string') {\n try {\n var obj = JSON.parse(payload);\n\n if (obj !== null && typeof obj === 'object') {\n payload = obj;\n }\n } catch (e) {}\n } //return header if `complete` option is enabled. header includes claims\n //such as `kid` and `alg` used to select the key within a JWKS needed to\n //verify the signature\n\n\n if (options.complete === true) {\n return {\n header: decoded.header,\n payload: payload,\n signature: decoded.signature\n };\n }\n\n return payload;\n};","module.exports = require('events').EventEmitter;","var generatePrime = require('./lib/generatePrime');\n\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 return new DH(prime, gen);\n}\n\nvar ENCODINGS = {\n 'binary': true,\n 'hex': true,\n '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;","var Buffer = require('safe-buffer').Buffer;\n\nvar ZEROES = Buffer.alloc(16, 0);\n\nfunction toArray(buf) {\n return [buf.readUInt32BE(0), buf.readUInt32BE(4), buf.readUInt32BE(8), buf.readUInt32BE(12)];\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} // from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\n\n\nGHASH.prototype.ghash = function (block) {\n var i = -1;\n\n while (++i < block.length) {\n this.state[i] ^= block[i];\n }\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\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & 1 << 7 - i % 8) !== 0;\n\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 } // Store the value of LSB(V_i)\n\n\n lsbVi = (Vi[3] & 1) !== 0; // V_i+1 = V_i >> 1\n\n for (j = 3; j > 0; j--) {\n Vi[j] = Vi[j] >>> 1 | (Vi[j - 1] & 1) << 31;\n }\n\n Vi[0] = Vi[0] >>> 1; // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n\n if (lsbVi) {\n Vi[0] = Vi[0] ^ 0xe1 << 24;\n }\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\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;","// 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/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\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/**/\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/**/\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\nvar hash = require('hash.js');\n\nvar curves = require('../curves');\n\nvar utils = require('../utils');\n\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\n\nvar KeyPair = require('./key');\n\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n if (!(this instanceof EDDSA)) return new EDDSA(curve);\n var curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\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* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\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).mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({\n R: R,\n S: S,\n 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*/\n\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\n for (var i = 0; i < arguments.length; i++) {\n hash.update(arguments[i]);\n }\n\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) return sig;\n return new Signature(this, sig);\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*/\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 var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\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};","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = utils.isStandardBrowserEnv() ? // Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\nfunction standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href); // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: urlParsingNode.pathname.charAt(0) === '/' ? urlParsingNode.pathname : '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n\n return function isURLSameOrigin(requestURL) {\n var parsed = utils.isString(requestURL) ? resolveURL(requestURL) : requestURL;\n return parsed.protocol === originURL.protocol && parsed.host === originURL.host;\n };\n}() : // Non standard browser envs (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\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\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\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};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\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 = /*#__PURE__*/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;","'use strict';\n\nvar hash = require('hash.js');\n\nvar utils = require('minimalistic-crypto-utils');\n\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG)) return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\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, 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._init(entropy, nonce, pers);\n}\n\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n\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\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().update(this.V).update([0x00]);\n\n if (seed) kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed) return;\n this.K = this._hmac().update(this.V).update([0x01]).update(seed).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 assert(entropy.length >= this.minEntropy / 8, 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval) throw new Error('Reseed is required'); // Optional encoding\n\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n } // Optional additional data\n\n\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n\n this._update(add);\n }\n\n var temp = [];\n\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\n this._update(add);\n\n this._reseed++;\n return utils.encode(res, enc);\n};","var bn = require('bn.js');\n\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\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); // 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\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 if (!k) k = Math.max(1, len / 48 | 0); // Find d and s, (n - 1) = (2 ^ s) * d;\n\n var n1 = n.subn(1);\n\n for (var s = 0; !n1.testn(s); s++) {}\n\n var d = n.shrn(s);\n var rn1 = n1.toRed(red);\n var prime = true;\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n if (cb) cb(a);\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n if (x.cmp(rone) === 0) return false;\n if (x.cmp(rn1) === 0) break;\n }\n\n if (i === s) 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 if (!k) k = Math.max(1, len / 48 | 0); // Find d and s, (n - 1) = (2 ^ s) * d;\n\n var n1 = n.subn(1);\n\n for (var s = 0; !n1.testn(s); s++) {}\n\n var d = n.shrn(s);\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) return g;\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n if (x.cmp(rone) === 0) return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0) 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};","var xor = require('buffer-xor');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar incr32 = require('../incr32');\n\nfunction getBlock(self) {\n var out = self._cipher.encryptBlockRaw(self._prev);\n\n incr32(self._prev);\n return out;\n}\n\nvar blockSize = 16;\n\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize);\n var start = self._cache.length;\n self._cache = Buffer.concat([self._cache, 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\n self._cache.writeUInt32BE(out[0], offset + 0);\n\n self._cache.writeUInt32BE(out[1], offset + 4);\n\n self._cache.writeUInt32BE(out[2], offset + 8);\n\n self._cache.writeUInt32BE(out[3], offset + 12);\n }\n\n var pad = self._cache.slice(0, chunk.length);\n\n self._cache = self._cache.slice(chunk.length);\n return xor(chunk, pad);\n};","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? nBytes - 1 : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n i += d;\n e = s & (1 << -nBits) - 1;\n s >>= -nBits;\n nBits += eLen;\n\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : (s ? -1 : 1) * Infinity;\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n};\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n var i = isLE ? 0 : nBytes - 1;\n var d = isLE ? 1 : -1;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = e << mLen | m;\n eLen += mLen;\n\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n};","var semver = require('semver');\n\nmodule.exports = semver.satisfies(process.version, '^6.12.0 || >=8.0.0');","'use strict';\n\nvar inherits = require('inherits');\n\nvar Buffer = require('safer-buffer').Buffer;\n\nvar Node = require('../base/node'); // Import DER constants\n\n\nvar der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity; // Construct base tree\n\n this.tree = new DERNode();\n\n this.tree._init(entity.body);\n}\n\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n}; // Tree methods\n\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\n\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag, primitive, cls, content) {\n var encodedTag = encodeTag(tag, primitive, cls, this.reporter); // Short form\n\n if (content.length < 0x80) {\n var _header = Buffer.alloc(2);\n\n _header[0] = encodedTag;\n _header[1] = content.length;\n return this._createEncoderBuffer([_header, content]);\n } // Long form\n // Count octets required to store length\n\n\n var lenOctets = 1;\n\n for (var i = content.length; i >= 0x100; i >>= 8) {\n lenOctets++;\n }\n\n var header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (var _i = 1 + lenOctets, j = content.length; j > 0; _i--, j >>= 8) {\n header[_i] = j & 0xff;\n }\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 var buf = Buffer.alloc(str.length * 2);\n\n for (var i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\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 ' + 'only digits and space');\n }\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 ' + 'only latin upper and lower case letters, ' + 'digits, space, apostrophe, left and rigth ' + 'parenthesis, plus sign, comma, hyphen, ' + 'dot, slash, colon, equal sign, ' + 'question mark');\n }\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 + ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values) return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id)) return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n\n for (var i = 0; i < id.length; i++) {\n id[i] |= 0;\n }\n } else if (Array.isArray(id)) {\n id = id.slice();\n\n for (var _i2 = 0; _i2 < id.length; _i2++) {\n id[_i2] |= 0;\n }\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' + 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40) return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n } // Count number of octets\n\n\n var size = 0;\n\n for (var _i3 = 0; _i3 < id.length; _i3++) {\n var ident = id[_i3];\n\n for (size++; ident >= 0x80; ident >>= 7) {\n size++;\n }\n }\n\n var objid = Buffer.alloc(size);\n var offset = objid.length - 1;\n\n for (var _i4 = id.length - 1; _i4 >= 0; _i4--) {\n var _ident = id[_i4];\n objid[offset--] = _ident & 0x7f;\n\n while ((_ident >>= 7) > 0) {\n objid[offset--] = 0x80 | _ident & 0x7f;\n }\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10) return '0' + num;else return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n var str;\n var date = new Date(time);\n\n if (tag === 'gentime') {\n str = [two(date.getUTCFullYear()), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), 'Z'].join('');\n } else if (tag === 'utctime') {\n str = [two(date.getUTCFullYear() % 100), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), 'Z'].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) return this.reporter.error('String int or enum given, but no values map');\n\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' + JSON.stringify(num));\n }\n\n num = values[num];\n } // Bignum, assume big endian\n\n\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n var numArray = num.toArray();\n\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n var _size = num.length;\n if (num.length === 0) _size++;\n\n var _out = Buffer.alloc(_size);\n\n num.copy(_out);\n if (num.length === 0) _out[0] = 0;\n return this._createEncoderBuffer(_out);\n }\n\n if (num < 0x80) return this._createEncoderBuffer(num);\n if (num < 0x100) return this._createEncoderBuffer([0, num]);\n var size = 1;\n\n for (var i = num; i >= 0x100; i >>= 8) {\n size++;\n }\n\n var out = new Array(size);\n\n for (var _i5 = out.length - 1; _i5 >= 0; _i5--) {\n out[_i5] = num & 0xff;\n num >>= 8;\n }\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') entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n var state = this._baseState;\n var i;\n if (state['default'] === null) return false;\n var data = dataBuffer.join();\n if (state.defaultBuffer === undefined) state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n if (data.length !== state.defaultBuffer.length) return false;\n\n for (i = 0; i < data.length; i++) {\n if (data[i] !== state.defaultBuffer[i]) return false;\n }\n\n return true;\n}; // Utility methods\n\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n var res;\n if (tag === 'seqof') tag = 'seq';else if (tag === 'setof') tag = 'set';\n if (der.tagByName.hasOwnProperty(tag)) res = der.tagByName[tag];else if (typeof tag === 'number' && (tag | 0) === tag) res = tag;else return reporter.error('Unknown tag: ' + tag);\n if (res >= 0x1f) return reporter.error('Multi-octet tag encoding unsupported');\n if (!primitive) res |= 0x20;\n res |= der.tagClassByName[cls || 'universal'] << 6;\n return res;\n}","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\n\nvar curve = require('./curve');\n\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short') this.curve = new curve.short(options);else if (options.type === 'edwards') this.curve = new curve.edwards(options);else this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\n\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function get() {\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: ['188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012', '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811']\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: ['b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21', 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34']\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: ['6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296', '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5']\n});\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' + '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' + 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: ['aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' + '5502f25d bf55296c 3a545e38 72760ab7', '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' + '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f']\n});\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' + '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' + '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' + 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: ['000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' + '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' + 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66', '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' + '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' + '3fad0761 353c7086 a272c240 88be9476 9fd16650']\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: ['9']\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: ['216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a', // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658']\n});\nvar pre;\n\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 // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [{\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3'\n }, {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15'\n }],\n gRed: false,\n g: ['79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798', '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8', pre]\n});","/*jshint node:true */\n'use strict';\n\nvar Buffer = require('buffer').Buffer; // browserify\n\n\nvar SlowBuffer = require('buffer').SlowBuffer;\n\nmodule.exports = bufferEq;\n\nfunction bufferEq(a, b) {\n // shortcutting on type is necessary for correctness\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n return false;\n } // buffer sizes should be well-known information, so despite this\n // shortcutting, it doesn't leak any information about the *contents* of the\n // buffers.\n\n\n if (a.length !== b.length) {\n return false;\n }\n\n var c = 0;\n\n for (var i = 0; i < a.length; i++) {\n /*jshint bitwise:false */\n c |= a[i] ^ b[i]; // XOR\n }\n\n return c === 0;\n}\n\nbufferEq.install = function () {\n Buffer.prototype.equal = SlowBuffer.prototype.equal = function equal(that) {\n return bufferEq(this, that);\n };\n};\n\nvar origBufEqual = Buffer.prototype.equal;\nvar origSlowBufEqual = SlowBuffer.prototype.equal;\n\nbufferEq.restore = function () {\n Buffer.prototype.equal = origBufEqual;\n SlowBuffer.prototype.equal = origSlowBufEqual;\n};","'use strict';\n\nvar utils = require('./../utils');\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\n\n\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n return data;\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};","// 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/\nvar Buffer = require('safe-buffer').Buffer;\n\nfunction asUInt32Array(buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\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 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 return [t0, t1, t2, t3];\n} // AES constants\n\n\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\nvar G = function () {\n // Compute double table\n var d = new Array(256);\n\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 = [[], [], [], []]; // Walk GF(2^8)\n\n var x = 0;\n var xi = 0;\n\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; // Compute multiplication\n\n var x2 = d[x];\n var x4 = d[x2];\n var x8 = d[x4]; // Compute sub bytes, mix columns tables\n\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; // Compute inv sub bytes, inv mix columns tables\n\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\n this._reset();\n}\n\nAES.blockSize = 4 * 4;\nAES.keySize = 256 / 8;\nAES.prototype.blockSize = AES.blockSize;\nAES.prototype.keySize = AES.keySize;\n\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 var keySchedule = [];\n\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 = G.SBOX[t >>> 24] << 24 | G.SBOX[t >>> 16 & 0xff] << 16 | G.SBOX[t >>> 8 & 0xff] << 8 | G.SBOX[t & 0xff];\n t ^= RCON[k / keySize | 0] << 24;\n } else if (keySize > 6 && k % keySize === 4) {\n t = G.SBOX[t >>> 24] << 24 | G.SBOX[t >>> 16 & 0xff] << 16 | G.SBOX[t >>> 8 & 0xff] << 8 | G.SBOX[t & 0xff];\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t;\n }\n\n var invKeySchedule = [];\n\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] = G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^ G.INV_SUB_MIX[1][G.SBOX[tt >>> 16 & 0xff]] ^ G.INV_SUB_MIX[2][G.SBOX[tt >>> 8 & 0xff]] ^ 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); // swap\n\n var m1 = M[1];\n M[1] = M[3];\n M[3] = m1;\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;","module.exports = require('./lib/_stream_writable.js');","// 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/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n case 'raw':\n return true;\n\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n\n case 'latin1':\n case 'binary':\n return 'latin1';\n\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n\n default:\n if (retried) return; // undefined\n\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\n\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\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.\n\n\nexports.StringDecoder = StringDecoder;\n\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\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\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\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; // Returns only complete characters in a Buffer\n\nStringDecoder.prototype.text = utf8Text; // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\n\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\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\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.\n\n\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} // 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.\n\n\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n\n return nb;\n }\n\n return 0;\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.\n\n\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return \"\\uFFFD\";\n }\n\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return \"\\uFFFD\";\n }\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} // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\n\n\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n\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\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\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.\n\n\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} // For UTF-8, a replacement character is added when ending on a partial\n// character.\n\n\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + \"\\uFFFD\";\n return r;\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.\n\n\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n\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\n return r;\n }\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} // 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.\n\n\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\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\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\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} // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\n\n\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","var Buffer = require('safe-buffer').Buffer; // prototype class for hash functions\n\n\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 this._block[rem] = 0x80; // 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\n this._block.fill(0, rem + 1);\n\n if (rem >= this._finalSize) {\n this._update(this._block);\n\n this._block.fill(0);\n }\n\n var bits = this._len * 8; // uint32\n\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4); // uint64\n\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0;\n var highBits = (bits - lowBits) / 0x100000000;\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8);\n\n this._block.writeUInt32BE(lowBits, this._blockSize - 4);\n }\n\n this._update(this._block);\n\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;","'use strict';\n\nvar Reporter = require('../base/reporter').Reporter;\n\nvar EncoderBuffer = require('../base/buffer').EncoderBuffer;\n\nvar DecoderBuffer = require('../base/buffer').DecoderBuffer;\n\nvar assert = require('minimalistic-assert'); // Supported tags\n\n\nvar tags = ['seq', 'seqof', 'set', 'setof', 'objid', 'bool', 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc', 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str', 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr']; // Public methods list\n\nvar methods = ['key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice', 'any', 'contains'].concat(tags); // Overrided methods list\n\nvar overrided = ['_peekTag', '_decodeTag', '_use', '_decodeStr', '_decodeObjid', '_decodeTime', '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList', '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime', '_encodeNull', '_encodeInt', '_encodeBool'];\n\nfunction Node(enc, parent, name) {\n var state = {};\n this._baseState = state;\n state.name = name;\n state.enc = enc;\n state.parent = parent || null;\n state.children = null; // State\n\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; // Should create new instance on each method\n\n if (!state.parent) {\n state.children = [];\n\n this._wrap();\n }\n}\n\nmodule.exports = Node;\nvar stateProps = ['enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice', 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit', 'implicit', 'contains'];\n\nNode.prototype.clone = function clone() {\n var state = this._baseState;\n var cstate = {};\n stateProps.forEach(function (prop) {\n cstate[prop] = state[prop];\n });\n var res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n var state = this._baseState;\n methods.forEach(function (method) {\n this[method] = function _wrappedMethod() {\n var 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 var state = this._baseState;\n assert(state.parent === null);\n body.call(this); // Filter children\n\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 var state = this._baseState; // Filter children and args\n\n var 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; // Replace parent to maintain backward link\n\n children.forEach(function (child) {\n child._baseState.parent = this;\n }, this);\n }\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) return arg;\n var res = {};\n Object.keys(arg).forEach(function (key) {\n if (key == (key | 0)) key |= 0;\n var value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n}; //\n// Overrided methods\n//\n\n\noverrided.forEach(function (method) {\n Node.prototype[method] = function _overrided() {\n var state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n}); //\n// Public methods\n//\n\ntags.forEach(function (tag) {\n Node.prototype[tag] = function _tagMethod() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\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 var state = this._baseState;\n assert(state.use === null);\n state.use = item;\n return this;\n};\n\nNode.prototype.optional = function optional() {\n var state = this._baseState;\n state.optional = true;\n return this;\n};\n\nNode.prototype.def = function def(val) {\n var state = this._baseState;\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n var state = this._baseState;\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n var state = this._baseState;\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n return this;\n};\n\nNode.prototype.obj = function obj() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n state.obj = true;\n if (args.length !== 0) this._useArgs(args);\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n var state = this._baseState;\n assert(state.key === null);\n state.key = newKey;\n return this;\n};\n\nNode.prototype.any = function any() {\n var state = this._baseState;\n state.any = true;\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n var state = this._baseState;\n assert(state.choice === null);\n state.choice = obj;\n\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 var state = this._baseState;\n assert(state.use === null);\n state.contains = item;\n return this;\n}; //\n// Decoding\n//\n\n\nNode.prototype._decode = function decode(input, options) {\n var state = this._baseState; // Decode root node\n\n if (state.parent === null) return input.wrapResult(state.children[0]._decode(input, options));\n var result = state['default'];\n var present = true;\n var prevKey = null;\n if (state.key !== null) prevKey = input.enterKey(state.key); // Check if tag is there\n\n if (state.optional) {\n var tag = null;\n if (state.explicit !== null) tag = state.explicit;else if (state.implicit !== null) tag = state.implicit;else if (state.tag !== null) tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n var save = input.save();\n\n try {\n if (state.choice === null) this._decodeGeneric(state.tag, input, options);else this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n if (input.isError(present)) return present;\n }\n } // Push object on stack\n\n\n var prevObj;\n if (state.obj && present) prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n var explicit = this._decodeTag(input, state.explicit);\n\n if (input.isError(explicit)) return explicit;\n input = explicit;\n }\n\n var start = input.offset; // Unwrap implicit and normal values\n\n if (state.use === null && state.choice === null) {\n var _save;\n\n if (state.any) _save = input.save();\n\n var body = this._decodeTag(input, state.implicit !== null ? state.implicit : state.tag, state.any);\n\n if (input.isError(body)) return body;\n if (state.any) result = input.raw(_save);else input = body;\n }\n\n if (options && options.track && state.tag !== null) options.track(input.path(), start, input.length, 'tagged');\n if (options && options.track && state.tag !== null) options.track(input.path(), input.offset, input.length, 'content'); // Select proper method for tag\n\n if (state.any) {// 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)) return result; // Decode children\n\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 } // Decode contained/encoded by schema, only in bit or octet strings\n\n\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n var data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)._decode(data, options);\n }\n } // Pop object\n\n\n if (state.obj && present) result = input.leaveObject(prevObj); // Set key\n\n if (state.key !== null && (result !== null || present === true)) input.leaveKey(prevKey, state.key, result);else if (prevKey !== null) input.exitKey(prevKey);\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n var state = this._baseState;\n if (tag === 'seq' || tag === 'set') return null;\n if (tag === 'seqof' || tag === 'setof') return this._decodeList(input, tag, state.args[0], options);else if (/str$/.test(tag)) return this._decodeStr(input, tag, options);else if (tag === 'objid' && state.args) return this._decodeObjid(input, state.args[0], state.args[1], options);else if (tag === 'objid') return this._decodeObjid(input, null, null, options);else if (tag === 'gentime' || tag === 'utctime') return this._decodeTime(input, tag, options);else if (tag === 'null_') return this._decodeNull(input, options);else if (tag === 'bool') return this._decodeBool(input, options);else if (tag === 'objDesc') return this._decodeStr(input, tag, options);else if (tag === 'int' || tag === 'enum') 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)._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n var state = this._baseState; // Create altered use decoder if implicit is set\n\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n var state = this._baseState;\n var result = null;\n var match = false;\n Object.keys(state.choice).some(function (key) {\n var save = input.save();\n var node = state.choice[key];\n\n try {\n var value = node._decode(input, options);\n\n if (input.isError(value)) return false;\n result = {\n type: key,\n value: value\n };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n\n return true;\n }, this);\n if (!match) return input.error('Choice not matched');\n return result;\n}; //\n// Encoding\n//\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 var state = this._baseState;\n if (state['default'] !== null && state['default'] === data) return;\n\n var result = this._encodeValue(data, reporter, parent);\n\n if (result === undefined) return;\n if (this._skipDefault(result, reporter, parent)) return;\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n var state = this._baseState; // Decode root node\n\n if (state.parent === null) return state.children[0]._encode(data, reporter || new Reporter());\n var result = null; // Set reporter to share it with a child class\n\n this.reporter = reporter; // Check if data is there\n\n if (state.optional && data === undefined) {\n if (state['default'] !== null) data = state['default'];else return;\n } // Encode children first\n\n\n var content = null;\n var primitive = false;\n\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_') return child._encode(null, reporter, data);\n if (child._baseState.key === null) return reporter.error('Child should have a key');\n var prevKey = reporter.enterKey(child._baseState.key);\n if (typeof data !== 'object') return reporter.error('Child expected, but input is not object');\n\n var res = child._encode(data[child._baseState.key], reporter, data);\n\n reporter.leaveKey(prevKey);\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)) return reporter.error('Too many args for : ' + state.tag);\n if (!Array.isArray(data)) return reporter.error('seqof/setof, but data is not Array');\n var child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function (item) {\n var state = this._baseState;\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 } // Encode data itself\n\n\n if (!state.any && state.choice === null) {\n var tag = state.implicit !== null ? state.implicit : state.tag;\n var cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null) reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null) result = this._encodeComposite(tag, primitive, cls, content);\n }\n } // Wrap in explicit\n\n\n if (state.explicit !== null) result = this._encodeComposite(state.explicit, false, 'context', result);\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n var state = this._baseState;\n var node = state.choice[data.type];\n\n if (!node) {\n assert(false, data.type + ' not found in ' + JSON.stringify(Object.keys(state.choice)));\n }\n\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n var state = this._baseState;\n if (/str$/.test(tag)) return this._encodeStr(data, tag);else if (tag === 'objid' && state.args) return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);else if (tag === 'objid') return this._encodeObjid(data, null, null);else if (tag === 'gentime' || tag === 'utctime') return this._encodeTime(data, tag);else if (tag === 'null_') return this._encodeNull();else if (tag === 'int' || tag === 'enum') return this._encodeInt(data, state.args && state.reverseArgs[0]);else if (tag === 'bool') return this._encodeBool(data);else if (tag === 'objDesc') return this._encodeStr(data, tag);else 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};","var DES = require('browserify-des');\n\nvar aes = require('browserify-aes/browser');\n\nvar aesModes = require('browserify-aes/modes');\n\nvar desModes = require('browserify-des/modes');\n\nvar ebtk = require('evp_bytestokey');\n\nfunction createCipher(suite, password) {\n suite = suite.toLowerCase();\n var keyLen, ivLen;\n\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 var keyLen, ivLen;\n\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({\n key: key,\n iv: iv,\n 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({\n key: key,\n iv: iv,\n mode: suite,\n 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;","module.exports = {\n doubles: {\n step: 4,\n points: [['e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a', 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'], ['8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508', '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'], ['175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739', 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'], ['363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640', '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'], ['8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c', '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'], ['723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda', '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'], ['eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa', '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'], ['100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0', 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'], ['e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d', '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'], ['feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d', 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'], ['da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1', '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'], ['53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0', '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'], ['8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047', '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'], ['385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862', '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'], ['6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7', '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'], ['3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd', '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'], ['85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83', '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'], ['948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a', '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'], ['6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8', 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'], ['e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d', '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'], ['e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725', '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'], ['213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754', '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'], ['4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c', '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'], ['fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6', '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'], ['76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39', 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'], ['c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891', '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'], ['d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b', 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'], ['b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03', '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'], ['e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d', 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'], ['a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070', '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'], ['90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4', 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'], ['8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da', '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'], ['e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11', '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'], ['8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e', 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'], ['e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41', '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'], ['b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef', '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'], ['d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8', 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'], ['324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d', '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'], ['4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96', '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'], ['9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd', 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'], ['6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5', '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'], ['a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266', '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'], ['7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71', '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'], ['928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac', 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'], ['85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751', '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'], ['ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e', '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'], ['827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241', 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'], ['eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3', 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'], ['e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f', '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'], ['1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19', 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'], ['146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be', 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'], ['fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9', '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'], ['da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2', '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'], ['a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13', '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'], ['174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c', 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'], ['959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba', '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'], ['d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151', 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'], ['64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073', 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'], ['8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458', '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'], ['13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b', '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'], ['bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366', 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'], ['8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa', '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'], ['8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0', '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'], ['dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787', '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'], ['f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e', 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82']]\n },\n naf: {\n wnd: 7,\n points: [['f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9', '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'], ['2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4', 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'], ['5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc', '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'], ['acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe', 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'], ['774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb', 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'], ['f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8', 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'], ['d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e', '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'], ['defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34', '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'], ['2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c', '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'], ['352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5', '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'], ['2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f', '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'], ['9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714', '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'], ['daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729', 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'], ['c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db', '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'], ['6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4', 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'], ['1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5', 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'], ['605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479', '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'], ['62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d', '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'], ['80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f', '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'], ['7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb', 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'], ['d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9', 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'], ['49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963', '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'], ['77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74', '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'], ['f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530', 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'], ['463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b', '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'], ['f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247', 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'], ['caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1', 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'], ['2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120', '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'], ['7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435', '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'], ['754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18', '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'], ['e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8', '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'], ['186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb', '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'], ['df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f', '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'], ['5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143', 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'], ['290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba', 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'], ['af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45', 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'], ['766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a', '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'], ['59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e', 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'], ['f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8', 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'], ['7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c', '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'], ['948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519', 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'], ['7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab', '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'], ['3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca', 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'], ['d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf', '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'], ['1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610', '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'], ['733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4', 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'], ['15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c', 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'], ['a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940', 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'], ['e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980', 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'], ['311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3', '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'], ['34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf', '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'], ['f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63', '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'], ['d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448', 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'], ['32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf', '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'], ['7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5', '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'], ['ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6', '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'], ['16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5', '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'], ['eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99', 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'], ['78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51', 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'], ['494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5', '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'], ['a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5', '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'], ['c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997', '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'], ['841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881', '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'], ['5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5', '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'], ['36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66', 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'], ['336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726', 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'], ['8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede', '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'], ['1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94', '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'], ['85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31', '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'], ['29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51', 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'], ['a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252', 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'], ['4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5', 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'], ['d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b', '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'], ['ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4', '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'], ['af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f', '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'], ['e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889', '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'], ['591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246', 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'], ['11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984', '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'], ['3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a', 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'], ['cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030', 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'], ['c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197', '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'], ['c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593', 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'], ['a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef', '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'], ['347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38', '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'], ['da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a', '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'], ['c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111', '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'], ['4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502', '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'], ['3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea', 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'], ['cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26', '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'], ['b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986', '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'], ['d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e', '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'], ['48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4', '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'], ['dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda', 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'], ['6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859', 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'], ['e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f', 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'], ['eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c', '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'], ['13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942', 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'], ['ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a', '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'], ['b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80', '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'], ['ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d', '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'], ['8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1', 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'], ['52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63', 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'], ['e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352', '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'], ['7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193', 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'], ['5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00', '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'], ['32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58', 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'], ['e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7', 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'], ['8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8', 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'], ['4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e', '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'], ['3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d', 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'], ['674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b', '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'], ['d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f', 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'], ['30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6', '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'], ['be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297', '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'], ['93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a', '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'], ['b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c', 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'], ['d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52', '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'], ['d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb', 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'], ['463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065', 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'], ['7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917', '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'], ['74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9', 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'], ['30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3', '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'], ['9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57', '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'], ['176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66', 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'], ['75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8', '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'], ['809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721', '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'], ['1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180', '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9']]\n }\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\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}","var bufferEqual = require('buffer-equal-constant-time');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar crypto = require('crypto');\n\nvar formatEcdsa = require('ecdsa-sig-formatter');\n\nvar util = require('util');\n\nvar MSG_INVALID_ALGORITHM = '\"%s\" is not a valid algorithm.\\n Supported algorithms are:\\n \"HS256\", \"HS384\", \"HS512\", \"RS256\", \"RS384\", \"RS512\", \"PS256\", \"PS384\", \"PS512\", \"ES256\", \"ES384\", \"ES512\" and \"none\".';\nvar MSG_INVALID_SECRET = 'secret must be a string or buffer';\nvar MSG_INVALID_VERIFIER_KEY = 'key must be a string or a buffer';\nvar MSG_INVALID_SIGNER_KEY = 'key must be a string, a buffer or an object';\nvar supportsKeyObjects = typeof crypto.createPublicKey === 'function';\n\nif (supportsKeyObjects) {\n MSG_INVALID_VERIFIER_KEY += ' or a KeyObject';\n MSG_INVALID_SECRET += 'or a KeyObject';\n}\n\nfunction checkIsPublicKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return;\n }\n\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.type !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.asymmetricKeyType !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n}\n\n;\n\nfunction checkIsPrivateKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return;\n }\n\n if (typeof key === 'object') {\n return;\n }\n\n throw typeError(MSG_INVALID_SIGNER_KEY);\n}\n\n;\n\nfunction checkIsSecretKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return key;\n }\n\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (key.type !== 'secret') {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_SECRET);\n }\n}\n\nfunction fromBase64(base64) {\n return base64.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\n\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n var padding = 4 - base64url.length % 4;\n\n if (padding !== 4) {\n for (var i = 0; i < padding; ++i) {\n base64url += '=';\n }\n }\n\n return base64url.replace(/\\-/g, '+').replace(/_/g, '/');\n}\n\nfunction typeError(template) {\n var args = [].slice.call(arguments, 1);\n var errMsg = util.format.bind(util, template).apply(null, args);\n return new TypeError(errMsg);\n}\n\nfunction bufferOrString(obj) {\n return Buffer.isBuffer(obj) || typeof obj === 'string';\n}\n\nfunction normalizeInput(thing) {\n if (!bufferOrString(thing)) thing = JSON.stringify(thing);\n return thing;\n}\n\nfunction createHmacSigner(bits) {\n return function sign(thing, secret) {\n checkIsSecretKey(secret);\n thing = normalizeInput(thing);\n var hmac = crypto.createHmac('sha' + bits, secret);\n var sig = (hmac.update(thing), hmac.digest('base64'));\n return fromBase64(sig);\n };\n}\n\nfunction createHmacVerifier(bits) {\n return function verify(thing, signature, secret) {\n var computedSig = createHmacSigner(bits)(thing, secret);\n return bufferEqual(Buffer.from(signature), Buffer.from(computedSig));\n };\n}\n\nfunction createKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing); // Even though we are specifying \"RSA\" here, this works with ECDSA\n // keys as well.\n\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign(privateKey, 'base64'));\n return fromBase64(sig);\n };\n}\n\nfunction createKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify(publicKey, signature, 'base64');\n };\n}\n\nfunction createPSSKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign({\n key: privateKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, 'base64'));\n return fromBase64(sig);\n };\n}\n\nfunction createPSSKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify({\n key: publicKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, signature, 'base64');\n };\n}\n\nfunction createECDSASigner(bits) {\n var inner = createKeySigner(bits);\n return function sign() {\n var signature = inner.apply(null, arguments);\n signature = formatEcdsa.derToJose(signature, 'ES' + bits);\n return signature;\n };\n}\n\nfunction createECDSAVerifer(bits) {\n var inner = createKeyVerifier(bits);\n return function verify(thing, signature, publicKey) {\n signature = formatEcdsa.joseToDer(signature, 'ES' + bits).toString('base64');\n var result = inner(thing, signature, publicKey);\n return result;\n };\n}\n\nfunction createNoneSigner() {\n return function sign() {\n return '';\n };\n}\n\nfunction createNoneVerifier() {\n return function verify(thing, signature) {\n return signature === '';\n };\n}\n\nmodule.exports = function jwa(algorithm) {\n var signerFactories = {\n hs: createHmacSigner,\n rs: createKeySigner,\n ps: createPSSKeySigner,\n es: createECDSASigner,\n none: createNoneSigner\n };\n var verifierFactories = {\n hs: createHmacVerifier,\n rs: createKeyVerifier,\n ps: createPSSKeyVerifier,\n es: createECDSAVerifer,\n none: createNoneVerifier\n };\n var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/i);\n if (!match) throw typeError(MSG_INVALID_ALGORITHM, algorithm);\n var algo = (match[1] || match[3]).toLowerCase();\n var bits = match[2];\n return {\n sign: signerFactories[algo](bits),\n verify: verifierFactories[algo](bits)\n };\n};","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = bytes[0 + off] << 24 | bytes[1 + off] << 16 | bytes[2 + off] << 8 | 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\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\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\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; // 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\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\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inL >> j + i & 1;\n }\n }\n\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inR >> j + i & 1;\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\n\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\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= inL >> j + i & 1;\n }\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 = [// inL => outL\n14, 11, 17, 4, 27, 23, 25, 0, 13, 22, 7, 18, 5, 9, 16, 24, 2, 20, 12, 21, 1, 8, 15, 26, // inR => outR\n15, 4, 25, 19, 9, 1, 26, 16, 5, 11, 23, 8, 12, 7, 17, 0, 22, 3, 10, 14, 6, 20, 27, 24];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n var len = pc2table.length >>> 1;\n\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= inL >>> pc2table[i] & 0x1;\n }\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 outL = (r & 1) << 5 | r >>> 27;\n\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= r >>> i & 0x3f;\n }\n\n for (var i = 11; i >= 3; i -= 4) {\n outR |= r >>> i & 0x3f;\n outR <<= 6;\n }\n\n outR |= (r & 0x1f) << 1 | r >>> 31;\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7, 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13, 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14, 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9, 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10, 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1, 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7, 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12, 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3, 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8, 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14, 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1, 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3, 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5, 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8, 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13, 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6, 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7, 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12, 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2, 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n\n for (var i = 0; i < 4; i++) {\n var b = inL >>> 18 - i * 6 & 0x3f;\n var sb = sTable[i * 0x40 + b];\n out <<= 4;\n out |= sb;\n }\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 out <<= 4;\n out |= sb;\n }\n\n return out >>> 0;\n};\n\nvar permuteTable = [16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7];\n\nexports.permute = function permute(num) {\n var out = 0;\n\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= num >>> permuteTable[i] & 0x1;\n }\n\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n\n while (str.length < size) {\n str = '0' + str;\n }\n\n var out = [];\n\n for (var i = 0; i < size; i += group) {\n out.push(str.slice(i, i + group));\n }\n\n return out.join(' ');\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 utils = require('../utils');\n\nvar common = require('../common');\n\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;\nvar sha1_K = [0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xCA62C1D6];\n\nfunction SHA1() {\n if (!(this instanceof SHA1)) return new SHA1();\n BlockHash.call(this);\n this.h = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\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\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\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') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big');\n};","module.exports = function () {\n throw new Error('Readable.from is not available in the browser');\n};","module.exports = require('events').EventEmitter;","/*global module*/\nvar Buffer = require('buffer').Buffer;\n\nmodule.exports = function toString(obj) {\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number' || Buffer.isBuffer(obj)) return obj.toString();\n return JSON.stringify(obj);\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};","var Buffer = require('safe-buffer').Buffer;\n\nvar Transform = require('stream').Transform;\n\nvar StringDecoder = require('string_decoder').StringDecoder;\n\nvar inherits = require('inherits');\n\nfunction CipherBase(hashMode) {\n Transform.call(this);\n this.hashMode = typeof hashMode === 'string';\n\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest;\n } else {\n this.final = this._finalOrDigest;\n }\n\n if (this._final) {\n this.__final = this._final;\n this._final = null;\n }\n\n this._decoder = null;\n this._encoding = null;\n}\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\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 () {};\n\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\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};\n\nCipherBase.prototype._flush = function (done) {\n var err;\n\n try {\n this.push(this.__final());\n } catch (e) {\n err = e;\n }\n\n done(err);\n};\n\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0);\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true);\n }\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\n if (fin) {\n out += this._decoder.end();\n }\n\n return out;\n};\n\nmodule.exports = CipherBase;","(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\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; // Reduction context\n\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\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 var Buffer;\n\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && 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\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\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\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\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\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\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\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this.strip();\n };\n\n function parseHex(str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r <<= 4; // 'a' - 'f'\n\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa; // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa; // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start) {\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\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w; // Scan 24-bit chunks and add them to the number\n\n var off = 0;\n\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= w << off & 0x3ffffff; // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n\n this.words[j + 1] |= w >>> 26 - off & 0x3fffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] |= w >>> 26 - off & 0x3fffff;\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\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n r += c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa; // '0' - '9'\n } else {\n r += c;\n }\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; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\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\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\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\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\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\n return this;\n };\n\n BN.prototype.inspect = function inspect() {\n return (this.red ? '';\n };\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\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 = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\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\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 off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\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]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\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\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\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\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\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 this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n\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 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 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\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\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 var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\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 w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\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\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\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\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 }; // Or `num` with `this` in-place\n\n\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 }; // Or `num` with `this`\n\n\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 }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\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 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 }; // And `num` with `this`\n\n\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 }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\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 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 }; // Xor `num` with `this`\n\n\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 }; // Not ``this`` with ``width`` bitwidth\n\n\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this.strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\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 }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\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(); // 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 } // a.length > b.length\n\n\n var a, b;\n\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\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\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\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // 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 }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\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 return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\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(); // -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 } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\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\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\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 } // Copy rest of the words\n\n\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 }; // Subtract `num` from `this`\n\n\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; // Peel one iteration (compiler can't do it, because of code complexity)\n\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\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\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\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\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\n\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 out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\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 var carry = 0;\n var hncarry = 0;\n\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\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 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 hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\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\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 }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\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\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\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 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 var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n /* jshint maxdepth : false */\n\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\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\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 rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\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\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\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\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n } // Pad with zeroes\n\n\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\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 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 var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, 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 out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n }; // Multiply `this` by `num`\n\n\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 }; // Multiply employing FFT\n\n\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 }; // In-place Multiplication\n\n\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); // Carry\n\n var carry = 0;\n\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; // NOTE: lo is 27bit maximum\n\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 }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\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 res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\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 }; // 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\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\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 h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\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\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 } // Push carried bits as a mask\n\n\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 }; // Shift-left\n\n\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 }; // Shift-right\n\n\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 }; // Test if n bit is set\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\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 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\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 }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\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 } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\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 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\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\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(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\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\n this.negative = 1;\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\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\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\n if (diff.negative === 0) {\n a = diff;\n\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 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q.strip();\n }\n\n a.strip(); // Denormalize\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\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\n\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\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\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\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\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 }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\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 }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\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 var acc = 0;\n\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 }; // In-place division by number\n\n\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n\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 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 } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\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 ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\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 ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\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 }; // 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\n\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\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 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 ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\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 ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\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\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 var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\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\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\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 }; // Invert number in the field F(num)\n\n\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 }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\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\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\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 if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n\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 var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\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 var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Unsigned comparison\n\n\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 var res = 0;\n\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 if (a === b) continue;\n\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\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 // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\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\n this.red._verify2(this, num);\n\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\n this.red._verify2(this, num);\n\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\n this.red._verify1(this);\n\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\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\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\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\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 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\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(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\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\n prev >>>= 22;\n input.words[i - 10] = prev;\n\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; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\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 } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\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 num.words[i] = lo;\n carry = hi;\n }\n\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\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\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\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, '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\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\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\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\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\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\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\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\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 var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\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\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\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\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 var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\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\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\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\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 res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\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 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 // Montgomery method engine\n //\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 this.shift = this.m.bitLength();\n\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 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\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 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\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 * lodash 3.0.3 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified\n * as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n\n\nfunction isNumber(value) {\n return typeof value == 'number' || isObjectLike(value) && objectToString.call(value) == numberTag;\n}\n\nmodule.exports = isNumber;","// 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};","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer;\n\nvar BN = require('bn.js');\n\nvar EC = require('elliptic').ec;\n\nvar parseKeys = require('parse-asn1');\n\nvar curves = require('./curves.json');\n\nfunction verify(sig, hash, key, signType, tag) {\n var pub = parseKeys(key);\n\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\n hash = Buffer.concat([tag, hash]);\n var len = pub.modulus.byteLength();\n var pad = [1];\n var padNum = 0;\n\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff);\n padNum++;\n }\n\n pad.push(0x00);\n var i = -1;\n\n while (++i < hash.length) {\n pad.push(hash[i]);\n }\n\n pad = Buffer.from(pad);\n var red = BN.mont(pub.modulus);\n sig = new BN(sig).toRed(red);\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 i = -1;\n\n while (++i < len) {\n out |= sig[i] ^ pad[i];\n }\n\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 var curve = new EC(curveId);\n var pubkey = pub.data.subjectPrivateKey.data;\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).redPow(new BN(hash).mul(w).mod(q)).fromRed().mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed()).mod(p).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;","'use strict';\n\nvar inherits = require('inherits');\n\nvar HashBase = require('hash-base');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar ARRAY16 = new Array(16);\n\nfunction MD5() {\n HashBase.call(this, 64); // state\n\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\n for (var i = 0; i < 16; ++i) {\n M[i] = this._block.readInt32LE(i * 4);\n }\n\n var a = this._a;\n var b = this._b;\n var c = this._c;\n var d = this._d;\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 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 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 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 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\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64);\n\n this._update();\n\n this._blockOffset = 0;\n }\n\n this._block.fill(0, this._blockOffset, 56);\n\n this._block.writeUInt32LE(this._length[0], 56);\n\n this._block.writeUInt32LE(this._length[1], 60);\n\n this._update(); // produce result\n\n\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;","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\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; // if we have detected an error in the meanwhile\n // reject straight away\n\n\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; // 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\n\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\nvar utils = require('./utils');\n\nvar bind = require('./helpers/bind');\n\nvar Axios = require('./core/Axios');\n\nvar mergeConfig = require('./core/mergeConfig');\n\nvar defaults = require('./defaults');\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\n\n\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context); // Copy axios.prototype to instance\n\n utils.extend(instance, Axios.prototype, context); // Copy context to instance\n\n utils.extend(instance, context);\n return instance;\n} // Create the default instance to be exported\n\n\nvar axios = createInstance(defaults); // Expose Axios class to allow class inheritance\n\naxios.Axios = Axios; // Factory for creating new instances\n\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n}; // Expose Cancel & CancelToken\n\n\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel'); // Expose all/spread\n\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = require('./helpers/spread'); // Expose isAxiosError\n\naxios.isAxiosError = require('./helpers/isAxiosError');\nmodule.exports = axios; // Allow use of default import syntax in TypeScript\n\nmodule.exports.default = axios;","// 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.\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\n\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'); // Backwards-compat with node 0.4.x\n\nStream.Stream = Stream; // 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); // 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\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\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n dest.end();\n }\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n if (typeof dest.destroy === 'function') dest.destroy();\n } // don't leave dangling pipes when there are errors.\n\n\n function onerror(er) {\n cleanup();\n\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); // remove all the event listeners that were added.\n\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n dest.on('close', cleanup);\n dest.emit('pipe', source); // Allow for unix-like usage: A.pipe(B).pipe(C)\n\n return dest;\n};","/**\n * lodash 3.0.3 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n\nfunction isBoolean(value) {\n return value === true || value === false || isObjectLike(value) && objectToString.call(value) == boolTag;\n}\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\n\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isBoolean;","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\n\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 var state = new DESState();\n this._desState = state;\n this.deriveKeys(state, options.key);\n}\n\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n\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 var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4); // Initial Permutation\n\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n if (this.type === 'encrypt') this._encrypt(state, l, r, state.tmp, 0);else this._decrypt(state, l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\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\n for (var i = off; i < buffer.length; i++) {\n buffer[i] = value;\n }\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n\n for (var i = buffer.length - pad; i < buffer.length; i++) {\n assert.equal(buffer[i], pad);\n }\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; // Apply f() x16 times\n\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1]; // f(r, k)\n\n utils.expand(r, state.tmp, 0);\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n } // Reverse Initial Permutation\n\n\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; // Apply f() x16 times\n\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]; // f(r, k)\n\n utils.expand(l, state.tmp, 0);\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n } // Reverse Initial Permutation\n\n\n utils.rip(l, r, out, off);\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');\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(this.key('version').int(), this.key('modulus').int(), this.key('publicExponent').int(), this.key('privateExponent').int(), this.key('prime1').int(), this.key('prime2').int(), this.key('exponent1').int(), this.key('exponent2').int(), this.key('coefficient').int());\n});\nexports.RSAPrivateKey = RSAPrivateKey;\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(this.key('modulus').int(), this.key('publicExponent').int());\n});\nexports.RSAPublicKey = RSAPublicKey;\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPublicKey').bitstr());\n});\nexports.PublicKey = PublicKey;\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(this.key('algorithm').objid(), this.key('none').null_().optional(), this.key('curve').objid().optional(), this.key('params').seq().obj(this.key('p').int(), this.key('q').int(), this.key('g').int()).optional());\n});\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(this.key('version').int(), this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPrivateKey').octstr());\n});\nexports.PrivateKey = PrivateKeyInfo;\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(this.key('algorithm').seq().obj(this.key('id').objid(), this.key('decrypt').seq().obj(this.key('kde').seq().obj(this.key('id').objid(), this.key('kdeparams').seq().obj(this.key('salt').octstr(), this.key('iters').int())), this.key('cipher').seq().obj(this.key('algo').objid(), this.key('iv').octstr()))), this.key('subjectPrivateKey').octstr());\n});\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo;\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(this.key('version').int(), this.key('p').int(), this.key('q').int(), this.key('g').int(), this.key('pub_key').int(), this.key('priv_key').int());\n});\nexports.DSAPrivateKey = DSAPrivateKey;\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int();\n});\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(this.key('version').int(), this.key('privateKey').octstr(), this.key('parameters').optional().explicit(0).use(ECParameters), this.key('publicKey').optional().explicit(1).bitstr());\n});\nexports.ECPrivateKey = ECPrivateKey;\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n });\n});\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(this.key('r').int(), this.key('s').int());\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 */\nvar inherits = require('inherits');\n\nvar Hash = require('./hash');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0];\nvar W = new Array(80);\n\nfunction Sha1() {\n this.init();\n this._w = W;\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 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 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) {\n W[i] = M.readInt32BE(i * 4);\n }\n\n for (; i < 80; ++i) {\n W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]);\n }\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 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 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 return H;\n};\n\nmodule.exports = Sha1;","var JsonWebTokenError = require('./JsonWebTokenError');\n\nvar TokenExpiredError = function TokenExpiredError(message, expiredAt) {\n JsonWebTokenError.call(this, message);\n this.name = 'TokenExpiredError';\n this.expiredAt = expiredAt;\n};\n\nTokenExpiredError.prototype = Object.create(JsonWebTokenError.prototype);\nTokenExpiredError.prototype.constructor = TokenExpiredError;\nmodule.exports = TokenExpiredError;","'use strict';\n\nvar inherits = require('inherits');\n\nvar Legacy = require('./legacy');\n\nvar Base = require('cipher-base');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar md5 = require('create-hash/md5');\n\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\n if (typeof key === 'string') {\n key = Buffer.from(key);\n }\n\n var blocksize = alg === 'sha512' || alg === 'sha384' ? 128 : 64;\n this._alg = alg;\n this._key = key;\n\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\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg);\n\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\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\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key);\n }\n\n if (alg === 'md5') {\n return new Legacy(md5, key);\n }\n\n return new Hmac(alg, key);\n};","(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\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; // Reduction context\n\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\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 var Buffer;\n\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && 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\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\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\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\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\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\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\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this.strip();\n };\n\n function parseHex(str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r <<= 4; // 'a' - 'f'\n\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa; // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa; // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start) {\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\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w; // Scan 24-bit chunks and add them to the number\n\n var off = 0;\n\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= w << off & 0x3ffffff; // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n\n this.words[j + 1] |= w >>> 26 - off & 0x3fffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] |= w >>> 26 - off & 0x3fffff;\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\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n r += c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa; // '0' - '9'\n } else {\n r += c;\n }\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; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\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\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\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\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\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\n return this;\n };\n\n BN.prototype.inspect = function inspect() {\n return (this.red ? '';\n };\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\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 = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\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\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 off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\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]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\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\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\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\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\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 this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n\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 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 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\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\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 var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\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 w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\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\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\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\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 }; // Or `num` with `this` in-place\n\n\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 }; // Or `num` with `this`\n\n\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 }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\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 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 }; // And `num` with `this`\n\n\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 }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\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 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 }; // Xor `num` with `this`\n\n\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 }; // Not ``this`` with ``width`` bitwidth\n\n\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this.strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\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 }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\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(); // 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 } // a.length > b.length\n\n\n var a, b;\n\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\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\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\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // 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 }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\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 return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\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(); // -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 } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\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\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\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 } // Copy rest of the words\n\n\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 }; // Subtract `num` from `this`\n\n\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; // Peel one iteration (compiler can't do it, because of code complexity)\n\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\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\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\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\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\n\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 out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\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 var carry = 0;\n var hncarry = 0;\n\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\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 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 hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\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\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 }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\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\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\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 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 var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n /* jshint maxdepth : false */\n\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\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\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 rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\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\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\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\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n } // Pad with zeroes\n\n\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\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 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 var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, 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 out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n }; // Multiply `this` by `num`\n\n\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 }; // Multiply employing FFT\n\n\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 }; // In-place Multiplication\n\n\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); // Carry\n\n var carry = 0;\n\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; // NOTE: lo is 27bit maximum\n\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 }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\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 res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\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 }; // 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\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\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 h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\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\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 } // Push carried bits as a mask\n\n\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 }; // Shift-left\n\n\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 }; // Shift-right\n\n\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 }; // Test if n bit is set\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\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 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\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 }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\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 } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\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 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\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\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(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\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\n this.negative = 1;\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\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\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\n if (diff.negative === 0) {\n a = diff;\n\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 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q.strip();\n }\n\n a.strip(); // Denormalize\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\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\n\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\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\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\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\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 }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\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 }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\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 var acc = 0;\n\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 }; // In-place division by number\n\n\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n\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 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 } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\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 ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\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 ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\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 }; // 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\n\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\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 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 ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\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 ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\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\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 var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\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\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\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 }; // Invert number in the field F(num)\n\n\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 }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\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\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\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 if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n\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 var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\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 var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Unsigned comparison\n\n\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 var res = 0;\n\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 if (a === b) continue;\n\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\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 // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\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\n this.red._verify2(this, num);\n\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\n this.red._verify2(this, num);\n\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\n this.red._verify1(this);\n\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\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\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\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\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 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\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(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\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\n prev >>>= 22;\n input.words[i - 10] = prev;\n\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; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\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 } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\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 num.words[i] = lo;\n carry = hi;\n }\n\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\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\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\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, '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\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\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\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\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\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\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\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\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 var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\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\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\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\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 var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\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\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\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\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 res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\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 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 // Montgomery method engine\n //\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 this.shift = this.m.bitLength();\n\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 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\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 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\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);","'use strict';\n\nfunction getParamSize(keySize) {\n var result = (keySize / 8 | 0) + (keySize % 8 === 0 ? 0 : 1);\n return result;\n}\n\nvar paramBytesForAlg = {\n ES256: getParamSize(256),\n ES384: getParamSize(384),\n ES512: getParamSize(521)\n};\n\nfunction getParamBytesForAlg(alg) {\n var paramBytes = paramBytesForAlg[alg];\n\n if (paramBytes) {\n return paramBytes;\n }\n\n throw new Error('Unknown algorithm \"' + alg + '\"');\n}\n\nmodule.exports = getParamBytesForAlg;","// 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 Duplex = require('./_stream_duplex');\n/**/\n\n\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.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) {\n return this.emit('error', new Error('write callback called multiple times'));\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') {\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 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\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.writecb && !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 var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n\n _this2.emit('close');\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); // 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 Error('Calling transform done when ws.length != 0');\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n return stream.push(null);\n}","'use strict';\n\nvar utils = require('./../utils');\n\nvar settle = require('./../core/settle');\n\nvar cookies = require('./../helpers/cookies');\n\nvar buildURL = require('./../helpers/buildURL');\n\nvar buildFullPath = require('../core/buildFullPath');\n\nvar parseHeaders = require('./../helpers/parseHeaders');\n\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\n\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest(); // HTTP basic authentication\n\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); // Set the request timeout in MS\n\n request.timeout = config.timeout; // Listen for ready state\n\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n } // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n\n\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n } // Prepare the response\n\n\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n settle(resolve, reject, response); // Clean up request\n\n request = null;\n }; // Handle browser request cancellation (as opposed to a manual cancellation)\n\n\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request)); // Clean up request\n\n request = null;\n }; // Handle low level network errors\n\n\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request)); // Clean up request\n\n request = null;\n }; // Handle timeout\n\n\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED', request)); // Clean up request\n\n request = null;\n }; // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? cookies.read(config.xsrfCookieName) : undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n } // Add headers to the request\n\n\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n } // Add withCredentials to request if needed\n\n\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n } // Add responseType to request if needed\n\n\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n } // Handle progress if needed\n\n\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n } // Not all browsers support upload events\n\n\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel); // Clean up request\n\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n } // Send the request\n\n\n request.send(requestData);\n });\n};","'use strict';\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\n\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};","'use strict';\n\nvar utils = require('./../utils');\n\nvar transformData = require('./transformData');\n\nvar isCancel = require('../cancel/isCancel');\n\nvar defaults = require('../defaults');\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\n\n\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\n\n\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config); // Ensure headers exist\n\n config.headers = config.headers || {}; // Transform request data\n\n config.data = transformData(config.data, config.headers, config.transformRequest); // Flatten headers\n\n config.headers = utils.merge(config.headers.common || {}, config.headers[config.method] || {}, config.headers);\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function cleanHeaderConfig(method) {\n delete config.headers[method];\n });\n var adapter = config.adapter || defaults.adapter;\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config); // Transform response data\n\n response.data = transformData(response.data, response.headers, config.transformResponse);\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config); // Transform response data\n\n if (reason && reason.response) {\n reason.response.data = transformData(reason.response.data, reason.response.headers, config.transformResponse);\n }\n }\n\n return Promise.reject(reason);\n });\n};","'use strict';\n\nvar inherits = require('inherits');\n\nvar bignum = require('bn.js');\n\nvar DecoderBuffer = require('../base/buffer').DecoderBuffer;\n\nvar Node = require('../base/node'); // Import DER constants\n\n\nvar der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity; // Construct base tree\n\n this.tree = new DERNode();\n\n this.tree._init(entity.body);\n}\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}; // Tree methods\n\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\n\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty()) return false;\n var state = buffer.save();\n var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag)) return decodedTag;\n buffer.restore(state);\n return decodedTag.tag === tag || decodedTag.tagStr === tag || decodedTag.tagStr + 'of' === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n var decodedTag = derDecodeTag(buffer, 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag)) return decodedTag;\n var len = derDecodeLen(buffer, decodedTag.primitive, 'Failed to get length of \"' + tag + '\"'); // Failure\n\n if (buffer.isError(len)) return len;\n\n if (!any && decodedTag.tag !== tag && decodedTag.tagStr !== tag && decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null) return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"'); // Indefinite length... find END tag\n\n var state = buffer.save();\n\n var res = this._skipUntilEnd(buffer, 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n\n if (buffer.isError(res)) return res;\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 var tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag)) return tag;\n var len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len)) return len;\n var res = void 0;\n if (tag.primitive || len !== null) res = buffer.skip(len);else res = this._skipUntilEnd(buffer, fail); // Failure\n\n if (buffer.isError(res)) return res;\n if (tag.tagStr === 'end') break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder, options) {\n var result = [];\n\n while (!buffer.isEmpty()) {\n var possibleEnd = this._peekTag(buffer, 'end');\n\n if (buffer.isError(possibleEnd)) return possibleEnd;\n var res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd) break;\n result.push(res);\n }\n\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n var unused = buffer.readUInt8();\n if (buffer.isError(unused)) return unused;\n return {\n unused: unused,\n data: buffer.raw()\n };\n } else if (tag === 'bmpstr') {\n var raw = buffer.raw();\n if (raw.length % 2 === 1) return buffer.error('Decoding of string type: bmpstr length mismatch');\n var str = '';\n\n for (var i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n\n return str;\n } else if (tag === 'numstr') {\n var numstr = buffer.raw().toString('ascii');\n\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' + 'numstr unsupported characters');\n }\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 var printstr = buffer.raw().toString('ascii');\n\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' + 'printstr unsupported characters');\n }\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 var result;\n var identifiers = [];\n var ident = 0;\n var subident = 0;\n\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n\n if (subident & 0x80) identifiers.push(ident);\n var first = identifiers[0] / 40 | 0;\n var second = identifiers[0] % 40;\n if (relative) result = identifiers;else result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n var tmp = values[result.join(' ')];\n if (tmp === undefined) tmp = values[result.join('.')];\n if (tmp !== undefined) result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n var str = buffer.raw().toString();\n var year;\n var mon;\n var day;\n var hour;\n var min;\n var sec;\n\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) year = 2000 + year;else 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 var res = buffer.readUInt8();\n if (buffer.isError(res)) return res;else return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n var raw = buffer.raw();\n var res = new bignum(raw);\n if (values) res = values[res.toString(10)] || res;\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function') entity = entity(obj);\n return entity._getDecoder('der').tree;\n}; // Utility methods\n\n\nfunction derDecodeTag(buf, fail) {\n var tag = buf.readUInt8(fail);\n if (buf.isError(tag)) return tag;\n var cls = der.tagClass[tag >> 6];\n var primitive = (tag & 0x20) === 0; // Multi-octet tag - load\n\n if ((tag & 0x1f) === 0x1f) {\n var oct = tag;\n tag = 0;\n\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct)) return oct;\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n\n var tagStr = der.tag[tag];\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n var len = buf.readUInt8(fail);\n if (buf.isError(len)) return len; // Indefinite form\n\n if (!primitive && len === 0x80) return null; // Definite form\n\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n } // Long form\n\n\n var num = len & 0x7f;\n if (num > 4) return buf.error('length octect is too long');\n len = 0;\n\n for (var i = 0; i < num; i++) {\n len <<= 8;\n var j = buf.readUInt8(fail);\n if (buf.isError(j)) return j;\n len |= j;\n }\n\n return len;\n}","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\n\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\n\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n if (typeof sig !== 'object') 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 if (eddsa.isPoint(sig.R)) this._R = sig.R;\n if (sig.S instanceof BN) this._S = sig.S;\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});\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\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;","'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');\n\nvar algoKeys = Object.keys(algos);\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys);\n\nexports.getHashes = function () {\n return hashes;\n};\n\nvar p = require('pbkdf2');\n\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;\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; // 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(['sorry, createCredentials is not implemented yet', 'we accept pull requests', 'https://github.com/crypto-browserify/crypto-browserify'].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};","var xor = require('buffer-xor');\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev);\n self._prev = self._cipher.encryptBlock(data);\n return self._prev;\n};\n\nexports.decrypt = function (self, block) {\n var pad = self._prev;\n self._prev = block;\n\n var out = self._cipher.decryptBlock(block);\n\n return xor(out, pad);\n};","'use strict';\n\nvar inherits = require('inherits');\n\nvar MD5 = require('md5.js');\n\nvar RIPEMD160 = require('ripemd160');\n\nvar sha = require('sha.js');\n\nvar Base = require('cipher-base');\n\nfunction Hash(hash) {\n Base.call(this, 'digest');\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 return new Hash(sha(alg));\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');","'use strict';\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\n\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '') : baseURL;\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nrequire(\"core-js/modules/es.array.reduce.js\");\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;","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\n\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n\n return result;\n}\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n\n\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n}\n/** Used for built-in method references. */\n\n\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n/** Used to resolve the decompiled source of functions. */\n\nvar funcToString = funcProto.toString;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/** Used to infer the `Object` constructor. */\n\nvar objectCtorString = funcToString.call(Object);\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/** Built-in value references. */\n\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n\n\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || objectToString.call(value) != objectTag || isHostObject(value)) {\n return false;\n }\n\n var proto = getPrototype(value);\n\n if (proto === null) {\n return true;\n }\n\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;","'use strict';\n\nvar utils = exports;\n\nvar BN = require('bn.js');\n\nvar minAssert = require('minimalistic-assert');\n\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; // Represent num in a w-NAF form\n\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\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\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1) z = (ws >> 1) - mod;else 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}\n\nutils.getNAF = getNAF; // Represent k1, k2 in a Joint Sparse Form\n\nfunction getJSF(k1, k2) {\n var jsf = [[], []];\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n\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) m14 = -1;\n if (m24 === 3) m24 = -1;\n var u1;\n\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n var m8 = k1.andln(7) + d1 & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2) u1 = -m14;else u1 = m14;\n }\n\n jsf[0].push(u1);\n var u2;\n\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n var m8 = k2.andln(7) + d2 & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2) u2 = -m24;else u2 = m24;\n }\n\n jsf[1].push(u2); // Second phase\n\n if (2 * d1 === u1 + 1) d1 = 1 - d1;\n if (2 * d2 === u2 + 1) d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\n\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] : this[key] = computer.call(this);\n };\n}\n\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') : bytes;\n}\n\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\n\nutils.intFromLE = intFromLE;","'use strict';\n\nvar BN = require('bn.js');\n\nvar inherits = require('inherits');\n\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\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}\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 return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n\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) this.x = this.x.toRed(this.curve.red);\n if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n }\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() {// 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()) return '';\n return '';\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 // A = X1 + Z1\n var a = this.x.redAdd(this.z); // AA = A^2\n\n var aa = a.redSqr(); // B = X1 - Z1\n\n var b = this.x.redSub(this.z); // BB = B^2\n\n var bb = b.redSqr(); // C = AA - BB\n\n var c = aa.redSub(bb); // X3 = AA * BB\n\n var nx = aa.redMul(bb); // Z3 = C * (BB + A24 * C)\n\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 // A = X2 + Z2\n var a = this.x.redAdd(this.z); // B = X2 - Z2\n\n var b = this.x.redSub(this.z); // C = X3 + Z3\n\n var c = p.x.redAdd(p.z); // D = X3 - Z3\n\n var d = p.x.redSub(p.z); // DA = D * A\n\n var da = d.redMul(a); // CB = C * B\n\n var cb = c.redMul(b); // X5 = Z1 * (DA + CB)^2\n\n var nx = diff.z.redMul(da.redAdd(cb).redSqr()); // Z5 = X1 * (DA - CB)^2\n\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\n var b = this.curve.point(null, null); // (N / 2) * Q\n\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\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 * Q = 2 * ((N / 2) * Q + Q))\n\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c); // N * Q + Q = 2 * ((N / 2) * Q + Q)\n\n a = a.dbl();\n }\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 return this.x.fromRed();\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nrequire(\"core-js/modules/es.array.reduce.js\");\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;","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object' && typeof arg.copy === 'function' && typeof arg.fill === 'function' && typeof arg.readUInt8 === 'function';\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;","var parseKeys = require('parse-asn1');\n\nvar randomBytes = require('randombytes');\n\nvar createHash = require('create-hash');\n\nvar mgf = require('./mgf');\n\nvar xor = require('./xor');\n\nvar BN = require('bn.js');\n\nvar withPublic = require('./withPublic');\n\nvar crt = require('browserify-rsa');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nmodule.exports = function publicEncrypt(publicKey, msg, reverse) {\n var padding;\n\n if (publicKey.padding) {\n padding = publicKey.padding;\n } else if (reverse) {\n padding = 1;\n } else {\n padding = 4;\n }\n\n var key = parseKeys(publicKey);\n var paddedMsg;\n\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\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\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\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long');\n }\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}\n\nfunction pkcs1(key, msg, reverse) {\n var mLen = msg.length;\n var k = key.modulus.byteLength();\n\n if (mLen > k - 11) {\n throw new Error('message too long');\n }\n\n var ps;\n\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff);\n } else {\n ps = nonZero(k - mLen - 3);\n }\n\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k));\n}\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\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2);\n cur = 0;\n }\n\n num = cache[cur++];\n\n if (num) {\n out[i++] = num;\n }\n }\n\n return out;\n}","'use strict';\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\n\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\nmodule.exports = Cancel;","/*global exports*/\nvar SignStream = require('./lib/sign-stream');\n\nvar VerifyStream = require('./lib/verify-stream');\n\nvar ALGORITHMS = ['HS256', 'HS384', 'HS512', 'RS256', 'RS384', 'RS512', 'PS256', 'PS384', 'PS512', 'ES256', 'ES384', 'ES512'];\nexports.ALGORITHMS = ALGORITHMS;\nexports.sign = SignStream.sign;\nexports.verify = VerifyStream.verify;\nexports.decode = VerifyStream.decode;\nexports.isValid = VerifyStream.isValid;\n\nexports.createSign = function createSign(opts) {\n return new SignStream(opts);\n};\n\nexports.createVerify = function createVerify(opts) {\n return new VerifyStream(opts);\n};","'use strict';\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar Buffer = require('safe-buffer').Buffer;\n\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 = {\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 BufferList.prototype.unshift = 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 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\n while (p = p.next) {\n ret += s + p.data;\n }\n\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\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\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({\n length: this.length\n });\n return this.constructor.name + ' ' + obj;\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');","(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\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; // Reduction context\n\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\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 var Buffer;\n\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && 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\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\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\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\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\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\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\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this.strip();\n };\n\n function parseHex(str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r <<= 4; // 'a' - 'f'\n\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa; // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa; // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start) {\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\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w; // Scan 24-bit chunks and add them to the number\n\n var off = 0;\n\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= w << off & 0x3ffffff; // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n\n this.words[j + 1] |= w >>> 26 - off & 0x3fffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] |= w >>> 26 - off & 0x3fffff;\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\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n r += c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa; // '0' - '9'\n } else {\n r += c;\n }\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; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\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\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\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\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\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\n return this;\n };\n\n BN.prototype.inspect = function inspect() {\n return (this.red ? '';\n };\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\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 = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\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\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 off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\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]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\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\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\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\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\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 this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n\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 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 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\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\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 var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\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 w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\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\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\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\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 }; // Or `num` with `this` in-place\n\n\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 }; // Or `num` with `this`\n\n\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 }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\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 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 }; // And `num` with `this`\n\n\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 }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\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 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 }; // Xor `num` with `this`\n\n\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 }; // Not ``this`` with ``width`` bitwidth\n\n\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this.strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\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 }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\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(); // 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 } // a.length > b.length\n\n\n var a, b;\n\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\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\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\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // 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 }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\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 return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\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(); // -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 } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\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\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\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 } // Copy rest of the words\n\n\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 }; // Subtract `num` from `this`\n\n\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; // Peel one iteration (compiler can't do it, because of code complexity)\n\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\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\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\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\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\n\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 out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\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 var carry = 0;\n var hncarry = 0;\n\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\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 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 hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\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\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 }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\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\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\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 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 var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n /* jshint maxdepth : false */\n\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\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\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 rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\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\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\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\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n } // Pad with zeroes\n\n\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\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 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 var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, 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 out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n }; // Multiply `this` by `num`\n\n\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 }; // Multiply employing FFT\n\n\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 }; // In-place Multiplication\n\n\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); // Carry\n\n var carry = 0;\n\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; // NOTE: lo is 27bit maximum\n\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 }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\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 res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\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 }; // 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\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\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 h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\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\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 } // Push carried bits as a mask\n\n\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 }; // Shift-left\n\n\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 }; // Shift-right\n\n\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 }; // Test if n bit is set\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\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 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\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 }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\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 } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\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 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\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\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(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\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\n this.negative = 1;\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\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\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\n if (diff.negative === 0) {\n a = diff;\n\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 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q.strip();\n }\n\n a.strip(); // Denormalize\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\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\n\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\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\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\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\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 }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\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 }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\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 var acc = 0;\n\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 }; // In-place division by number\n\n\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n\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 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 } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\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 ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\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 ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\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 }; // 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\n\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\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 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 ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\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 ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\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\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 var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\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\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\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 }; // Invert number in the field F(num)\n\n\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 }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\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\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\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 if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n\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 var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\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 var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Unsigned comparison\n\n\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 var res = 0;\n\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 if (a === b) continue;\n\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\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 // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\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\n this.red._verify2(this, num);\n\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\n this.red._verify2(this, num);\n\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\n this.red._verify1(this);\n\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\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\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\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\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 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\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(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\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\n prev >>>= 22;\n input.words[i - 10] = prev;\n\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; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\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 } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\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 num.words[i] = lo;\n carry = hi;\n }\n\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\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\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\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, '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\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\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\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\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\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\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\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\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 var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\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\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\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\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 var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\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\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\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\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 res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\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 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 // Montgomery method engine\n //\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 this.shift = this.m.bitLength();\n\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 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\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 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\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);","(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\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; // Reduction context\n\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\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 var Buffer;\n\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && 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\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\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\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\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\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\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\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this.strip();\n };\n\n function parseHex(str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r <<= 4; // 'a' - 'f'\n\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa; // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa; // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start) {\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\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w; // Scan 24-bit chunks and add them to the number\n\n var off = 0;\n\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= w << off & 0x3ffffff; // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n\n this.words[j + 1] |= w >>> 26 - off & 0x3fffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] |= w >>> 26 - off & 0x3fffff;\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\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n r += c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa; // '0' - '9'\n } else {\n r += c;\n }\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; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\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\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\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\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\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\n return this;\n };\n\n BN.prototype.inspect = function inspect() {\n return (this.red ? '';\n };\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\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 = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\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\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 off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\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]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\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\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\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\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\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 this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n\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 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 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\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\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 var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\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 w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\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\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\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\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 }; // Or `num` with `this` in-place\n\n\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 }; // Or `num` with `this`\n\n\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 }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\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 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 }; // And `num` with `this`\n\n\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 }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\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 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 }; // Xor `num` with `this`\n\n\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 }; // Not ``this`` with ``width`` bitwidth\n\n\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this.strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\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 }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\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(); // 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 } // a.length > b.length\n\n\n var a, b;\n\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\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\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\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // 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 }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\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 return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\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(); // -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 } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\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\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\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 } // Copy rest of the words\n\n\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 }; // Subtract `num` from `this`\n\n\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; // Peel one iteration (compiler can't do it, because of code complexity)\n\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\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\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\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\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\n\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 out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\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 var carry = 0;\n var hncarry = 0;\n\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\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 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 hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\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\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 }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\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\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\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 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 var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n /* jshint maxdepth : false */\n\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\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\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 rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\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\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\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\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n } // Pad with zeroes\n\n\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\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 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 var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, 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 out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n }; // Multiply `this` by `num`\n\n\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 }; // Multiply employing FFT\n\n\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 }; // In-place Multiplication\n\n\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); // Carry\n\n var carry = 0;\n\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; // NOTE: lo is 27bit maximum\n\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 }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\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 res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\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 }; // 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\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\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 h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\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\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 } // Push carried bits as a mask\n\n\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 }; // Shift-left\n\n\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 }; // Shift-right\n\n\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 }; // Test if n bit is set\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\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 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\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 }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\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 } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\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 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\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\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(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\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\n this.negative = 1;\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\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\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\n if (diff.negative === 0) {\n a = diff;\n\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 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q.strip();\n }\n\n a.strip(); // Denormalize\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\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\n\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\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\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\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\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 }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\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 }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\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 var acc = 0;\n\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 }; // In-place division by number\n\n\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n\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 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 } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\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 ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\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 ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\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 }; // 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\n\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\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 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 ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\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 ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\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\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 var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\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\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\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 }; // Invert number in the field F(num)\n\n\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 }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\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\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\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 if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n\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 var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\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 var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Unsigned comparison\n\n\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 var res = 0;\n\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 if (a === b) continue;\n\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\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 // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\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\n this.red._verify2(this, num);\n\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\n this.red._verify2(this, num);\n\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\n this.red._verify1(this);\n\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\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\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\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\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 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\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(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\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\n prev >>>= 22;\n input.words[i - 10] = prev;\n\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; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\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 } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\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 num.words[i] = lo;\n carry = hi;\n }\n\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\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\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\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, '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\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\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\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\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\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\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\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\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 var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\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\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\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\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 var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\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\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\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\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 res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\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 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 // Montgomery method engine\n //\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 this.shift = this.m.bitLength();\n\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 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\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 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\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 * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n/* eslint-disable no-proto */\n'use strict';\n\nvar base64 = require('base64-js');\n\nvar ieee754 = require('ieee754');\n\nvar isArray = require('isarray');\n\nexports.Buffer = Buffer;\nexports.SlowBuffer = SlowBuffer;\nexports.INSPECT_MAX_BYTES = 50;\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\n\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport();\n/*\n * Export kMaxLength after typed array support is determined.\n */\n\nexports.kMaxLength = kMaxLength();\n\nfunction typedArraySupport() {\n try {\n var arr = new Uint8Array(1);\n arr.__proto__ = {\n __proto__: Uint8Array.prototype,\n foo: function foo() {\n return 42;\n }\n };\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0; // ie10 has broken `subarray`\n } catch (e) {\n return false;\n }\n}\n\nfunction kMaxLength() {\n return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff;\n}\n\nfunction createBuffer(that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length');\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n\n that.length = length;\n }\n\n return that;\n}\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\n\nfunction Buffer(arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length);\n } // Common case.\n\n\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error('If encoding is specified then the first argument must be a string');\n }\n\n return allocUnsafe(this, arg);\n }\n\n return from(this, arg, encodingOrOffset, length);\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n// TODO: Legacy, not needed anymore. Remove in next major version.\n\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr;\n};\n\nfunction from(that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number');\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length);\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset);\n }\n\n return fromObject(that, value);\n}\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\n\n\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length);\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n\n if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n });\n }\n}\n\nfunction assertSize(size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number');\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative');\n }\n}\n\nfunction alloc(that, size, fill, encoding) {\n assertSize(size);\n\n if (size <= 0) {\n return createBuffer(that, size);\n }\n\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill);\n }\n\n return createBuffer(that, size);\n}\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\n\n\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding);\n};\n\nfunction allocUnsafe(that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n\n return that;\n}\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\n\n\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size);\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\n\n\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size);\n};\n\nfunction fromString(that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding');\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that;\n}\n\nfunction fromArrayLike(that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n\n return that;\n}\n\nfunction fromArrayBuffer(that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds');\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds');\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n\n return that;\n}\n\nfunction fromObject(that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that;\n }\n\n obj.copy(that, 0, 0, len);\n return that;\n }\n\n if (obj) {\n if (typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0);\n }\n\n return fromArrayLike(that, obj);\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data);\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.');\n}\n\nfunction checked(length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes');\n }\n\n return length | 0;\n}\n\nfunction SlowBuffer(length) {\n if (+length != length) {\n // eslint-disable-line eqeqeq\n length = 0;\n }\n\n return Buffer.alloc(+length);\n}\n\nBuffer.isBuffer = function isBuffer(b) {\n return !!(b != null && b._isBuffer);\n};\n\nBuffer.compare = function compare(a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers');\n }\n\n if (a === b) return 0;\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n};\n\nBuffer.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true;\n\n default:\n return false;\n }\n};\n\nBuffer.concat = function concat(list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0);\n }\n\n var i;\n\n if (length === undefined) {\n length = 0;\n\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n\n return buffer;\n};\n\nfunction byteLength(string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length;\n }\n\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength;\n }\n\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0; // Use a for loop to avoid recursion\n\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len;\n\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length;\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2;\n\n case 'hex':\n return len >>> 1;\n\n case 'base64':\n return base64ToBytes(string).length;\n\n default:\n if (loweredCase) return utf8ToBytes(string).length; // assume utf8\n\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\n\nBuffer.byteLength = byteLength;\n\nfunction slowToString(encoding, start, end) {\n var loweredCase = false; // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\n if (start === undefined || start < 0) {\n start = 0;\n } // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n\n\n if (start > this.length) {\n return '';\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return '';\n } // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n\n\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return '';\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end);\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end);\n\n case 'ascii':\n return asciiSlice(this, start, end);\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end);\n\n case 'base64':\n return base64Slice(this, start, end);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n} // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\n\n\nBuffer.prototype._isBuffer = true;\n\nfunction swap(b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16() {\n var len = this.length;\n\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits');\n }\n\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n\n return this;\n};\n\nBuffer.prototype.swap32 = function swap32() {\n var len = this.length;\n\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits');\n }\n\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n\n return this;\n};\n\nBuffer.prototype.swap64 = function swap64() {\n var len = this.length;\n\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits');\n }\n\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n\n return this;\n};\n\nBuffer.prototype.toString = function toString() {\n var length = this.length | 0;\n if (length === 0) return '';\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n};\n\nBuffer.prototype.equals = function equals(b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');\n if (this === b) return true;\n return Buffer.compare(this, b) === 0;\n};\n\nBuffer.prototype.inspect = function inspect() {\n var str = '';\n var max = exports.INSPECT_MAX_BYTES;\n\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n\n return '';\n};\n\nBuffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer');\n }\n\n if (start === undefined) {\n start = 0;\n }\n\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n\n if (thisStart === undefined) {\n thisStart = 0;\n }\n\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index');\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n\n if (thisStart >= thisEnd) {\n return -1;\n }\n\n if (start >= end) {\n return 1;\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n}; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\n\n\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1; // Normalize byteOffset\n\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n\n byteOffset = +byteOffset; // Coerce to Number.\n\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : buffer.length - 1;\n } // Normalize byteOffset: negative offsets start from the end of the buffer\n\n\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\n if (byteOffset >= buffer.length) {\n if (dir) return -1;else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;else return -1;\n } // Normalize val\n\n\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n } // Finally, search either indexOf (if dir is true) or lastIndexOf\n\n\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1;\n }\n\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n\n if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n }\n }\n\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n\n throw new TypeError('val must be string, number or Buffer');\n}\n\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n\n if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read(buf, i) {\n if (indexSize === 1) {\n return buf[i];\n } else {\n return buf.readUInt16BE(i * indexSize);\n }\n }\n\n var i;\n\n if (dir) {\n var foundIndex = -1;\n\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n\n if (found) return i;\n }\n }\n\n return -1;\n}\n\nBuffer.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n};\n\nBuffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n};\n\nfunction hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n\n if (length > remaining) {\n length = remaining;\n }\n } // must be an even number of digits\n\n\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string');\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n\n return i;\n}\n\nfunction utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nfunction asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\n\nfunction latin1Write(buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length);\n}\n\nfunction base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\n\nfunction ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nBuffer.prototype.write = function write(string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0; // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0; // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n } // legacy write(string, encoding, offset, length) - remove in v0.13\n\n } else {\n throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds');\n }\n\n if (!encoding) encoding = 'utf8';\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length);\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length);\n\n case 'ascii':\n return asciiWrite(this, string, offset, length);\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length);\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON() {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n};\n\nfunction base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf);\n } else {\n return base64.fromByteArray(buf.slice(start, end));\n }\n}\n\nfunction utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n var i = start;\n\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n\n break;\n\n case 2:\n secondByte = buf[i + 1];\n\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;\n\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;\n\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;\n\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res);\n} // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\n\n\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray(codePoints) {\n var len = codePoints.length;\n\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n } // Decode in chunks to avoid \"call stack size exceeded\".\n\n\n var res = '';\n var i = 0;\n\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n\n return res;\n}\n\nfunction asciiSlice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n\n return ret;\n}\n\nfunction latin1Slice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n\n return ret;\n}\n\nfunction hexSlice(buf, start, end) {\n var len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n var out = '';\n\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n\n return out;\n}\n\nfunction utf16leSlice(buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n\n return res;\n}\n\nBuffer.prototype.slice = function slice(start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n var newBuf;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf;\n};\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\n\n\nfunction checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n};\n\nBuffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return this[offset];\n return (0xff - this[offset] + 1) * -1;\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | this[offset + 1] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | this[offset] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, true, 23, 4);\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, false, 23, 4);\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, true, 52, 8);\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, false, 52, 8);\n};\n\nfunction checkInt(buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance');\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds');\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nfunction objectWriteUInt16(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & 0xff << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nfunction objectWriteUInt32(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nfunction checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n if (offset < 0) throw new RangeError('Index out of range');\n}\n\nfunction writeFloat(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n};\n\nfunction writeDouble(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n}; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\n\nBuffer.prototype.copy = function copy(target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done\n\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions\n\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds');\n }\n\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds');\n if (end < 0) throw new RangeError('sourceEnd out of bounds'); // Are we oob?\n\n if (end > this.length) end = this.length;\n\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart);\n }\n\n return len;\n}; // Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\n\n\nBuffer.prototype.fill = function fill(val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n\n if (code < 256) {\n val = code;\n }\n }\n\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string');\n }\n\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding);\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n } // Invalid ranges are not set to a default, so can range check early.\n\n\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index');\n }\n\n if (end <= start) {\n return this;\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n if (!val) val = 0;\n var i;\n\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this;\n}; // HELPER FUNCTIONS\n// ================\n\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean(str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, ''); // Node converts strings with length < 2 to ''\n\n if (str.length < 2) return ''; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n\n return str;\n}\n\nfunction stringtrim(str) {\n if (str.trim) return str.trim();\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n\nfunction toHex(n) {\n if (n < 16) return '0' + n.toString(16);\n return n.toString(16);\n}\n\nfunction utf8ToBytes(string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i); // is surrogate component\n\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } // valid lead\n\n\n leadSurrogate = codePoint;\n continue;\n } // 2 leads in a row\n\n\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue;\n } // valid surrogate pair\n\n\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null; // encode utf8\n\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break;\n bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break;\n bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break;\n bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else {\n throw new Error('Invalid code point');\n }\n }\n\n return bytes;\n}\n\nfunction asciiToBytes(str) {\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n\n return byteArray;\n}\n\nfunction utf16leToBytes(str, units) {\n var c, hi, lo;\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray;\n}\n\nfunction base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n}\n\nfunction blitBuffer(src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n\n return i;\n}\n\nfunction isnan(val) {\n return val !== val; // eslint-disable-line no-self-compare\n}","'use strict';\n\nvar inherits = require('inherits');\n\nvar Buffer = require('safer-buffer').Buffer;\n\nvar DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\n\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n var lines = data.toString().split(/[\\r\\n]+/g);\n var label = options.label.toUpperCase();\n var re = /^-----(BEGIN|END) ([^-]+)-----$/;\n var start = -1;\n var end = -1;\n\n for (var i = 0; i < lines.length; i++) {\n var match = lines[i].match(re);\n if (match === null) continue;\n if (match[2] !== label) continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN') break;\n start = i;\n } else {\n if (match[1] !== 'END') break;\n end = i;\n break;\n }\n }\n\n if (start === -1 || end === -1) throw new Error('PEM section not found for: ' + label);\n var base64 = lines.slice(start + 1, end).join(''); // Remove excessive symbols\n\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n var input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};","var BN = require('bn.js');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nfunction withPublic(paddedMsg, key) {\n return Buffer.from(paddedMsg.toRed(BN.mont(key.modulus)).redPow(new BN(key.publicExponent)).fromRed().toArray());\n}\n\nmodule.exports = withPublic;","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};","'use strict';\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\n\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};","'use strict';\n\nvar encoders = require('./encoders');\n\nvar decoders = require('./decoders');\n\nvar inherits = require('inherits');\n\nvar 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 this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n var name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n\n inherits(Generated, Base);\n\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'; // Lazily create decoder\n\n if (!this.decoders.hasOwnProperty(enc)) 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'; // Lazily create encoder\n\n if (!this.encoders.hasOwnProperty(enc)) this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc,\n/* internal */\nreporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};","'use strict';\n\nvar BN = require('bn.js');\n\nvar HmacDRBG = require('hmac-drbg');\n\nvar utils = require('../utils');\n\nvar curves = require('../curves');\n\nvar rand = require('brorand');\n\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\n\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC)) return new EC(options); // Shortcut `elliptic.ec(curve-name)`\n\n if (typeof options === 'string') {\n assert(curves.hasOwnProperty(options), 'Unknown curve ' + options);\n options = curves[options];\n } // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n\n\n if (options instanceof curves.PresetCurve) options = {\n 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; // Point on curve\n\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1); // Hash for function for DRBG\n\n this.hash = options.hash || options.curve.hash;\n}\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) options = {}; // Instantiate Hmac_DRBG\n\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 var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n\n do {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0) continue;\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n } while (true);\n};\n\nEC.prototype._truncateToN = function truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0) msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0) return msg.sub(this.n);else 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\n if (!options) options = {};\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16)); // Zero-extend key to provide enough entropy\n\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes); // Zero-extend nonce to have the same byte size as N\n\n var nonce = msg.toArray('be', bytes); // Instantiate Hmac_DRBG\n\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 }); // Number of bytes to generate\n\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; true; iter++) {\n var k = options.k ? options.k(iter) : new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0) continue;\n var kp = this.g.mul(k);\n if (kp.isInfinity()) continue;\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0) continue;\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) continue;\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | (kpX.cmp(r) !== 0 ? 2 : 0); // Use complement of `s`, if it is > `n / 2`\n\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({\n r: r,\n s: s,\n recoveryParam: recoveryParam\n });\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'); // Perform primitive values validation\n\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0) return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0) return false; // Validate signature\n\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\n if (!this.curve._maxwellTrick) {\n var p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity()) return false;\n return p.getX().umod(this.n).cmp(r) === 0;\n } // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n\n var p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity()) return false; // 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\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 var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s; // A set LSB signifies that the y-coordinate is odd\n\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey) throw new Error('Unable to find sencond key candinate'); // 1.1. Let x = r + jn.\n\n if (isSecondKey) r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);else r = this.curve.pointFromX(r, isYOdd);\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); // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n\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) return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q)) return i;\n }\n\n throw new Error('Unable to find valid recovery factor');\n};","var randomBytes = require('randombytes');\n\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\n\nvar BN = require('bn.js');\n\nvar TWENTYFOUR = new BN(24);\n\nvar MillerRabin = require('miller-rabin');\n\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) return primes;\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n\n for (var j = 0; j < i && res[j] <= sqrt; j++) {\n if (k % res[j] === 0) break;\n }\n\n if (i !== j && res[j] <= sqrt) continue;\n res[i++] = k;\n }\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\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\n gen = new BN(gen);\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n\n if (num.isEven()) {\n num.iadd(ONE);\n }\n\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\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\n n2 = num.shrn(1);\n\n if (simpleSieve(n2) && simpleSieve(num) && fermatTest(n2) && fermatTest(num) && millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n}","'use strict';\n\nvar Cancel = require('./Cancel');\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\n\n\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\n\n\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n\n\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;","var Buffer = require('safe-buffer').Buffer;\n\nvar MD5 = require('md5.js');\n/* eslint-disable camelcase */\n\n\nfunction EVP_BytesToKey(password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary');\n\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 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 {\n key: key,\n iv: iv\n };\n}\n\nmodule.exports = EVP_BytesToKey;","var parseKeys = require('parse-asn1');\n\nvar mgf = require('./mgf');\n\nvar xor = require('./xor');\n\nvar BN = require('bn.js');\n\nvar crt = require('browserify-rsa');\n\nvar createHash = require('create-hash');\n\nvar withPublic = require('./withPublic');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nmodule.exports = function privateDecrypt(privateKey, enc, reverse) {\n var padding;\n\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\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error');\n }\n\n var msg;\n\n if (reverse) {\n msg = withPublic(new BN(enc), key);\n } else {\n msg = crt(enc, key);\n }\n\n var zBuffer = Buffer.alloc(k - msg.length);\n msg = Buffer.concat([zBuffer, msg], k);\n\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\n if (msg[0] !== 0) {\n throw new Error('decryption error');\n }\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\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error');\n }\n\n var i = hLen;\n\n while (db[i] === 0) {\n i++;\n }\n\n if (db[i++] !== 1) {\n throw new Error('decryption error');\n }\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\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++;\n break;\n }\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\n if (ps.length < 8) {\n status++;\n }\n\n if (status) {\n throw new Error('decryption error');\n }\n\n return msg.slice(i);\n}\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\n if (a.length !== b.length) {\n dif++;\n len = Math.min(a.length, b.length);\n }\n\n var i = -1;\n\n while (++i < len) {\n dif += a[i] ^ b[i];\n }\n\n return dif;\n}","var MD5 = require('md5.js');\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest();\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 */\nvar inherits = require('inherits');\n\nvar Hash = require('./hash');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar 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];\nvar W = new Array(64);\n\nfunction Sha256() {\n this.init();\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 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 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) {\n W[i] = M.readInt32BE(i * 4);\n }\n\n for (; i < 64; ++i) {\n W[i] = gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16] | 0;\n }\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 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 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 return H;\n};\n\nmodule.exports = Sha256;","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer');\n\nvar Buffer = buffer.Buffer; // alternative to using Object.keys for old browsers\n\nfunction copyProps(src, dst) {\n for (var key in src) {\n dst[key] = src[key];\n }\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); // Copy static methods from Buffer\n\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\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\n var buf = Buffer(size);\n\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\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\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\n return buffer.SlowBuffer(size);\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 */\nvar inherits = require('inherits');\n\nvar Hash = require('./hash');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0];\nvar W = new Array(80);\n\nfunction Sha() {\n this.init();\n this._w = W;\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 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 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) {\n W[i] = M.readInt32BE(i * 4);\n }\n\n for (; i < 80; ++i) {\n W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n }\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 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 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 return H;\n};\n\nmodule.exports = Sha;","var CipherBase = require('cipher-base');\n\nvar des = require('des.js');\n\nvar inherits = require('inherits');\n\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);\n\nfunction DES(opts) {\n CipherBase.call(this);\n var modeName = opts.mode.toLowerCase();\n var mode = modes[modeName];\n var type;\n\n if (opts.decrypt) {\n type = 'decrypt';\n } else {\n type = 'encrypt';\n }\n\n var key = opts.key;\n\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key);\n }\n\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)]);\n }\n\n var iv = opts.iv;\n\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv);\n }\n\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n });\n}\n\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data));\n};\n\nDES.prototype._final = function () {\n return Buffer.from(this._des.final());\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/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\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/**/\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/**/\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/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\n\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n\n return error;\n};","'use strict';\n\nvar utils = require('../utils');\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\n\n\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = ['baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer', 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress', 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent', 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n var axiosKeys = valueFromConfig2Keys.concat(mergeDeepPropertiesKeys).concat(defaultToConfig2Keys).concat(directMergeKeys);\n var otherKeys = Object.keys(config1).concat(Object.keys(config2)).filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n utils.forEach(otherKeys, mergeDeepProperties);\n return config;\n};","var elliptic = require('elliptic');\n\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};\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\n if (!this.curveType) {\n this.curveType = {\n name: curve\n };\n }\n\n this.curve = new elliptic.ec(this.curveType.name); // eslint-disable-line new-cap\n\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\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc);\n }\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\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7;\n } else {\n key[0] = 6;\n }\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\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n\n this.keys._importPublic(pub);\n\n return this;\n};\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8';\n\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n\n var _priv = new BN(priv);\n\n _priv = _priv.toString(16);\n this.keys = this.curve.genKeyPair();\n\n this.keys._importPrivate(_priv);\n\n return this;\n};\n\nfunction formatReturnValue(bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray();\n }\n\n var buf = new Buffer(bn);\n\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\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}","'use strict';\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n// undocumented cb() API, needed for core, not for public API\n\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 && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\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 pna.nextTick(emitErrorNT, _this, err);\n\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};","var Buffer = require('safe-buffer').Buffer;\n\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};","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n\n\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\n\n\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\n\n\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;","'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};","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer;\n\nvar createHmac = require('create-hmac');\n\nvar crt = require('browserify-rsa');\n\nvar EC = require('elliptic').ec;\n\nvar BN = require('bn.js');\n\nvar parseKeys = require('parse-asn1');\n\nvar curves = require('./curves.json');\n\nfunction sign(hash, key, hashType, signType, tag) {\n var priv = parseKeys(key);\n\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\n hash = Buffer.concat([tag, hash]);\n var len = priv.modulus.byteLength();\n var pad = [0, 1];\n\n while (hash.length + pad.length + 1 < len) {\n pad.push(0xff);\n }\n\n pad.push(0x00);\n var i = -1;\n\n while (++i < hash.length) {\n pad.push(hash[i]);\n }\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 var curve = new EC(curveId);\n var key = curve.keyFromPrivate(priv.privateKey);\n var out = key.sign(hash);\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\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\n if (s.cmpn(0) === 0) {\n s = false;\n r = new BN(0);\n }\n }\n\n return toDER(r, s);\n}\n\nfunction toDER(r, s) {\n r = r.toArray();\n s = s.toArray(); // Pad values\n\n if (r[0] & 0x80) r = [0].concat(r);\n if (s[0] & 0x80) s = [0].concat(s);\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\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length);\n x = Buffer.concat([zeros, x]);\n }\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 {\n k: k,\n v: v\n };\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\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length);\n out = Buffer.concat([zeros, out]);\n }\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;","'use strict';\n\nvar bind = require('./helpers/bind');\n/*global toString:true*/\n// utils is a library of generic helper functions non-specific to axios\n\n\nvar toString = Object.prototype.toString;\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\n\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\n\n\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\n\n\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\n\n\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\n\n\nfunction isFormData(val) {\n return typeof FormData !== 'undefined' && val instanceof FormData;\n}\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\n\n\nfunction isArrayBufferView(val) {\n var result;\n\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && val.buffer instanceof ArrayBuffer;\n }\n\n return result;\n}\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\n\n\nfunction isString(val) {\n return typeof val === 'string';\n}\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\n\n\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\n\n\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\n\n\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\n\n\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\n\n\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\n\n\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\n\n\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\n\n\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\n\n\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\n\n\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\n\n\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || navigator.product === 'NativeScript' || navigator.product === 'NS')) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\n\n\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n } // Force an array if not already something iterable\n\n\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\n\n\nfunction merge()\n/* obj1, obj2, obj3, ... */\n{\n var result = {};\n\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n\n return result;\n}\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\n\n\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\n\n\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};","/**\n * Module exports.\n */\nmodule.exports = deprecate;\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\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\n warned = true;\n }\n\n return fn.apply(this, arguments);\n }\n\n return deprecated;\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\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\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}","import { AxiosPublic, AxiosPrivate } from '../utils/axios';\nimport { ROWS_PER_PAGE, SORT_ORDER, ReviewStatusEnum } from '../constants';\nimport { isAdminUser, isStaffUser } from '../utils/auth';\n\nexport const getRelatedReviews = async (id, isPublic = true) => {\n try {\n let response = null;\n if (isPublic) {\n response = await AxiosPublic.get(`/reviews/${id}/related/public`);\n } else {\n response = await AxiosPrivate.get(`/reviews/${id}/related/`);\n }\n return response;\n } catch (e) {\n // TODO: set alert message\n }\n};\n\nexport const generateQuery = (\n searchFilter = '',\n typeFilter = 'All',\n statusFilter = 'All',\n dateFilter = 'All',\n organizationtFilter = '',\n offset = 0,\n orderBy = 'defaultStatus',\n order = SORT_ORDER[0],\n) => {\n let base = `?take=${ROWS_PER_PAGE}&skip=${offset}&orderBy=${\n orderBy ? orderBy : 'defaultStatus'\n }&order=${order}`; // pagination\n if (searchFilter !== '') base += `&name=${searchFilter}`; // search by name\n // filter by status (eg. Avtive, Completed, ...)\n if (statusFilter !== 'All') base += statusFilter;\n else {\n if (isStaffUser()||isAdminUser())\n base += `&status=${ReviewStatusEnum.ACTIVE}&status=${ReviewStatusEnum.COMPLETED}&status=${ReviewStatusEnum.DRAFT}`;\n }\n if (typeFilter !== 'All') base += `&type=${typeFilter}`; // filter by type (eg. Permit, EA, ...)\n if (dateFilter !== 'All') base += `&dateRange=${dateFilter}`; // filter by date range (eg. Last week, Last month, ...)\n if (organizationtFilter !== '')\n base += `&organizationId=${organizationtFilter}`; // search by organization name\n return base;\n};\n","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\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; // if we have detected an error in the meanwhile\n // reject straight away\n\n\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; // 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\n\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 AuthCipher = require('./authCipher');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar MODES = require('./modes');\n\nvar StreamCipher = require('./streamCipher');\n\nvar Transform = require('cipher-base');\n\nvar aes = require('./aes');\n\nvar ebtk = require('evp_bytestokey');\n\nvar inherits = require('inherits');\n\nfunction Decipher(mode, key, iv) {\n Transform.call(this);\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\n var chunk;\n var thing;\n var out = [];\n\n while (chunk = this._cache.get(this._autopadding)) {\n thing = this._mode.decrypt(this, chunk);\n out.push(thing);\n }\n\n return Buffer.concat(out);\n};\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush();\n\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\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\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data');\n }\n\n var i = -1;\n\n while (++i < padded) {\n if (last[i + (16 - padded)] !== padded) {\n throw new Error('unable to decrypt data');\n }\n }\n\n if (padded === 16) return;\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 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 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 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;","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n}\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\n\n\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};","import { OrsRoutes } from './routes';\n\nexport const ROWS_PER_PAGE = 12;\n\nexport enum ReviewStatusEnum {\n DRAFT = 'Draft',\n ACTIVE = 'Active',\n COMPLETED = 'Completed',\n}\n\nexport enum DownloadTypesEnum {\n NONE = 'NONE',\n ALL = 'ALL',\n COMMENTS = 'COMMENTS',\n ATTACHMENTS = 'ATTACHMENTS',\n}\n\nexport enum CommentStatusEnum {\n DRAFT = 'draft',\n PUBLISHED = 'published',\n}\n\nexport enum CommentTypeEnum {\n Default = 'default',\n Audio = 'audio',\n}\n\nexport enum ActionType {\n EDIT = 'Edit',\n VIEW = 'View',\n}\n\nexport const SORT_ORDER = ['DESC', 'ASC'];\n\nexport const DownloadFormatOptions = [\n { value: '.docx', label: 'Microsoft Word format' },\n { value: '.pdf', label: 'Adobe PDF' },\n { value: 'staff.xlsx', label: 'Microsoft Excel document' },\n];\n\nexport const DownloadOptions = [\n { type: DownloadTypesEnum.NONE, label: 'Review Summary Download Options' },\n {\n type: DownloadTypesEnum.ALL,\n label: 'All Comments with Attachments',\n menuOption: true,\n showIfAttachments: true,\n },\n {\n type: DownloadTypesEnum.COMMENTS,\n label: 'Comments only',\n menuOption: true,\n },\n {\n type: DownloadTypesEnum.ATTACHMENTS,\n label: 'Attachments only',\n menuOption: true,\n showIfAttachments: true,\n },\n];\n\nexport const CommentSizeBase = {\n '.pdf': 0.03,\n '.docx': 0.007,\n '.xlsx': 0.017,\n};\n\nexport const CommentSizeFactor = {\n '.pdf': 0.0015,\n '.docx': 0.0005,\n '.xlsx': 0.0025,\n};\n\nexport const Types = [\n { value: 'All', label: 'All' },\n { value: 'Review', label: 'Item for Review' },\n { value: 'IR', label: 'Information Request' },\n];\n\nexport const Statuses = [\n { value: 'All', label: 'All' },\n { value: 'Draft', label: 'Draft' },\n { value: 'Active', label: 'Active' },\n { value: 'Review', label: 'Review' },\n { value: 'Completed', label: 'Completed' },\n];\n\nexport const PublicStatuses = [\n { value: 'All', label: 'All' },\n { value: 'Active', label: 'Active' },\n { value: 'Completed', label: 'Completed' },\n];\nexport const StaffStatuses = [\n { value: 'All', label: 'All' },\n { value: 'Draft', label: 'Draft' },\n { value: 'Active', label: 'Active' },\n { value: 'Completed', label: 'Completed' },\n];\n\nexport const DateRanges = [\n { value: 'All', label: 'All' },\n { value: '1', label: 'Last 30 Days' },\n { value: '6', label: 'Last 6 months' },\n { value: '12', label: 'Last 12 months' },\n];\n\nexport const MenuItems = [\n { value: '#overview', label: 'Overview' },\n { value: '#documents', label: 'Documents' },\n { value: '#comments', label: 'Comments' },\n];\n\nexport const ReviewListColumns = [\n {\n id: 'name',\n label: 'Project',\n isSortable: false,\n style: { width: '240px' },\n },\n {\n id: 'organization',\n label: 'Proponent',\n isSortable: true,\n },\n {\n id: 'title',\n label: 'Item for Review /\\nInformation Request',\n isSortable: false,\n style: { minWidth: '135px' },\n link: data => `/review/${data.id}`,\n },\n {\n id: 'commentDueAt',\n label: 'Comments Due',\n isSortable: true,\n isDate: true,\n style: { width: 'auto' },\n },\n {\n id: 'responseDueAt',\n label: 'Responses Due',\n isSortable: true,\n isDate: true,\n style: { width: 'auto' },\n },\n { id: 'status', label: 'Status', isSortable: true, style: { width: 'auto' } },\n];\n\nexport const ReviewActions = [\n {\n label: ActionType.VIEW,\n onClick: id => {\n window.open(`/review/${id}`);\n },\n isHidden: status => {\n return false;\n },\n },\n];\n\nexport const StaffReviewActions = [\n {\n label: ActionType.VIEW,\n onClick: id => {\n window.open(`/review/${id}`);\n },\n isHidden: status => {\n return false;\n },\n },\n {\n label: ActionType.EDIT,\n onClick: id => {\n window.open(`${OrsRoutes.EditReview.replace(':id', id)}`, '_self');\n },\n isHidden: status => {\n return false;\n },\n },\n];\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\n\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); // Use Montgomery, when there is no fast reduction for the prime\n\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p); // Useful for many curves\n\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); // Curve configuration, optional\n\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed); // Temporary arrays\n\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 this._bitLength = this.n ? this.n.bitLength() : 0; // Generalized Greg Maxwell's trick\n\n var adjustCount = this.n && this.p.div(this.n);\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}\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\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; // Translate into more windowed form\n\n var repr = [];\n\n for (var j = 0; j < naf.length; j += doubles.step) {\n var nafW = 0;\n\n for (var k = j + doubles.step - 1; k >= j; k--) {\n nafW = (nafW << 1) + naf[k];\n }\n\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n\n for (var i = I; i > 0; i--) {\n for (var j = 0; j < repr.length; j++) {\n var nafW = repr[j];\n if (nafW === i) b = b.mixedAdd(doubles.points[j]);else if (nafW === -i) b = b.mixedAdd(doubles.points[j].neg());\n }\n\n a = a.add(b);\n }\n\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4; // Precompute window\n\n var nafPoints = p._getNAFPoints(w);\n\n w = nafPoints.wnd;\n var wnd = nafPoints.points; // Get NAF form\n\n var naf = getNAF(k, w, this._bitLength); // Add `this`*(N+1) for every w-NAF index\n\n var acc = this.jpoint(null, null, null);\n\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var k = 0; i >= 0 && naf[i] === 0; i--) {\n k++;\n }\n\n if (i >= 0) k++;\n acc = acc.dblp(k);\n if (i < 0) break;\n var z = naf[i];\n assert(z !== 0);\n\n if (p.type === 'affine') {\n // J +- P\n if (z > 0) acc = acc.mixedAdd(wnd[z - 1 >> 1]);else acc = acc.mixedAdd(wnd[-z - 1 >> 1].neg());\n } else {\n // J +- J\n if (z > 0) acc = acc.add(wnd[z - 1 >> 1]);else acc = acc.add(wnd[-z - 1 >> 1].neg());\n }\n }\n\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, points, coeffs, len, jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3; // Fill all arrays\n\n var max = 0;\n\n for (var i = 0; i < len; i++) {\n var p = points[i];\n\n var nafPoints = p._getNAFPoints(defW);\n\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n } // Comb small window NAFs\n\n\n for (var i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n\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 = [points[a],\n /* 1 */\n null,\n /* 3 */\n null,\n /* 5 */\n points[b]\n /* 7 */\n ]; // Try to avoid Projective points, if possible\n\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 = [-3,\n /* -1 -1 */\n -1,\n /* -1 0 */\n -5,\n /* -1 1 */\n -7,\n /* 0 -1 */\n 0,\n /* 0 0 */\n 7,\n /* 0 1 */\n 5,\n /* 1 -1 */\n 1,\n /* 1 0 */\n 3\n /* 1 1 */\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\n for (var j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\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\n for (var i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n\n for (var j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0) zero = false;\n }\n\n if (!zero) break;\n k++;\n i--;\n }\n\n if (i >= 0) k++;\n acc = acc.dblp(k);\n if (i < 0) break;\n\n for (var j = 0; j < len; j++) {\n var z = tmp[j];\n var p;\n if (z === 0) continue;else if (z > 0) p = wnd[j][z - 1 >> 1];else if (z < 0) p = wnd[j][-z - 1 >> 1].neg();\n if (p.type === 'affine') acc = acc.mixedAdd(p);else acc = acc.add(p);\n }\n } // Zeroify references\n\n\n for (var i = 0; i < len; i++) {\n wnd[i] = null;\n }\n\n if (jacobianResult) return acc;else return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\n\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq()\n/*other*/\n{\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 var len = this.p.byteLength(); // uncompressed, hybrid-odd, hybrid-even\n\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) && bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06) assert(bytes[bytes.length - 1] % 2 === 0);else if (bytes[0] === 0x07) assert(bytes[bytes.length - 1] % 2 === 1);\n var res = this.point(bytes.slice(1, 1 + len), bytes.slice(1 + len, 1 + 2 * len));\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) && bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\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 if (compact) return [this.getY().isEven() ? 0x02 : 0x03].concat(x);\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) return this;\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 return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed) return false;\n var doubles = this.precomputed.doubles;\n if (!doubles) return false;\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) return this.precomputed.doubles;\n var doubles = [this];\n var acc = this;\n\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++) {\n acc = acc.dbl();\n }\n\n doubles.push(acc);\n }\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) return this.precomputed.naf;\n var res = [this];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n\n for (var i = 1; i < max; i++) {\n res[i] = res[i - 1].add(dbl);\n }\n\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\n for (var i = 0; i < k; i++) {\n r = r.dbl();\n }\n\n return r;\n};","'use strict';\n\nvar encoders = exports;\nencoders.der = require('./der');\nencoders.pem = require('./pem');","'use strict';\n\nvar utils = require('../utils');\n\nvar BN = require('bn.js');\n\nvar inherits = require('inherits');\n\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\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 this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0; // If the curve is endomorphic, precalculate beta and lambda\n\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\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) return; // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n\n var beta;\n var lambda;\n\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p); // Choose the smallest beta\n\n\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\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\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 } // Get basis vectors, used for balanced length-two representation\n\n\n var basis;\n\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 var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\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)); // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n\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); // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n\n var a0;\n var b0; // First vector\n\n var a1;\n var b1; // Second vector\n\n var a2;\n var b2;\n var prevR;\n var i = 0;\n var r;\n var x;\n\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\n prevR = r;\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n\n a2 = r.neg();\n b2 = x;\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n } // Normalize signs\n\n\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [{\n a: a1,\n b: b1\n }, {\n a: a2,\n 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 var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.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); // Calculate answer\n\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return {\n k1: k1,\n k2: k2\n };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red) x = x.toRed(this.red);\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) throw new Error('invalid point'); // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd) y = y.redNeg();\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf) return true;\n var x = point.x;\n var y = point.y;\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 = function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n\n var p = points[i];\n\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\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\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult); // Clean-up references to points and coefficients\n\n\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n\n return res;\n};\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n\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); // Force redgomery representation when loading from JSON\n\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n\n if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\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) return;\n var pre = this.precomputed;\n if (pre && pre.beta) return pre.beta;\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n\n if (pre) {\n var curve = this.curve;\n\n var endoMul = function endoMul(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\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\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed) return [this.x, this.y];\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') obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2]) 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()) return '';\n return '';\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) return p; // P + O = P\n\n if (p.inf) return this; // P + P = 2P\n\n if (this.eq(p)) return this.dbl(); // P + (-P) = O\n\n if (this.neg().eq(p)) return this.curve.point(null, null); // P + Q = O\n\n if (this.x.cmp(p.x) === 0) return this.curve.point(null, null);\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0) 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) return this; // 2P = O\n\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0) return this.curve.point(null, null);\n var a = this.curve.a;\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\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()) return this;else if (this._hasDoubles(k)) return this.curve._fixedNafMul(this, k);else if (this.curve.endo) return this.curve._endoWnafMulAdd([this], [k]);else 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) return this.curve._endoWnafMulAdd(points, coeffs);else 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) return this.curve._endoWnafMulAdd(points, coeffs, true);else return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p || this.inf === p.inf && (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) return this;\n var res = this.curve.point(this.x, this.y.redNeg());\n\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n\n var negate = function negate(p) {\n return p.neg();\n };\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\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf) return this.curve.jpoint(null, null, null);\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\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\n if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n}\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()) return this.curve.point(null, null);\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 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()) return p; // P + O = P\n\n if (p.isInfinity()) return this; // 12M + 4S + 7A\n\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 var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);else return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\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 return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity()) return p.toJ(); // P + O = P\n\n if (p.isInfinity()) return this; // 8M + 3S + 7A\n\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 var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);else return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\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 return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0) return this;\n if (this.isInfinity()) return this;\n if (!pow) return this.dbl();\n\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n\n for (var i = 0; i < pow; i++) {\n r = r.dbl();\n }\n\n return r;\n } // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n\n\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr(); // Reuse results\n\n var jyd = jy.redAdd(jy);\n\n for (var 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 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) jz4 = jz4.redMul(jyd4);\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()) return this;\n if (this.curve.zeroA) return this._zeroDbl();else if (this.curve.threeA) return this._threeDbl();else return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz; // Z = 1\n\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n // XX = X1^2\n var xx = this.x.redSqr(); // YY = Y1^2\n\n var yy = this.y.redSqr(); // YYYY = YY^2\n\n var yyyy = yy.redSqr(); // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s); // M = 3 * XX + a; a = 0\n\n var m = xx.redAdd(xx).redIAdd(xx); // T = M ^ 2 - 2*S\n\n var t = m.redSqr().redISub(s).redISub(s); // 8 * YYYY\n\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8); // X3 = T\n\n nx = t; // Y3 = M * (S - T) - 8 * YYYY\n\n ny = m.redMul(s.redISub(t)).redISub(yyyy8); // Z3 = 2*Y1\n\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 // A = X1^2\n var a = this.x.redSqr(); // B = Y1^2\n\n var b = this.y.redSqr(); // C = B^2\n\n var c = b.redSqr(); // D = 2 * ((X1 + B)^2 - A - C)\n\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d); // E = 3 * A\n\n var e = a.redAdd(a).redIAdd(a); // F = E^2\n\n var f = e.redSqr(); // 8 * C\n\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8); // X3 = F - 2 * D\n\n nx = f.redISub(d).redISub(d); // Y3 = E * (D - X3) - 8 * C\n\n ny = e.redMul(d.redISub(nx)).redISub(c8); // Z3 = 2 * Y1 * Z1\n\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; // Z = 1\n\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n // XX = X1^2\n var xx = this.x.redSqr(); // YY = Y1^2\n\n var yy = this.y.redSqr(); // YYYY = YY^2\n\n var yyyy = yy.redSqr(); // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s); // M = 3 * XX + a\n\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a); // T = M^2 - 2 * S\n\n var t = m.redSqr().redISub(s).redISub(s); // X3 = T\n\n nx = t; // Y3 = M * (S - T) - 8 * YYYY\n\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); // Z3 = 2 * Y1\n\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 // delta = Z1^2\n var delta = this.z.redSqr(); // gamma = Y1^2\n\n var gamma = this.y.redSqr(); // beta = X1 * gamma\n\n var beta = this.x.redMul(gamma); // alpha = 3 * (X1 - delta) * (X1 + delta)\n\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha); // X3 = alpha^2 - 8 * beta\n\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8); // Z3 = (Y1 + Z1)^2 - gamma - delta\n\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta); // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n\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; // 4M + 6S + 10A\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\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 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 return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA) return this.dbl().add(this); // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n // XX = X1^2\n\n var xx = this.x.redSqr(); // YY = Y1^2\n\n var yy = this.y.redSqr(); // ZZ = Z1^2\n\n var zz = this.z.redSqr(); // YYYY = YY^2\n\n var yyyy = yy.redSqr(); // M = 3 * XX + a * ZZ2; a = 0\n\n var m = xx.redAdd(xx).redIAdd(xx); // MM = M^2\n\n var mm = m.redSqr(); // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n\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); // EE = E^2\n\n var ee = e.redSqr(); // T = 16*YYYY\n\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t); // U = (M + E)^2 - MM - EE - T\n\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t); // X3 = 4 * (X1 * EE - 4 * YY * U)\n\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); // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n\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); // Z3 = (Z1 + E)^2 - ZZ - EE\n\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine') return this.eq(p.toJ());\n if (this === p) return true; // x1 * z2^2 == x2 * z1^2\n\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) return false; // y1 * z2^3 == y2 * z1^3\n\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) return true;\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0) return false;\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0) return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '';\n return '';\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};","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\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 createError = require('./createError');\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\n\n\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError('Request failed with status code ' + response.status, response.config, null, response.request, response));\n }\n};","var MODES = require('./modes');\n\nvar AuthCipher = require('./authCipher');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar StreamCipher = require('./streamCipher');\n\nvar Transform = require('cipher-base');\n\nvar aes = require('./aes');\n\nvar ebtk = require('evp_bytestokey');\n\nvar inherits = require('inherits');\n\nfunction Cipher(mode, key, iv) {\n Transform.call(this);\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\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\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk);\n\n this._cipher.scrub();\n\n return chunk;\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub();\n\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\n return null;\n};\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length;\n var padBuff = Buffer.allocUnsafe(len);\n var i = -1;\n\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 if (typeof password === 'string') password = Buffer.from(password);\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length);\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 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;","'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}\n\nvar safeBuffer = require('safe-buffer');\n\nvar randombytes = require('randombytes');\n\nvar Buffer = safeBuffer.Buffer;\nvar kBufferMaxLength = safeBuffer.kMaxLength;\nvar crypto = global.crypto || global.msCrypto;\nvar kMaxUint32 = Math.pow(2, 32) - 1;\n\nfunction assertOffset(offset, length) {\n if (typeof offset !== 'number' || offset !== offset) {\n // 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) {\n // 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}\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}\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\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\n if (cb) {\n process.nextTick(function () {\n cb(null, buf);\n });\n return;\n }\n\n return buf;\n }\n\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err);\n }\n\n bytes.copy(buf, offset);\n cb(null, buf);\n });\n return;\n }\n\n var bytes = randombytes(size);\n bytes.copy(buf, offset);\n return buf;\n}\n\nfunction randomFillSync(buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0;\n }\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 if (size === undefined) size = buf.length - offset;\n assertSize(size, offset, buf.length);\n return actualFill(buf, offset, size);\n}","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n/** Used to match leading and trailing whitespace. */\n\nvar reTrim = /^\\s+|\\s+$/g;\n/** Used to detect bad signed hexadecimal string values. */\n\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n/** Used to detect binary string values. */\n\nvar reIsBinary = /^0b[01]+$/i;\n/** Used to detect octal string values. */\n\nvar reIsOctal = /^0o[0-7]+$/i;\n/** Used to detect unsigned integer values. */\n\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n/** Built-in method references without a dependency on `root`. */\n\nvar freeParseInt = parseInt;\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n\n return result;\n}\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while (fromRight ? index-- : ++index < length) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n\n return -1;\n}\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n\n return -1;\n}\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n\n\nfunction baseIsNaN(value) {\n return value !== value;\n}\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n\n\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n\n return result;\n}\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n\n\nfunction baseValues(object, props) {\n return arrayMap(props, function (key) {\n return object[key];\n });\n}\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n\n\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n}\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/** Built-in value references. */\n\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : [];\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n\n return result;\n}\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\n\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n\n var result = [];\n\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n\n return result;\n}\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n\n\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n}\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n\n\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n return value === proto;\n}\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n\n\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0;\n var length = collection.length;\n\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n\n return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1;\n}\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n\n\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n\n\nvar isArray = Array.isArray;\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n\n\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n\n\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n\n\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\n\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\n\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n\n\nfunction isString(value) {\n return typeof value == 'string' || !isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag;\n}\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n\n\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n\n\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n\n value = toNumber(value);\n\n if (value === INFINITY || value === -INFINITY) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n\n return value === value ? value : 0;\n}\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n\n\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n}\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n\n\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n\n if (isSymbol(value)) {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n\n\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n\n\nfunction values(object) {\n return object ? baseValues(object, keys(object)) : [];\n}\n\nmodule.exports = includes;","var createHash = require('create-hash');\n\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\n while (t.length < len) {\n c = i2ops(i++);\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()]);\n }\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}","var Buffer = require('safe-buffer').Buffer;\n\nvar checkParameters = require('./precondition');\n\nvar defaultEncoding = require('./default-encoding');\n\nvar sync = require('./sync');\n\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 = [];\n\nfunction checkNative(algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false);\n }\n\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false);\n }\n\n if (checks[algo] !== undefined) {\n return checks[algo];\n }\n\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8);\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo).then(function () {\n return true;\n }).catch(function () {\n return false;\n });\n checks[algo] = prom;\n return prom;\n}\n\nfunction browserPbkdf2(password, salt, iterations, length, algo) {\n return subtle.importKey('raw', password, {\n name: 'PBKDF2'\n }, false, ['deriveBits']).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 process.nextTick(function () {\n callback(null, out);\n });\n }, function (e) {\n process.nextTick(function () {\n callback(e);\n });\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 return process.nextTick(function () {\n var out;\n\n try {\n out = sync(password, salt, iterations, keylen, digest);\n } catch (e) {\n return callback(e);\n }\n\n callback(null, out);\n });\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 resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo);\n return sync(password, salt, iterations, keylen, digest);\n }), callback);\n};","var md5 = require('create-hash/md5');\n\nvar RIPEMD160 = require('ripemd160');\n\nvar sha = require('sha.js');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar checkParameters = require('./precondition');\n\nvar defaultEncoding = require('./default-encoding');\n\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\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\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 digest = digest || 'sha1';\n var hmac = new Hmac(digest, password, salt.length);\n var DK = Buffer.allocUnsafe(keylen);\n var block1 = Buffer.allocUnsafe(salt.length + 4);\n salt.copy(block1, 0, 0, salt.length);\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 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\n for (var k = 0; k < hLen; k++) {\n T[k] ^= U[k];\n }\n }\n\n T.copy(DK, destPos);\n destPos += hLen;\n }\n\n return DK;\n}\n\nmodule.exports = pbkdf2;","/* jshint node: true */\n\"use strict\";\n\nrequire(\"core-js/modules/es.array.reduce.js\");\n\nfunction makeArrayFrom(obj) {\n return Array.prototype.slice.apply(obj);\n}\n\nvar PENDING = \"pending\",\n RESOLVED = \"resolved\",\n REJECTED = \"rejected\";\n\nfunction SynchronousPromise(handler) {\n this.status = PENDING;\n this._continuations = [];\n this._parent = null;\n this._paused = false;\n\n if (handler) {\n handler.call(this, this._continueWith.bind(this), this._failWith.bind(this));\n }\n}\n\nfunction looksLikeAPromise(obj) {\n return obj && typeof obj.then === \"function\";\n}\n\nfunction passThrough(value) {\n return value;\n}\n\nSynchronousPromise.prototype = {\n then: function then(nextFn, catchFn) {\n var next = SynchronousPromise.unresolved()._setParent(this);\n\n if (this._isRejected()) {\n if (this._paused) {\n this._continuations.push({\n promise: next,\n nextFn: nextFn,\n catchFn: catchFn\n });\n\n return next;\n }\n\n if (catchFn) {\n try {\n var catchResult = catchFn(this._error);\n\n if (looksLikeAPromise(catchResult)) {\n this._chainPromiseData(catchResult, next);\n\n return next;\n } else {\n return SynchronousPromise.resolve(catchResult)._setParent(this);\n }\n } catch (e) {\n return SynchronousPromise.reject(e)._setParent(this);\n }\n }\n\n return SynchronousPromise.reject(this._error)._setParent(this);\n }\n\n this._continuations.push({\n promise: next,\n nextFn: nextFn,\n catchFn: catchFn\n });\n\n this._runResolutions();\n\n return next;\n },\n catch: function _catch(handler) {\n if (this._isResolved()) {\n return SynchronousPromise.resolve(this._data)._setParent(this);\n }\n\n var next = SynchronousPromise.unresolved()._setParent(this);\n\n this._continuations.push({\n promise: next,\n catchFn: handler\n });\n\n this._runRejections();\n\n return next;\n },\n finally: function _finally(callback) {\n var ran = false;\n\n function runFinally(result, err) {\n if (!ran) {\n ran = true;\n\n if (!callback) {\n callback = passThrough;\n }\n\n var callbackResult = callback(result);\n\n if (looksLikeAPromise(callbackResult)) {\n return callbackResult.then(function () {\n if (err) {\n throw err;\n }\n\n return result;\n });\n } else {\n return result;\n }\n }\n }\n\n return this.then(function (result) {\n return runFinally(result);\n }).catch(function (err) {\n return runFinally(null, err);\n });\n },\n pause: function pause() {\n this._paused = true;\n return this;\n },\n resume: function resume() {\n var firstPaused = this._findFirstPaused();\n\n if (firstPaused) {\n firstPaused._paused = false;\n\n firstPaused._runResolutions();\n\n firstPaused._runRejections();\n }\n\n return this;\n },\n _findAncestry: function _findAncestry() {\n return this._continuations.reduce(function (acc, cur) {\n if (cur.promise) {\n var node = {\n promise: cur.promise,\n children: cur.promise._findAncestry()\n };\n acc.push(node);\n }\n\n return acc;\n }, []);\n },\n _setParent: function _setParent(parent) {\n if (this._parent) {\n throw new Error(\"parent already set\");\n }\n\n this._parent = parent;\n return this;\n },\n _continueWith: function _continueWith(data) {\n var firstPending = this._findFirstPending();\n\n if (firstPending) {\n firstPending._data = data;\n\n firstPending._setResolved();\n }\n },\n _findFirstPending: function _findFirstPending() {\n return this._findFirstAncestor(function (test) {\n return test._isPending && test._isPending();\n });\n },\n _findFirstPaused: function _findFirstPaused() {\n return this._findFirstAncestor(function (test) {\n return test._paused;\n });\n },\n _findFirstAncestor: function _findFirstAncestor(matching) {\n var test = this;\n var result;\n\n while (test) {\n if (matching(test)) {\n result = test;\n }\n\n test = test._parent;\n }\n\n return result;\n },\n _failWith: function _failWith(error) {\n var firstRejected = this._findFirstPending();\n\n if (firstRejected) {\n firstRejected._error = error;\n\n firstRejected._setRejected();\n }\n },\n _takeContinuations: function _takeContinuations() {\n return this._continuations.splice(0, this._continuations.length);\n },\n _runRejections: function _runRejections() {\n if (this._paused || !this._isRejected()) {\n return;\n }\n\n var error = this._error,\n continuations = this._takeContinuations(),\n self = this;\n\n continuations.forEach(function (cont) {\n if (cont.catchFn) {\n try {\n var catchResult = cont.catchFn(error);\n\n self._handleUserFunctionResult(catchResult, cont.promise);\n } catch (e) {\n cont.promise.reject(e);\n }\n } else {\n cont.promise.reject(error);\n }\n });\n },\n _runResolutions: function _runResolutions() {\n if (this._paused || !this._isResolved() || this._isPending()) {\n return;\n }\n\n var continuations = this._takeContinuations();\n\n if (looksLikeAPromise(this._data)) {\n return this._handleWhenResolvedDataIsPromise(this._data);\n }\n\n var data = this._data;\n var self = this;\n continuations.forEach(function (cont) {\n if (cont.nextFn) {\n try {\n var result = cont.nextFn(data);\n\n self._handleUserFunctionResult(result, cont.promise);\n } catch (e) {\n self._handleResolutionError(e, cont);\n }\n } else if (cont.promise) {\n cont.promise.resolve(data);\n }\n });\n },\n _handleResolutionError: function _handleResolutionError(e, continuation) {\n this._setRejected();\n\n if (continuation.catchFn) {\n try {\n continuation.catchFn(e);\n return;\n } catch (e2) {\n e = e2;\n }\n }\n\n if (continuation.promise) {\n continuation.promise.reject(e);\n }\n },\n _handleWhenResolvedDataIsPromise: function _handleWhenResolvedDataIsPromise(data) {\n var self = this;\n return data.then(function (result) {\n self._data = result;\n\n self._runResolutions();\n }).catch(function (error) {\n self._error = error;\n\n self._setRejected();\n\n self._runRejections();\n });\n },\n _handleUserFunctionResult: function _handleUserFunctionResult(data, nextSynchronousPromise) {\n if (looksLikeAPromise(data)) {\n this._chainPromiseData(data, nextSynchronousPromise);\n } else {\n nextSynchronousPromise.resolve(data);\n }\n },\n _chainPromiseData: function _chainPromiseData(promiseData, nextSynchronousPromise) {\n promiseData.then(function (newData) {\n nextSynchronousPromise.resolve(newData);\n }).catch(function (newError) {\n nextSynchronousPromise.reject(newError);\n });\n },\n _setResolved: function _setResolved() {\n this.status = RESOLVED;\n\n if (!this._paused) {\n this._runResolutions();\n }\n },\n _setRejected: function _setRejected() {\n this.status = REJECTED;\n\n if (!this._paused) {\n this._runRejections();\n }\n },\n _isPending: function _isPending() {\n return this.status === PENDING;\n },\n _isResolved: function _isResolved() {\n return this.status === RESOLVED;\n },\n _isRejected: function _isRejected() {\n return this.status === REJECTED;\n }\n};\n\nSynchronousPromise.resolve = function (result) {\n return new SynchronousPromise(function (resolve, reject) {\n if (looksLikeAPromise(result)) {\n result.then(function (newResult) {\n resolve(newResult);\n }).catch(function (error) {\n reject(error);\n });\n } else {\n resolve(result);\n }\n });\n};\n\nSynchronousPromise.reject = function (result) {\n return new SynchronousPromise(function (resolve, reject) {\n reject(result);\n });\n};\n\nSynchronousPromise.unresolved = function () {\n return new SynchronousPromise(function (resolve, reject) {\n this.resolve = resolve;\n this.reject = reject;\n });\n};\n\nSynchronousPromise.all = function () {\n var args = makeArrayFrom(arguments);\n\n if (Array.isArray(args[0])) {\n args = args[0];\n }\n\n if (!args.length) {\n return SynchronousPromise.resolve([]);\n }\n\n return new SynchronousPromise(function (resolve, reject) {\n var allData = [],\n numResolved = 0,\n doResolve = function doResolve() {\n if (numResolved === args.length) {\n resolve(allData);\n }\n },\n rejected = false,\n doReject = function doReject(err) {\n if (rejected) {\n return;\n }\n\n rejected = true;\n reject(err);\n };\n\n args.forEach(function (arg, idx) {\n SynchronousPromise.resolve(arg).then(function (thisResult) {\n allData[idx] = thisResult;\n numResolved += 1;\n doResolve();\n }).catch(function (err) {\n doReject(err);\n });\n });\n });\n};\n\nfunction createAggregateErrorFrom(errors) {\n /* jshint ignore:start */\n if (typeof window !== \"undefined\" && \"AggregateError\" in window) {\n return new window.AggregateError(errors);\n }\n /* jshint ignore:end */\n\n\n return {\n errors: errors\n };\n}\n\nSynchronousPromise.any = function () {\n var args = makeArrayFrom(arguments);\n\n if (Array.isArray(args[0])) {\n args = args[0];\n }\n\n if (!args.length) {\n return SynchronousPromise.reject(createAggregateErrorFrom([]));\n }\n\n return new SynchronousPromise(function (resolve, reject) {\n var allErrors = [],\n numRejected = 0,\n doReject = function doReject() {\n if (numRejected === args.length) {\n reject(createAggregateErrorFrom(allErrors));\n }\n },\n resolved = false,\n doResolve = function doResolve(result) {\n if (resolved) {\n return;\n }\n\n resolved = true;\n resolve(result);\n };\n\n args.forEach(function (arg, idx) {\n SynchronousPromise.resolve(arg).then(function (thisResult) {\n doResolve(thisResult);\n }).catch(function (err) {\n allErrors[idx] = err;\n numRejected += 1;\n doReject();\n });\n });\n });\n};\n\nSynchronousPromise.allSettled = function () {\n var args = makeArrayFrom(arguments);\n\n if (Array.isArray(args[0])) {\n args = args[0];\n }\n\n if (!args.length) {\n return SynchronousPromise.resolve([]);\n }\n\n return new SynchronousPromise(function (resolve) {\n var allData = [],\n numSettled = 0,\n doSettled = function doSettled() {\n numSettled += 1;\n\n if (numSettled === args.length) {\n resolve(allData);\n }\n };\n\n args.forEach(function (arg, idx) {\n SynchronousPromise.resolve(arg).then(function (thisResult) {\n allData[idx] = {\n status: \"fulfilled\",\n value: thisResult\n };\n doSettled();\n }).catch(function (err) {\n allData[idx] = {\n status: \"rejected\",\n reason: err\n };\n doSettled();\n });\n });\n });\n};\n/* jshint ignore:start */\n\n\nif (Promise === SynchronousPromise) {\n throw new Error(\"Please use SynchronousPromise.installGlobally() to install globally\");\n}\n\nvar RealPromise = Promise;\n\nSynchronousPromise.installGlobally = function (__awaiter) {\n if (Promise === SynchronousPromise) {\n return __awaiter;\n }\n\n var result = patchAwaiterIfRequired(__awaiter);\n Promise = SynchronousPromise;\n return result;\n};\n\nSynchronousPromise.uninstallGlobally = function () {\n if (Promise === SynchronousPromise) {\n Promise = RealPromise;\n }\n};\n\nfunction patchAwaiterIfRequired(__awaiter) {\n if (typeof __awaiter === \"undefined\" || __awaiter.__patched) {\n return __awaiter;\n }\n\n var originalAwaiter = __awaiter;\n\n __awaiter = function __awaiter() {\n var Promise = RealPromise;\n originalAwaiter.apply(this, makeArrayFrom(arguments));\n };\n\n __awaiter.__patched = true;\n return __awaiter;\n}\n/* jshint ignore:end */\n\n\nmodule.exports = {\n SynchronousPromise: SynchronousPromise\n};","/**\n * Topological sorting function\n *\n * @param {Array} edges\n * @returns {Array}\n */\nmodule.exports = function (edges) {\n return toposort(uniqueNodes(edges), edges);\n};\n\nmodule.exports.array = toposort;\n\nfunction toposort(nodes, edges) {\n var cursor = nodes.length,\n sorted = new Array(cursor),\n visited = {},\n i = cursor // Better data structures make algorithm much faster.\n ,\n outgoingEdges = makeOutgoingEdges(edges),\n nodesHash = makeNodesHash(nodes); // check for unknown nodes\n\n edges.forEach(function (edge) {\n if (!nodesHash.has(edge[0]) || !nodesHash.has(edge[1])) {\n throw new Error('Unknown node. There is an unknown node in the supplied edges.');\n }\n });\n\n while (i--) {\n if (!visited[i]) visit(nodes[i], i, new Set());\n }\n\n return sorted;\n\n function visit(node, i, predecessors) {\n if (predecessors.has(node)) {\n var nodeRep;\n\n try {\n nodeRep = \", node was:\" + JSON.stringify(node);\n } catch (e) {\n nodeRep = \"\";\n }\n\n throw new Error('Cyclic dependency' + nodeRep);\n }\n\n if (!nodesHash.has(node)) {\n throw new Error('Found unknown node. Make sure to provided all involved nodes. Unknown node: ' + JSON.stringify(node));\n }\n\n if (visited[i]) return;\n visited[i] = true;\n var outgoing = outgoingEdges.get(node) || new Set();\n outgoing = Array.from(outgoing);\n\n if (i = outgoing.length) {\n predecessors.add(node);\n\n do {\n var child = outgoing[--i];\n visit(child, nodesHash.get(child), predecessors);\n } while (i);\n\n predecessors.delete(node);\n }\n\n sorted[--cursor] = node;\n }\n}\n\nfunction uniqueNodes(arr) {\n var res = new Set();\n\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i];\n res.add(edge[0]);\n res.add(edge[1]);\n }\n\n return Array.from(res);\n}\n\nfunction makeOutgoingEdges(arr) {\n var edges = new Map();\n\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i];\n if (!edges.has(edge[0])) edges.set(edge[0], new Set());\n if (!edges.has(edge[1])) edges.set(edge[1], new Set());\n edges.get(edge[0]).add(edge[1]);\n }\n\n return edges;\n}\n\nfunction makeNodesHash(arr) {\n var res = new Map();\n\n for (var i = 0, len = arr.length; i < len; i++) {\n res.set(arr[i], i);\n }\n\n return res;\n}","/*global module, process*/\nvar Buffer = require('safe-buffer').Buffer;\n\nvar Stream = require('stream');\n\nvar util = require('util');\n\nfunction DataStream(data) {\n this.buffer = null;\n this.writable = true;\n this.readable = true; // No input\n\n if (!data) {\n this.buffer = Buffer.alloc(0);\n return this;\n } // Stream\n\n\n if (typeof data.pipe === 'function') {\n this.buffer = Buffer.alloc(0);\n data.pipe(this);\n return this;\n } // Buffer or String\n // or Object (assumedly a passworded key)\n\n\n if (data.length || typeof data === 'object') {\n this.buffer = data;\n this.writable = false;\n process.nextTick(function () {\n this.emit('end', data);\n this.readable = false;\n this.emit('close');\n }.bind(this));\n return this;\n }\n\n throw new TypeError('Unexpected data type (' + typeof data + ')');\n}\n\nutil.inherits(DataStream, Stream);\n\nDataStream.prototype.write = function write(data) {\n this.buffer = Buffer.concat([this.buffer, Buffer.from(data)]);\n this.emit('data', data);\n};\n\nDataStream.prototype.end = function end(data) {\n if (data) this.write(data);\n this.emit('end', data);\n this.emit('close');\n this.writable = false;\n this.readable = false;\n};\n\nmodule.exports = DataStream;","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\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 = /*#__PURE__*/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;","'use strict';\n\nvar constants = exports; // Helper\n\nconstants._reverse = function reverse(map) {\n var res = {};\n Object.keys(map).forEach(function (key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key) key = key | 0;\n var value = map[key];\n res[value] = key;\n });\n return res;\n};\n\nconstants.der = require('./der');","module.exports = require('./readable').PassThrough;","module.exports = {\n decode: require('./decode'),\n verify: require('./verify'),\n sign: require('./sign'),\n JsonWebTokenError: require('./lib/JsonWebTokenError'),\n NotBeforeError: require('./lib/NotBeforeError'),\n TokenExpiredError: require('./lib/TokenExpiredError')\n};","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\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 */\nvar inherits = require('inherits');\n\nvar Sha256 = require('./sha256');\n\nvar Hash = require('./hash');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar W = new Array(64);\n\nfunction Sha224() {\n this.init();\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 return this;\n};\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28);\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 return H;\n};\n\nmodule.exports = Sha224;","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar getParamBytesForAlg = require('./param-bytes-for-alg');\n\nvar MAX_OCTET = 0x80,\n CLASS_UNIVERSAL = 0,\n PRIMITIVE_BIT = 0x20,\n TAG_SEQ = 0x10,\n TAG_INT = 0x02,\n ENCODED_TAG_SEQ = TAG_SEQ | PRIMITIVE_BIT | CLASS_UNIVERSAL << 6,\n ENCODED_TAG_INT = TAG_INT | CLASS_UNIVERSAL << 6;\n\nfunction base64Url(base64) {\n return base64.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\n\nfunction signatureAsBuffer(signature) {\n if (Buffer.isBuffer(signature)) {\n return signature;\n } else if ('string' === typeof signature) {\n return Buffer.from(signature, 'base64');\n }\n\n throw new TypeError('ECDSA signature must be a Base64 string or a Buffer');\n}\n\nfunction derToJose(signature, alg) {\n signature = signatureAsBuffer(signature);\n var paramBytes = getParamBytesForAlg(alg); // the DER encoded param should at most be the param size, plus a padding\n // zero, since due to being a signed integer\n\n var maxEncodedParamLength = paramBytes + 1;\n var inputLength = signature.length;\n var offset = 0;\n\n if (signature[offset++] !== ENCODED_TAG_SEQ) {\n throw new Error('Could not find expected \"seq\"');\n }\n\n var seqLength = signature[offset++];\n\n if (seqLength === (MAX_OCTET | 1)) {\n seqLength = signature[offset++];\n }\n\n if (inputLength - offset < seqLength) {\n throw new Error('\"seq\" specified length of \"' + seqLength + '\", only \"' + (inputLength - offset) + '\" remaining');\n }\n\n if (signature[offset++] !== ENCODED_TAG_INT) {\n throw new Error('Could not find expected \"int\" for \"r\"');\n }\n\n var rLength = signature[offset++];\n\n if (inputLength - offset - 2 < rLength) {\n throw new Error('\"r\" specified length of \"' + rLength + '\", only \"' + (inputLength - offset - 2) + '\" available');\n }\n\n if (maxEncodedParamLength < rLength) {\n throw new Error('\"r\" specified length of \"' + rLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n }\n\n var rOffset = offset;\n offset += rLength;\n\n if (signature[offset++] !== ENCODED_TAG_INT) {\n throw new Error('Could not find expected \"int\" for \"s\"');\n }\n\n var sLength = signature[offset++];\n\n if (inputLength - offset !== sLength) {\n throw new Error('\"s\" specified length of \"' + sLength + '\", expected \"' + (inputLength - offset) + '\"');\n }\n\n if (maxEncodedParamLength < sLength) {\n throw new Error('\"s\" specified length of \"' + sLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n }\n\n var sOffset = offset;\n offset += sLength;\n\n if (offset !== inputLength) {\n throw new Error('Expected to consume entire buffer, but \"' + (inputLength - offset) + '\" bytes remain');\n }\n\n var rPadding = paramBytes - rLength,\n sPadding = paramBytes - sLength;\n var dst = Buffer.allocUnsafe(rPadding + rLength + sPadding + sLength);\n\n for (offset = 0; offset < rPadding; ++offset) {\n dst[offset] = 0;\n }\n\n signature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength);\n offset = paramBytes;\n\n for (var o = offset; offset < o + sPadding; ++offset) {\n dst[offset] = 0;\n }\n\n signature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength);\n dst = dst.toString('base64');\n dst = base64Url(dst);\n return dst;\n}\n\nfunction countPadding(buf, start, stop) {\n var padding = 0;\n\n while (start + padding < stop && buf[start + padding] === 0) {\n ++padding;\n }\n\n var needsSign = buf[start + padding] >= MAX_OCTET;\n\n if (needsSign) {\n --padding;\n }\n\n return padding;\n}\n\nfunction joseToDer(signature, alg) {\n signature = signatureAsBuffer(signature);\n var paramBytes = getParamBytesForAlg(alg);\n var signatureBytes = signature.length;\n\n if (signatureBytes !== paramBytes * 2) {\n throw new TypeError('\"' + alg + '\" signatures must be \"' + paramBytes * 2 + '\" bytes, saw \"' + signatureBytes + '\"');\n }\n\n var rPadding = countPadding(signature, 0, paramBytes);\n var sPadding = countPadding(signature, paramBytes, signature.length);\n var rLength = paramBytes - rPadding;\n var sLength = paramBytes - sPadding;\n var rsBytes = 1 + 1 + rLength + 1 + 1 + sLength;\n var shortLength = rsBytes < MAX_OCTET;\n var dst = Buffer.allocUnsafe((shortLength ? 2 : 3) + rsBytes);\n var offset = 0;\n dst[offset++] = ENCODED_TAG_SEQ;\n\n if (shortLength) {\n // Bit 8 has value \"0\"\n // bits 7-1 give the length.\n dst[offset++] = rsBytes;\n } else {\n // Bit 8 of first octet has value \"1\"\n // bits 7-1 give the number of additional length octets.\n dst[offset++] = MAX_OCTET | 1; // length, base 256\n\n dst[offset++] = rsBytes & 0xff;\n }\n\n dst[offset++] = ENCODED_TAG_INT;\n dst[offset++] = rLength;\n\n if (rPadding < 0) {\n dst[offset++] = 0;\n offset += signature.copy(dst, offset, 0, paramBytes);\n } else {\n offset += signature.copy(dst, offset, rPadding, paramBytes);\n }\n\n dst[offset++] = ENCODED_TAG_INT;\n dst[offset++] = sLength;\n\n if (sPadding < 0) {\n dst[offset++] = 0;\n signature.copy(dst, offset, paramBytes);\n } else {\n signature.copy(dst, offset, paramBytes + sPadding);\n }\n\n return dst;\n}\n\nmodule.exports = {\n derToJose: derToJose,\n joseToDer: joseToDer\n};","'use strict';\n\nif (typeof process === 'undefined' || !process.version || process.version.indexOf('v0.') === 0 || process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = {\n nextTick: nextTick\n };\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\n var len = arguments.length;\n var args, i;\n\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n\n default:\n args = new Array(len - 1);\n i = 0;\n\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\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/* */\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/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\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};","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r) throw new Error(msg || 'Assertion failed: ' + l + ' != ' + r);\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 = require('./../utils');\n\nvar buildURL = require('../helpers/buildURL');\n\nvar InterceptorManager = require('./InterceptorManager');\n\nvar dispatchRequest = require('./dispatchRequest');\n\nvar mergeConfig = require('./mergeConfig');\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\n\n\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\n\n\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config); // Set config.method\n\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n } // Hook up interceptors middleware\n\n\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n}; // Provide aliases for supported request methods\n\n\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\nmodule.exports = Axios;","'use strict';\n\nvar assert = require('minimalistic-assert');\n\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\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg)) return msg.slice();\n if (!msg) return [];\n var res = [];\n\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\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n\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) msg = '0' + msg;\n\n for (i = 0; i < msg.length; i += 2) {\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n }\n } else {\n for (i = 0; i < msg.length; i++) {\n res[i] = msg[i] | 0;\n }\n }\n\n return res;\n}\n\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n\n for (var i = 0; i < msg.length; i++) {\n res += zero2(msg[i].toString(16));\n }\n\n return res;\n}\n\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = w >>> 24 | w >>> 8 & 0xff00 | w << 8 & 0xff0000 | (w & 0xff) << 24;\n return res >>> 0;\n}\n\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little') w = htonl(w);\n res += zero8(w.toString(16));\n }\n\n return res;\n}\n\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1) return '0' + word;else return word;\n}\n\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7) return '0' + word;else if (word.length === 6) return '00' + word;else if (word.length === 5) return '000' + word;else if (word.length === 4) return '0000' + word;else if (word.length === 3) return '00000' + word;else if (word.length === 2) return '000000' + word;else if (word.length === 1) return '0000000' + word;else return word;\n}\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\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big') w = msg[k] << 24 | msg[k + 1] << 16 | msg[k + 2] << 8 | msg[k + 3];else w = msg[k + 3] << 24 | msg[k + 2] << 16 | msg[k + 1] << 8 | msg[k];\n res[i] = w >>> 0;\n }\n\n return res;\n}\n\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n\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\n return res;\n}\n\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return w >>> b | w << 32 - b;\n}\n\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return w << b | w >>> 32 - b;\n}\n\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return a + b >>> 0;\n}\n\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return a + b + c >>> 0;\n}\n\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return a + b + c + d >>> 0;\n}\n\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return a + b + c + d + e >>> 0;\n}\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 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}\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}\n\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\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 var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\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}\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 var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\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 return lo >>> 0;\n}\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}\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}\n\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\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}\n\nexports.shr64_lo = shr64_lo;","/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\n\nvar DataStream = require('./data-stream');\n\nvar jwa = require('jwa');\n\nvar Stream = require('stream');\n\nvar toString = require('./tostring');\n\nvar util = require('util');\n\nvar JWS_REGEX = /^[a-zA-Z0-9\\-_]+?\\.[a-zA-Z0-9\\-_]+?\\.([a-zA-Z0-9\\-_]+)?$/;\n\nfunction isObject(thing) {\n return Object.prototype.toString.call(thing) === '[object Object]';\n}\n\nfunction safeJsonParse(thing) {\n if (isObject(thing)) return thing;\n\n try {\n return JSON.parse(thing);\n } catch (e) {\n return undefined;\n }\n}\n\nfunction headerFromJWS(jwsSig) {\n var encodedHeader = jwsSig.split('.', 1)[0];\n return safeJsonParse(Buffer.from(encodedHeader, 'base64').toString('binary'));\n}\n\nfunction securedInputFromJWS(jwsSig) {\n return jwsSig.split('.', 2).join('.');\n}\n\nfunction signatureFromJWS(jwsSig) {\n return jwsSig.split('.')[2];\n}\n\nfunction payloadFromJWS(jwsSig, encoding) {\n encoding = encoding || 'utf8';\n var payload = jwsSig.split('.')[1];\n return Buffer.from(payload, 'base64').toString(encoding);\n}\n\nfunction isValidJws(string) {\n return JWS_REGEX.test(string) && !!headerFromJWS(string);\n}\n\nfunction jwsVerify(jwsSig, algorithm, secretOrKey) {\n if (!algorithm) {\n var err = new Error(\"Missing algorithm parameter for jws.verify\");\n err.code = \"MISSING_ALGORITHM\";\n throw err;\n }\n\n jwsSig = toString(jwsSig);\n var signature = signatureFromJWS(jwsSig);\n var securedInput = securedInputFromJWS(jwsSig);\n var algo = jwa(algorithm);\n return algo.verify(securedInput, signature, secretOrKey);\n}\n\nfunction jwsDecode(jwsSig, opts) {\n opts = opts || {};\n jwsSig = toString(jwsSig);\n if (!isValidJws(jwsSig)) return null;\n var header = headerFromJWS(jwsSig);\n if (!header) return null;\n var payload = payloadFromJWS(jwsSig);\n if (header.typ === 'JWT' || opts.json) payload = JSON.parse(payload, opts.encoding);\n return {\n header: header,\n payload: payload,\n signature: signatureFromJWS(jwsSig)\n };\n}\n\nfunction VerifyStream(opts) {\n opts = opts || {};\n var secretOrKey = opts.secret || opts.publicKey || opts.key;\n var secretStream = new DataStream(secretOrKey);\n this.readable = true;\n this.algorithm = opts.algorithm;\n this.encoding = opts.encoding;\n this.secret = this.publicKey = this.key = secretStream;\n this.signature = new DataStream(opts.signature);\n this.secret.once('close', function () {\n if (!this.signature.writable && this.readable) this.verify();\n }.bind(this));\n this.signature.once('close', function () {\n if (!this.secret.writable && this.readable) this.verify();\n }.bind(this));\n}\n\nutil.inherits(VerifyStream, Stream);\n\nVerifyStream.prototype.verify = function verify() {\n try {\n var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer);\n var obj = jwsDecode(this.signature.buffer, this.encoding);\n this.emit('done', valid, obj);\n this.emit('data', valid);\n this.emit('end');\n this.readable = false;\n return valid;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\n\nVerifyStream.decode = jwsDecode;\nVerifyStream.isValid = isValidJws;\nVerifyStream.verify = jwsVerify;\nmodule.exports = VerifyStream;","var BN = require('bn.js');\n\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 {\n blinder: blinder,\n unblinder: r.invm(priv.modulus)\n };\n}\n\nfunction getr(priv) {\n var len = priv.modulus.byteLength();\n var r;\n\n do {\n r = new BN(randomBytes(len));\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2));\n\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}\n\ncrt.getr = getr;\nmodule.exports = crt;","/**\n * Helpers.\n */\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n\n throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val));\n};\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\n\nfunction parse(str) {\n str = String(str);\n\n if (str.length > 100) {\n return;\n }\n\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);\n\n if (!match) {\n return;\n }\n\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n\n default:\n return undefined;\n }\n}\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n\n return ms + 'ms';\n}\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n\n return ms + ' ms';\n}\n/**\n * Pluralization helper.\n */\n\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\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// 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(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n\n return objectToString(arg) === '[object Array]';\n}\n\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\n\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\n\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\n\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\n\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\n\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\n\nexports.isDate = isDate;\n\nfunction isError(e) {\n return objectToString(e) === '[object Error]' || e instanceof Error;\n}\n\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\n\nexports.isPrimitive = isPrimitive;\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}","var inherits = require('inherits');\n\nvar Hash = require('./hash');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar K = [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817];\nvar W = new Array(160);\n\nfunction Sha512() {\n this.init();\n this._w = W;\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 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 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 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 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\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 xh = W[i - 2 * 2];\n xl = W[i - 2 * 2 + 1];\n var gamma1 = Gamma1(xh, xl);\n var gamma1l = Gamma1l(xl, xh); // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\n var Wi7h = W[i - 7 * 2];\n var Wi7l = W[i - 7 * 2 + 1];\n var Wi16h = W[i - 16 * 2];\n var Wi16l = W[i - 16 * 2 + 1];\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 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 var majh = maj(ah, bh, ch);\n var majl = maj(al, bl, cl);\n var sigma0h = sigma0(ah, al);\n var sigma0l = sigma0(al, ah);\n var sigma1h = sigma1(eh, el);\n var sigma1l = sigma1(el, eh); // t1 = h + sigma1 + ch + K[j] + W[j]\n\n var Kih = K[j];\n var Kil = K[j + 1];\n var chh = Ch(eh, fh, gh);\n var chl = Ch(el, fl, gl);\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; // t2 = sigma0 + maj\n\n var t2l = sigma0l + majl | 0;\n var t2h = sigma0h + majh + getCarry(t2l, sigma0l) | 0;\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 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 return H;\n};\n\nmodule.exports = Sha512;","'use strict';\n\nvar asn1 = exports;\nasn1.bignum = require('bn.js');\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');","exports = module.exports = SemVer;\nvar debug;\n/* istanbul ignore next */\n\nif (typeof process === 'object' && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG)) {\n debug = function debug() {\n var args = Array.prototype.slice.call(arguments, 0);\n args.unshift('SEMVER');\n console.log.apply(console, args);\n };\n} else {\n debug = function debug() {};\n} // Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\n\n\nexports.SEMVER_SPEC_VERSION = '2.0.0';\nvar MAX_LENGTH = 256;\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */\n9007199254740991; // Max safe segment length for coercion.\n\nvar MAX_SAFE_COMPONENT_LENGTH = 16; // The actual regexps go on exports.re\n\nvar re = exports.re = [];\nvar src = exports.src = [];\nvar R = 0; // The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\nvar NUMERICIDENTIFIER = R++;\nsrc[NUMERICIDENTIFIER] = '0|[1-9]\\\\d*';\nvar NUMERICIDENTIFIERLOOSE = R++;\nsrc[NUMERICIDENTIFIERLOOSE] = '[0-9]+'; // ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\nvar NONNUMERICIDENTIFIER = R++;\nsrc[NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*'; // ## Main Version\n// Three dot-separated numeric identifiers.\n\nvar MAINVERSION = R++;\nsrc[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\\\.' + '(' + src[NUMERICIDENTIFIER] + ')\\\\.' + '(' + src[NUMERICIDENTIFIER] + ')';\nvar MAINVERSIONLOOSE = R++;\nsrc[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' + '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' + '(' + src[NUMERICIDENTIFIERLOOSE] + ')'; // ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\nvar PRERELEASEIDENTIFIER = R++;\nsrc[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] + '|' + src[NONNUMERICIDENTIFIER] + ')';\nvar PRERELEASEIDENTIFIERLOOSE = R++;\nsrc[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] + '|' + src[NONNUMERICIDENTIFIER] + ')'; // ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\nvar PRERELEASE = R++;\nsrc[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] + '(?:\\\\.' + src[PRERELEASEIDENTIFIER] + ')*))';\nvar PRERELEASELOOSE = R++;\nsrc[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] + '(?:\\\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'; // ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\nvar BUILDIDENTIFIER = R++;\nsrc[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'; // ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\nvar BUILD = R++;\nsrc[BUILD] = '(?:\\\\+(' + src[BUILDIDENTIFIER] + '(?:\\\\.' + src[BUILDIDENTIFIER] + ')*))'; // ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\nvar FULL = R++;\nvar FULLPLAIN = 'v?' + src[MAINVERSION] + src[PRERELEASE] + '?' + src[BUILD] + '?';\nsrc[FULL] = '^' + FULLPLAIN + '$'; // like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\n\nvar LOOSEPLAIN = '[v=\\\\s]*' + src[MAINVERSIONLOOSE] + src[PRERELEASELOOSE] + '?' + src[BUILD] + '?';\nvar LOOSE = R++;\nsrc[LOOSE] = '^' + LOOSEPLAIN + '$';\nvar GTLT = R++;\nsrc[GTLT] = '((?:<|>)?=?)'; // Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\n\nvar XRANGEIDENTIFIERLOOSE = R++;\nsrc[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*';\nvar XRANGEIDENTIFIER = R++;\nsrc[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\\\*';\nvar XRANGEPLAIN = R++;\nsrc[XRANGEPLAIN] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIER] + ')' + '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' + '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' + '(?:' + src[PRERELEASE] + ')?' + src[BUILD] + '?' + ')?)?';\nvar XRANGEPLAINLOOSE = R++;\nsrc[XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:' + src[PRERELEASELOOSE] + ')?' + src[BUILD] + '?' + ')?)?';\nvar XRANGE = R++;\nsrc[XRANGE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAIN] + '$';\nvar XRANGELOOSE = R++;\nsrc[XRANGELOOSE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAINLOOSE] + '$'; // Coercion.\n// Extract anything that could conceivably be a part of a valid semver\n\nvar COERCE = R++;\nsrc[COERCE] = '(?:^|[^\\\\d])' + '(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:$|[^\\\\d])'; // Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\n\nvar LONETILDE = R++;\nsrc[LONETILDE] = '(?:~>?)';\nvar TILDETRIM = R++;\nsrc[TILDETRIM] = '(\\\\s*)' + src[LONETILDE] + '\\\\s+';\nre[TILDETRIM] = new RegExp(src[TILDETRIM], 'g');\nvar tildeTrimReplace = '$1~';\nvar TILDE = R++;\nsrc[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$';\nvar TILDELOOSE = R++;\nsrc[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'; // Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\n\nvar LONECARET = R++;\nsrc[LONECARET] = '(?:\\\\^)';\nvar CARETTRIM = R++;\nsrc[CARETTRIM] = '(\\\\s*)' + src[LONECARET] + '\\\\s+';\nre[CARETTRIM] = new RegExp(src[CARETTRIM], 'g');\nvar caretTrimReplace = '$1^';\nvar CARET = R++;\nsrc[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$';\nvar CARETLOOSE = R++;\nsrc[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'; // A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\n\nvar COMPARATORLOOSE = R++;\nsrc[COMPARATORLOOSE] = '^' + src[GTLT] + '\\\\s*(' + LOOSEPLAIN + ')$|^$';\nvar COMPARATOR = R++;\nsrc[COMPARATOR] = '^' + src[GTLT] + '\\\\s*(' + FULLPLAIN + ')$|^$'; // An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\n\nvar COMPARATORTRIM = R++;\nsrc[COMPARATORTRIM] = '(\\\\s*)' + src[GTLT] + '\\\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'; // this one has to use the /g flag\n\nre[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g');\nvar comparatorTrimReplace = '$1$2$3'; // Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\n\nvar HYPHENRANGE = R++;\nsrc[HYPHENRANGE] = '^\\\\s*(' + src[XRANGEPLAIN] + ')' + '\\\\s+-\\\\s+' + '(' + src[XRANGEPLAIN] + ')' + '\\\\s*$';\nvar HYPHENRANGELOOSE = R++;\nsrc[HYPHENRANGELOOSE] = '^\\\\s*(' + src[XRANGEPLAINLOOSE] + ')' + '\\\\s+-\\\\s+' + '(' + src[XRANGEPLAINLOOSE] + ')' + '\\\\s*$'; // Star ranges basically just allow anything at all.\n\nvar STAR = R++;\nsrc[STAR] = '(<|>)?=?\\\\s*\\\\*'; // Compile to actual regexp objects.\n// All are flag-free, unless they were created above with a flag.\n\nfor (var i = 0; i < R; i++) {\n debug(i, src[i]);\n\n if (!re[i]) {\n re[i] = new RegExp(src[i]);\n }\n}\n\nexports.parse = parse;\n\nfunction parse(version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n };\n }\n\n if (version instanceof SemVer) {\n return version;\n }\n\n if (typeof version !== 'string') {\n return null;\n }\n\n if (version.length > MAX_LENGTH) {\n return null;\n }\n\n var r = options.loose ? re[LOOSE] : re[FULL];\n\n if (!r.test(version)) {\n return null;\n }\n\n try {\n return new SemVer(version, options);\n } catch (er) {\n return null;\n }\n}\n\nexports.valid = valid;\n\nfunction valid(version, options) {\n var v = parse(version, options);\n return v ? v.version : null;\n}\n\nexports.clean = clean;\n\nfunction clean(version, options) {\n var s = parse(version.trim().replace(/^[=v]+/, ''), options);\n return s ? s.version : null;\n}\n\nexports.SemVer = SemVer;\n\nfunction SemVer(version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n };\n }\n\n if (version instanceof SemVer) {\n if (version.loose === options.loose) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== 'string') {\n throw new TypeError('Invalid Version: ' + version);\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters');\n }\n\n if (!(this instanceof SemVer)) {\n return new SemVer(version, options);\n }\n\n debug('SemVer', version, options);\n this.options = options;\n this.loose = !!options.loose;\n var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL]);\n\n if (!m) {\n throw new TypeError('Invalid Version: ' + version);\n }\n\n this.raw = version; // these are actually numbers\n\n this.major = +m[1];\n this.minor = +m[2];\n this.patch = +m[3];\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version');\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version');\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version');\n } // numberify any prerelease numeric ids\n\n\n if (!m[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m[4].split('.').map(function (id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id;\n\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n\n return id;\n });\n }\n\n this.build = m[5] ? m[5].split('.') : [];\n this.format();\n}\n\nSemVer.prototype.format = function () {\n this.version = this.major + '.' + this.minor + '.' + this.patch;\n\n if (this.prerelease.length) {\n this.version += '-' + this.prerelease.join('.');\n }\n\n return this.version;\n};\n\nSemVer.prototype.toString = function () {\n return this.version;\n};\n\nSemVer.prototype.compare = function (other) {\n debug('SemVer.compare', this.version, this.options, other);\n\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n\n return this.compareMain(other) || this.comparePre(other);\n};\n\nSemVer.prototype.compareMain = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n};\n\nSemVer.prototype.comparePre = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n } // NOT having a prerelease is > having one\n\n\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n\n var i = 0;\n\n do {\n var a = this.prerelease[i];\n var b = other.prerelease[i];\n debug('prerelease compare', i, a, b);\n\n if (a === undefined && b === undefined) {\n return 0;\n } else if (b === undefined) {\n return 1;\n } else if (a === undefined) {\n return -1;\n } else if (a === b) {\n continue;\n } else {\n return compareIdentifiers(a, b);\n }\n } while (++i);\n}; // preminor will bump the version up to the next minor release, and immediately\n// down to pre-release. premajor and prepatch work the same way.\n\n\nSemVer.prototype.inc = function (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc('pre', identifier);\n break;\n\n case 'preminor':\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc('pre', identifier);\n break;\n\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0;\n this.inc('patch', identifier);\n this.inc('pre', identifier);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier);\n }\n\n this.inc('pre', identifier);\n break;\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n\n this.patch = 0;\n this.prerelease = [];\n break;\n\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 \"pre\" would become 1.0.0-0 which is the wrong direction.\n\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0];\n } else {\n var i = this.prerelease.length;\n\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++;\n i = -2;\n }\n }\n\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0);\n }\n }\n\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0];\n }\n } else {\n this.prerelease = [identifier, 0];\n }\n }\n\n break;\n\n default:\n throw new Error('invalid increment argument: ' + release);\n }\n\n this.format();\n this.raw = this.version;\n return this;\n};\n\nexports.inc = inc;\n\nfunction inc(version, release, loose, identifier) {\n if (typeof loose === 'string') {\n identifier = loose;\n loose = undefined;\n }\n\n try {\n return new SemVer(version, loose).inc(release, identifier).version;\n } catch (er) {\n return null;\n }\n}\n\nexports.diff = diff;\n\nfunction diff(version1, version2) {\n if (eq(version1, version2)) {\n return null;\n } else {\n var v1 = parse(version1);\n var v2 = parse(version2);\n var prefix = '';\n\n if (v1.prerelease.length || v2.prerelease.length) {\n prefix = 'pre';\n var defaultResult = 'prerelease';\n }\n\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key;\n }\n }\n }\n\n return defaultResult; // may be undefined\n }\n}\n\nexports.compareIdentifiers = compareIdentifiers;\nvar numeric = /^[0-9]+$/;\n\nfunction compareIdentifiers(a, b) {\n var anum = numeric.test(a);\n var bnum = numeric.test(b);\n\n if (anum && bnum) {\n a = +a;\n b = +b;\n }\n\n return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;\n}\n\nexports.rcompareIdentifiers = rcompareIdentifiers;\n\nfunction rcompareIdentifiers(a, b) {\n return compareIdentifiers(b, a);\n}\n\nexports.major = major;\n\nfunction major(a, loose) {\n return new SemVer(a, loose).major;\n}\n\nexports.minor = minor;\n\nfunction minor(a, loose) {\n return new SemVer(a, loose).minor;\n}\n\nexports.patch = patch;\n\nfunction patch(a, loose) {\n return new SemVer(a, loose).patch;\n}\n\nexports.compare = compare;\n\nfunction compare(a, b, loose) {\n return new SemVer(a, loose).compare(new SemVer(b, loose));\n}\n\nexports.compareLoose = compareLoose;\n\nfunction compareLoose(a, b) {\n return compare(a, b, true);\n}\n\nexports.rcompare = rcompare;\n\nfunction rcompare(a, b, loose) {\n return compare(b, a, loose);\n}\n\nexports.sort = sort;\n\nfunction sort(list, loose) {\n return list.sort(function (a, b) {\n return exports.compare(a, b, loose);\n });\n}\n\nexports.rsort = rsort;\n\nfunction rsort(list, loose) {\n return list.sort(function (a, b) {\n return exports.rcompare(a, b, loose);\n });\n}\n\nexports.gt = gt;\n\nfunction gt(a, b, loose) {\n return compare(a, b, loose) > 0;\n}\n\nexports.lt = lt;\n\nfunction lt(a, b, loose) {\n return compare(a, b, loose) < 0;\n}\n\nexports.eq = eq;\n\nfunction eq(a, b, loose) {\n return compare(a, b, loose) === 0;\n}\n\nexports.neq = neq;\n\nfunction neq(a, b, loose) {\n return compare(a, b, loose) !== 0;\n}\n\nexports.gte = gte;\n\nfunction gte(a, b, loose) {\n return compare(a, b, loose) >= 0;\n}\n\nexports.lte = lte;\n\nfunction lte(a, b, loose) {\n return compare(a, b, loose) <= 0;\n}\n\nexports.cmp = cmp;\n\nfunction cmp(a, op, b, loose) {\n switch (op) {\n case '===':\n if (typeof a === 'object') a = a.version;\n if (typeof b === 'object') b = b.version;\n return a === b;\n\n case '!==':\n if (typeof a === 'object') a = a.version;\n if (typeof b === 'object') b = b.version;\n return a !== b;\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose);\n\n case '!=':\n return neq(a, b, loose);\n\n case '>':\n return gt(a, b, loose);\n\n case '>=':\n return gte(a, b, loose);\n\n case '<':\n return lt(a, b, loose);\n\n case '<=':\n return lte(a, b, loose);\n\n default:\n throw new TypeError('Invalid operator: ' + op);\n }\n}\n\nexports.Comparator = Comparator;\n\nfunction Comparator(comp, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n };\n }\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp;\n } else {\n comp = comp.value;\n }\n }\n\n if (!(this instanceof Comparator)) {\n return new Comparator(comp, options);\n }\n\n debug('comparator', comp, options);\n this.options = options;\n this.loose = !!options.loose;\n this.parse(comp);\n\n if (this.semver === ANY) {\n this.value = '';\n } else {\n this.value = this.operator + this.semver.version;\n }\n\n debug('comp', this);\n}\n\nvar ANY = {};\n\nComparator.prototype.parse = function (comp) {\n var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR];\n var m = comp.match(r);\n\n if (!m) {\n throw new TypeError('Invalid comparator: ' + comp);\n }\n\n this.operator = m[1];\n\n if (this.operator === '=') {\n this.operator = '';\n } // if it literally is just '>' or '' then allow anything.\n\n\n if (!m[2]) {\n this.semver = ANY;\n } else {\n this.semver = new SemVer(m[2], this.options.loose);\n }\n};\n\nComparator.prototype.toString = function () {\n return this.value;\n};\n\nComparator.prototype.test = function (version) {\n debug('Comparator.test', version, this.options.loose);\n\n if (this.semver === ANY) {\n return true;\n }\n\n if (typeof version === 'string') {\n version = new SemVer(version, this.options);\n }\n\n return cmp(version, this.operator, this.semver, this.options);\n};\n\nComparator.prototype.intersects = function (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required');\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n };\n }\n\n var rangeTmp;\n\n if (this.operator === '') {\n rangeTmp = new Range(comp.value, options);\n return satisfies(this.value, rangeTmp, options);\n } else if (comp.operator === '') {\n rangeTmp = new Range(this.value, options);\n return satisfies(comp.semver, rangeTmp, options);\n }\n\n var sameDirectionIncreasing = (this.operator === '>=' || this.operator === '>') && (comp.operator === '>=' || comp.operator === '>');\n var sameDirectionDecreasing = (this.operator === '<=' || this.operator === '<') && (comp.operator === '<=' || comp.operator === '<');\n var sameSemVer = this.semver.version === comp.semver.version;\n var differentDirectionsInclusive = (this.operator === '>=' || this.operator === '<=') && (comp.operator === '>=' || comp.operator === '<=');\n var oppositeDirectionsLessThan = cmp(this.semver, '<', comp.semver, options) && (this.operator === '>=' || this.operator === '>') && (comp.operator === '<=' || comp.operator === '<');\n var oppositeDirectionsGreaterThan = cmp(this.semver, '>', comp.semver, options) && (this.operator === '<=' || this.operator === '<') && (comp.operator === '>=' || comp.operator === '>');\n return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;\n};\n\nexports.Range = Range;\n\nfunction Range(range, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n };\n }\n\n if (range instanceof Range) {\n if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {\n return range;\n } else {\n return new Range(range.raw, options);\n }\n }\n\n if (range instanceof Comparator) {\n return new Range(range.value, options);\n }\n\n if (!(this instanceof Range)) {\n return new Range(range, options);\n }\n\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease; // First, split based on boolean or ||\n\n this.raw = range;\n this.set = range.split(/\\s*\\|\\|\\s*/).map(function (range) {\n return this.parseRange(range.trim());\n }, this).filter(function (c) {\n // throw out any that are not relevant for whatever reason\n return c.length;\n });\n\n if (!this.set.length) {\n throw new TypeError('Invalid SemVer Range: ' + range);\n }\n\n this.format();\n}\n\nRange.prototype.format = function () {\n this.range = this.set.map(function (comps) {\n return comps.join(' ').trim();\n }).join('||').trim();\n return this.range;\n};\n\nRange.prototype.toString = function () {\n return this.range;\n};\n\nRange.prototype.parseRange = function (range) {\n var loose = this.options.loose;\n range = range.trim(); // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n\n var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE];\n range = range.replace(hr, hyphenReplace);\n debug('hyphen replace', range); // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n\n range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace);\n debug('comparator trim', range, re[COMPARATORTRIM]); // `~ 1.2.3` => `~1.2.3`\n\n range = range.replace(re[TILDETRIM], tildeTrimReplace); // `^ 1.2.3` => `^1.2.3`\n\n range = range.replace(re[CARETTRIM], caretTrimReplace); // normalize spaces\n\n range = range.split(/\\s+/).join(' '); // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR];\n var set = range.split(' ').map(function (comp) {\n return parseComparator(comp, this.options);\n }, this).join(' ').split(/\\s+/);\n\n if (this.options.loose) {\n // in loose mode, throw out any that are not valid comparators\n set = set.filter(function (comp) {\n return !!comp.match(compRe);\n });\n }\n\n set = set.map(function (comp) {\n return new Comparator(comp, this.options);\n }, this);\n return set;\n};\n\nRange.prototype.intersects = function (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required');\n }\n\n return this.set.some(function (thisComparators) {\n return thisComparators.every(function (thisComparator) {\n return range.set.some(function (rangeComparators) {\n return rangeComparators.every(function (rangeComparator) {\n return thisComparator.intersects(rangeComparator, options);\n });\n });\n });\n });\n}; // Mostly just for testing and legacy API reasons\n\n\nexports.toComparators = toComparators;\n\nfunction toComparators(range, options) {\n return new Range(range, options).set.map(function (comp) {\n return comp.map(function (c) {\n return c.value;\n }).join(' ').trim().split(' ');\n });\n} // comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\n\n\nfunction parseComparator(comp, options) {\n debug('comp', comp, options);\n comp = replaceCarets(comp, options);\n debug('caret', comp);\n comp = replaceTildes(comp, options);\n debug('tildes', comp);\n comp = replaceXRanges(comp, options);\n debug('xrange', comp);\n comp = replaceStars(comp, options);\n debug('stars', comp);\n return comp;\n}\n\nfunction isX(id) {\n return !id || id.toLowerCase() === 'x' || id === '*';\n} // ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0\n\n\nfunction replaceTildes(comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceTilde(comp, options);\n }).join(' ');\n}\n\nfunction replaceTilde(comp, options) {\n var r = options.loose ? re[TILDELOOSE] : re[TILDE];\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('tilde', comp, _, M, m, p, pr);\n var ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';\n } else if (pr) {\n debug('replaceTilde pr', pr);\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0\n ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';\n }\n\n debug('tilde return', ret);\n return ret;\n });\n} // ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0\n// ^1.2.3 --> >=1.2.3 <2.0.0\n// ^1.2.0 --> >=1.2.0 <2.0.0\n\n\nfunction replaceCarets(comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceCaret(comp, options);\n }).join(' ');\n}\n\nfunction replaceCaret(comp, options) {\n debug('caret', comp, options);\n var r = options.loose ? re[CARETLOOSE] : re[CARET];\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('caret', comp, _, M, m, p, pr);\n var ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';\n } else if (isX(p)) {\n if (M === '0') {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';\n } else {\n ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';\n }\n } else if (pr) {\n debug('replaceCaret pr', pr);\n\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + m + '.' + (+p + 1);\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + (+M + 1) + '.0.0';\n }\n } else {\n debug('no pr');\n\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + m + '.' + (+p + 1);\n } else {\n ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p + ' <' + (+M + 1) + '.0.0';\n }\n }\n\n debug('caret return', ret);\n return ret;\n });\n}\n\nfunction replaceXRanges(comp, options) {\n debug('replaceXRanges', comp, options);\n return comp.split(/\\s+/).map(function (comp) {\n return replaceXRange(comp, options);\n }).join(' ');\n}\n\nfunction replaceXRange(comp, options) {\n comp = comp.trim();\n var r = options.loose ? re[XRANGELOOSE] : re[XRANGE];\n return comp.replace(r, function (ret, gtlt, M, m, p, pr) {\n debug('xRange', comp, ret, gtlt, M, m, p, pr);\n var xM = isX(M);\n var xm = xM || isX(m);\n var xp = xm || isX(p);\n var anyX = xp;\n\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0';\n } else {\n // nothing is forbidden\n ret = '*';\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0;\n }\n\n p = 0;\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n // >1.2.3 => >= 1.2.4\n gtlt = '>=';\n\n if (xm) {\n M = +M + 1;\n m = 0;\n p = 0;\n } else {\n m = +m + 1;\n p = 0;\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<';\n\n if (xm) {\n M = +M + 1;\n } else {\n m = +m + 1;\n }\n }\n\n ret = gtlt + M + '.' + m + '.' + p;\n } else if (xm) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';\n } else if (xp) {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';\n }\n\n debug('xRange return', ret);\n return ret;\n });\n} // Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\n\n\nfunction replaceStars(comp, options) {\n debug('replaceStars', comp, options); // Looseness is ignored here. star is always as loose as it gets!\n\n return comp.trim().replace(re[STAR], '');\n} // This function is passed to string.replace(re[HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0\n\n\nfunction hyphenReplace($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) {\n if (isX(fM)) {\n from = '';\n } else if (isX(fm)) {\n from = '>=' + fM + '.0.0';\n } else if (isX(fp)) {\n from = '>=' + fM + '.' + fm + '.0';\n } else {\n from = '>=' + from;\n }\n\n if (isX(tM)) {\n to = '';\n } else if (isX(tm)) {\n to = '<' + (+tM + 1) + '.0.0';\n } else if (isX(tp)) {\n to = '<' + tM + '.' + (+tm + 1) + '.0';\n } else if (tpr) {\n to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;\n } else {\n to = '<=' + to;\n }\n\n return (from + ' ' + to).trim();\n} // if ANY of the sets match ALL of its comparators, then pass\n\n\nRange.prototype.test = function (version) {\n if (!version) {\n return false;\n }\n\n if (typeof version === 'string') {\n version = new SemVer(version, this.options);\n }\n\n for (var i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true;\n }\n }\n\n return false;\n};\n\nfunction testSet(set, version, options) {\n for (var i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false;\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (i = 0; i < set.length; i++) {\n debug(set[i].semver);\n\n if (set[i].semver === ANY) {\n continue;\n }\n\n if (set[i].semver.prerelease.length > 0) {\n var allowed = set[i].semver;\n\n if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {\n return true;\n }\n }\n } // Version has a -pre, but it's not one of the ones we like.\n\n\n return false;\n }\n\n return true;\n}\n\nexports.satisfies = satisfies;\n\nfunction satisfies(version, range, options) {\n try {\n range = new Range(range, options);\n } catch (er) {\n return false;\n }\n\n return range.test(version);\n}\n\nexports.maxSatisfying = maxSatisfying;\n\nfunction maxSatisfying(versions, range, options) {\n var max = null;\n var maxSV = null;\n\n try {\n var rangeObj = new Range(range, options);\n } catch (er) {\n return null;\n }\n\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v;\n maxSV = new SemVer(max, options);\n }\n }\n });\n return max;\n}\n\nexports.minSatisfying = minSatisfying;\n\nfunction minSatisfying(versions, range, options) {\n var min = null;\n var minSV = null;\n\n try {\n var rangeObj = new Range(range, options);\n } catch (er) {\n return null;\n }\n\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v;\n minSV = new SemVer(min, options);\n }\n }\n });\n return min;\n}\n\nexports.minVersion = minVersion;\n\nfunction minVersion(range, loose) {\n range = new Range(range, loose);\n var minver = new SemVer('0.0.0');\n\n if (range.test(minver)) {\n return minver;\n }\n\n minver = new SemVer('0.0.0-0');\n\n if (range.test(minver)) {\n return minver;\n }\n\n minver = null;\n\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i];\n comparators.forEach(function (comparator) {\n // Clone to avoid manipulating the comparator's semver object.\n var compver = new SemVer(comparator.semver.version);\n\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++;\n } else {\n compver.prerelease.push(0);\n }\n\n compver.raw = compver.format();\n\n /* fallthrough */\n\n case '':\n case '>=':\n if (!minver || gt(minver, compver)) {\n minver = compver;\n }\n\n break;\n\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break;\n\n /* istanbul ignore next */\n\n default:\n throw new Error('Unexpected operation: ' + comparator.operator);\n }\n });\n }\n\n if (minver && range.test(minver)) {\n return minver;\n }\n\n return null;\n}\n\nexports.validRange = validRange;\n\nfunction validRange(range, options) {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*';\n } catch (er) {\n return null;\n }\n} // Determine if version is less than all the versions possible in the range\n\n\nexports.ltr = ltr;\n\nfunction ltr(version, range, options) {\n return outside(version, range, '<', options);\n} // Determine if version is greater than all the versions possible in the range.\n\n\nexports.gtr = gtr;\n\nfunction gtr(version, range, options) {\n return outside(version, range, '>', options);\n}\n\nexports.outside = outside;\n\nfunction outside(version, range, hilo, options) {\n version = new SemVer(version, options);\n range = new Range(range, options);\n var gtfn, ltefn, ltfn, comp, ecomp;\n\n switch (hilo) {\n case '>':\n gtfn = gt;\n ltefn = lte;\n ltfn = lt;\n comp = '>';\n ecomp = '>=';\n break;\n\n case '<':\n gtfn = lt;\n ltefn = gte;\n ltfn = gt;\n comp = '<';\n ecomp = '<=';\n break;\n\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"');\n } // If it satisifes the range it is not outside\n\n\n if (satisfies(version, range, options)) {\n return false;\n } // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i];\n var high = null;\n var low = null;\n comparators.forEach(function (comparator) {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0');\n }\n\n high = high || comparator;\n low = low || comparator;\n\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator;\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator;\n }\n }); // If the edge version comparator has a operator then our version\n // isn't outside it\n\n if (high.operator === comp || high.operator === ecomp) {\n return false;\n } // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n\n\n if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) {\n return false;\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false;\n }\n }\n\n return true;\n}\n\nexports.prerelease = prerelease;\n\nfunction prerelease(version, options) {\n var parsed = parse(version, options);\n return parsed && parsed.prerelease.length ? parsed.prerelease : null;\n}\n\nexports.intersects = intersects;\n\nfunction intersects(r1, r2, options) {\n r1 = new Range(r1, options);\n r2 = new Range(r2, options);\n return r1.intersects(r2);\n}\n\nexports.coerce = coerce;\n\nfunction coerce(version) {\n if (version instanceof SemVer) {\n return version;\n }\n\n if (typeof version !== 'string') {\n return null;\n }\n\n var match = version.match(re[COERCE]);\n\n if (match == null) {\n return null;\n }\n\n return parse(match[1] + '.' + (match[2] || '0') + '.' + (match[3] || '0'));\n}","var aes = require('./aes');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar Transform = require('cipher-base');\n\nvar inherits = require('inherits');\n\nvar GHASH = require('./ghash');\n\nvar xor = require('buffer-xor');\n\nvar incr32 = require('./incr32');\n\nfunction xorTest(a, b) {\n var out = 0;\n if (a.length !== b.length) out++;\n var len = Math.min(a.length, b.length);\n\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\n var ghash = new GHASH(ck);\n var len = iv.length;\n var toPad = len % 16;\n ghash.update(iv);\n\n if (toPad) {\n toPad = 16 - toPad;\n ghash.update(Buffer.alloc(toPad, 0));\n }\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}\n\nfunction StreamCipher(mode, key, iv, decrypt) {\n Transform.call(this);\n var h = Buffer.alloc(4, 0);\n this._cipher = new aes.AES(key);\n\n var ck = this._cipher.encryptBlock(h);\n\n this._ghash = new GHASH(ck);\n iv = calcIv(this, iv, ck);\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 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\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0);\n\n this._ghash.update(rump);\n }\n }\n\n this._called = true;\n\n var out = this._mode.encrypt(this, chunk);\n\n if (this._decrypt) {\n this._ghash.update(chunk);\n } else {\n this._ghash.update(out);\n }\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 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 this._authTag = tag;\n\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 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 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\n this._alen += buf.length;\n};\n\nmodule.exports = StreamCipher;","require(\"core-js/modules/es.array.reduce.js\");\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.\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n\n return descriptors;\n};\n\nvar formatRegExp = /%[sdj%]/g;\n\nexports.format = function (f) {\n if (!isString(f)) {\n var objects = [];\n\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\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\n switch (x) {\n case '%s':\n return String(args[i++]);\n\n case '%d':\n return Number(args[i++]);\n\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n\n default:\n return x;\n }\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\n return str;\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.\n\n\nexports.deprecate = function (fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n } // Allow for deprecating things in the process of starting up.\n\n\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\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\n warned = true;\n }\n\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\nvar debugs = {};\nvar debugEnviron;\n\nexports.debuglog = function (set) {\n if (isUndefined(debugEnviron)) debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n\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\n return debugs[set];\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\n/* legacy: obj, showHidden, depth, colors*/\n\n\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n }; // legacy...\n\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n\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 } // set default options\n\n\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}\n\nexports.inspect = inspect; // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\n\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}; // Don't use 'blue' not visible on cmd.exe\n\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\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return \"\\x1B[\" + inspect.colors[style][0] + 'm' + str + \"\\x1B[\" + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\nfunction arrayToHash(array) {\n var hash = {};\n array.forEach(function (val, idx) {\n hash[val] = true;\n });\n return hash;\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 && value && isFunction(value.inspect) && // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect && // 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\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n\n return ret;\n } // Primitive types cannot have properties\n\n\n var primitive = formatPrimitive(ctx, value);\n\n if (primitive) {\n return primitive;\n } // Look up the keys of the object.\n\n\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n } // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n\n\n if (isError(value) && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n } // Some type of object without properties can be shortcutted.\n\n\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\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '',\n array = false,\n braces = ['{', '}']; // Make Array say that they are Array\n\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n } // Make functions say that they are functions\n\n\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n } // Make RegExps say that they are RegExps\n\n\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n } // Make dates with properties first say the date\n\n\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n } // Make error with message first say the error\n\n\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 var output;\n\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 return reduceToSingleString(output, base, braces);\n}\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value)) return ctx.stylize('undefined', 'undefined');\n\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '').replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n\n if (isNumber(value)) return ctx.stylize('' + value, 'number');\n if (isBoolean(value)) return ctx.stylize('' + value, 'boolean'); // For some reason typeof null is \"object\", so special case here.\n\n if (isNull(value)) return ctx.stylize('null', 'null');\n}\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n\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, String(i), true));\n } else {\n output.push('');\n }\n }\n\n keys.forEach(function (key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true));\n }\n });\n return output;\n}\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || {\n value: value[key]\n };\n\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\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\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\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\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n\n name = JSON.stringify('' + key);\n\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, \"\\\\'\").replace(/\\\\\"/g, '\"').replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\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] + (base === '' ? '' : base + '\\n ') + ' ' + output.join(',\\n ') + ' ' + braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\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\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\n\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\n\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\n\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\n\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\n\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\n\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\n\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) && (objectToString(e) === '[object Error]' || e instanceof Error);\n}\n\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\n\nexports.isPrimitive = isPrimitive;\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; // 26 Feb 16:19:34\n\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()), pad(d.getMinutes()), pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n} // log is just a thin wrapper to console.log that prepends a timestamp\n\n\nexports.log = function () {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\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 */\n\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 var keys = Object.keys(add);\n var i = keys.length;\n\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\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') throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn,\n enumerable: false,\n writable: false,\n 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 var args = [];\n\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\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 if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn,\n enumerable: false,\n writable: false,\n configurable: true\n });\n return Object.defineProperties(fn, getOwnPropertyDescriptors(original));\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\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 } // 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\n\n function callbackified() {\n var args = [];\n\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n\n var self = this;\n\n var cb = function cb() {\n return maybeCb.apply(self, arguments);\n }; // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n\n\n original.apply(this, args).then(function (ret) {\n process.nextTick(cb, null, ret);\n }, function (rej) {\n process.nextTick(callbackifyOnRejected, rej, cb);\n });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified, getOwnPropertyDescriptors(original));\n return callbackified;\n}\n\nexports.callbackify = callbackify;","/* eslint-disable node/no-deprecated-api */\n'use strict';\n\nvar buffer = require('buffer');\n\nvar Buffer = buffer.Buffer;\nvar safer = {};\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 = {};\n\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\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\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\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"');\n }\n\n var buf = Buffer(size);\n\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\n return buf;\n };\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength;\n } catch (e) {// 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\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength;\n }\n}\n\nmodule.exports = safer;","'use strict';\n\nvar utils = require('../utils');\n\nvar common = require('../common');\n\nvar shaCommon = require('./common');\n\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;\nvar BlockHash = common.BlockHash;\nvar sha256_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\nfunction SHA256() {\n if (!(this instanceof SHA256)) return new SHA256();\n BlockHash.call(this);\n this.h = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19];\n this.k = sha256_K;\n this.W = new Array(64);\n}\n\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\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 }\n\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\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 assert(this.k.length === W.length);\n\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') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big');\n};","'use strict';\n\nvar inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\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 var state = this._reporterState;\n return {\n obj: state.obj,\n pathLen: state.path.length\n };\n};\n\nReporter.prototype.restore = function restore(data) {\n var state = this._reporterState;\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 var state = this._reporterState;\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n var state = this._reporterState;\n this.exitKey(index);\n if (state.obj !== null) 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 var state = this._reporterState;\n var prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n var state = this._reporterState;\n var now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n var err;\n var state = this._reporterState;\n var inherited = msg instanceof ReporterError;\n\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) throw err;\n if (!inherited) state.errors.push(err);\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n var state = this._reporterState;\n if (!state.options.partial) return result;\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}\n\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace) 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\n return this;\n};","module.exports = function () {\n throw new Error('Readable.from is not available in the browser');\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/* */\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/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\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';\n\nvar utils = require('../utils');\n\nvar BN = require('bn.js');\n\nvar inherits = require('inherits');\n\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 Base.call(this, 'edwards', conf);\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 assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\n\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA) return num.redNeg();else return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC) return num;else return this.c.redMul(num);\n}; // Just for compatibility with Short curve\n\n\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) x = x.toRed(this.red);\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 var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) throw new Error('invalid point');\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd) y = y.redNeg();\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) y = y.toRed(this.red); // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n\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) throw new Error('invalid point');else return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0) throw new Error('invalid point');\n if (x.fromRed().isOdd() !== odd) x = x.redNeg();\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity()) return true; // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n\n point.normalize();\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 return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n\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) this.x = this.x.toRed(this.curve.red);\n if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red) this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one; // Use extended coordinates\n\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne) this.t = this.t.redMul(this.z.redInvm());\n }\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()) return '';\n return '';\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 && (this.y.cmp(this.z) === 0 || 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 // A = X1^2\n var a = this.x.redSqr(); // B = Y1^2\n\n var b = this.y.redSqr(); // C = 2 * Z1^2\n\n var c = this.z.redSqr();\n c = c.redIAdd(c); // D = a * A\n\n var d = this.curve._mulA(a); // E = (X1 + Y1)^2 - A - B\n\n\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b); // G = D + B\n\n var g = d.redAdd(b); // F = G - C\n\n var f = g.redSub(c); // H = D - B\n\n var h = d.redSub(b); // X3 = E * F\n\n var nx = e.redMul(f); // Y3 = G * H\n\n var ny = g.redMul(h); // T3 = E * H\n\n var nt = e.redMul(h); // Z3 = F * G\n\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 // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr(); // C = X1^2\n\n var c = this.x.redSqr(); // D = Y1^2\n\n var d = this.y.redSqr();\n var nx;\n var ny;\n var nz;\n\n if (this.curve.twisted) {\n // E = a * C\n var e = this.curve._mulA(c); // F = E + D\n\n\n var f = e.redAdd(d);\n\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two)); // Y3 = F * (E - D)\n\n ny = f.redMul(e.redSub(d)); // Z3 = F^2 - 2 * F\n\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n var h = this.z.redSqr(); // J = F - 2 * H\n\n var j = f.redSub(h).redISub(h); // X3 = (B-C-D)*J\n\n nx = b.redSub(c).redISub(d).redMul(j); // Y3 = F * (E - D)\n\n ny = f.redMul(e.redSub(d)); // Z3 = F * J\n\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n var e = c.redAdd(d); // H = (c * Z1)^2\n\n var h = this.curve._mulC(this.z).redSqr(); // J = E - 2 * H\n\n\n var j = e.redSub(h).redSub(h); // X3 = c * (B - E) * J\n\n nx = this.curve._mulC(b.redISub(e)).redMul(j); // Y3 = c * E * (C - D)\n\n ny = this.curve._mulC(e).redMul(c.redISub(d)); // Z3 = E * J\n\n nz = e.redMul(j);\n }\n\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity()) return this; // Double in extended coordinates\n\n if (this.curve.extended) return this._extDbl();else 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 // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x)); // B = (Y1 + X1) * (Y2 + X2)\n\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x)); // C = T1 * k * T2\n\n var c = this.t.redMul(this.curve.dd).redMul(p.t); // D = Z1 * 2 * Z2\n\n var d = this.z.redMul(p.z.redAdd(p.z)); // E = B - A\n\n var e = b.redSub(a); // F = D - C\n\n var f = d.redSub(c); // G = D + C\n\n var g = d.redAdd(c); // H = B + A\n\n var h = b.redAdd(a); // X3 = E * F\n\n var nx = e.redMul(f); // Y3 = G * H\n\n var ny = g.redMul(h); // T3 = E * H\n\n var nt = e.redMul(h); // Z3 = F * G\n\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 // A = Z1 * Z2\n var a = this.z.redMul(p.z); // B = A^2\n\n var b = a.redSqr(); // C = X1 * X2\n\n var c = this.x.redMul(p.x); // D = Y1 * Y2\n\n var d = this.y.redMul(p.y); // E = d * C * D\n\n var e = this.curve.d.redMul(c).redMul(d); // F = B - E\n\n var f = b.redSub(e); // G = B + E\n\n var g = b.redAdd(e); // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n\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\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c))); // Z3 = F * G\n\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c)); // Z3 = c * F * G\n\n nz = this.curve._mulC(f).redMul(g);\n }\n\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity()) return p;\n if (p.isInfinity()) return this;\n if (this.curve.extended) return this._extAdd(p);else return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k)) return this.curve._fixedNafMul(this, k);else 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) return this; // Normalize coordinates\n\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t) 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(), this.y, this.z, 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 || this.getX().cmp(other.getX()) === 0 && 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) return true;\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0) return false;\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0) return true;\n }\n}; // Compatibility with BaseCurve\n\n\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n this.type = this.options.type;\n this.blockSize = 8;\n\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\n\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {// Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0) return [];\n if (this.type === 'decrypt') return this._updateDecrypt(data);else 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\n for (var i = 0; i < min; i++) {\n this.buffer[this.bufferOff + i] = data[off + i];\n }\n\n this.bufferOff += min; // Shift next\n\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n\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 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 if (this.bufferOff === this.buffer.length) outputOff += this._flushBuffer(out, outputOff);\n } // Write blocks\n\n\n var max = data.length - (data.length - inputOff) % this.blockSize;\n\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n\n outputOff += this.blockSize;\n } // Queue rest\n\n\n for (; inputOff < data.length; inputOff++, this.bufferOff++) {\n this.buffer[this.bufferOff] = data[inputOff];\n }\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize); // TODO(indutny): optimize it, this is far from optimal\n\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n } // Buffer rest of the input\n\n\n inputOff += this._buffer(data, inputOff);\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer) first = this.update(buffer);\n var last;\n if (this.type === 'encrypt') last = this._finalEncrypt();else last = this._finalDecrypt();\n if (first) return first.concat(last);else return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0) return false;\n\n while (off < buffer.length) {\n buffer[off++] = 0;\n }\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff)) return [];\n var out = new Array(this.blockSize);\n\n this._update(this.buffer, 0, out, 0);\n\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\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};","var asn1 = require('./asn1');\n\nvar aesid = require('./aesid.json');\n\nvar fixProc = require('./fixProc');\n\nvar ciphers = require('browserify-aes');\n\nvar compat = require('pbkdf2');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nmodule.exports = parseKeys;\n\nfunction parseKeys(buffer) {\n var password;\n\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase;\n buffer = buffer.key;\n }\n\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer);\n }\n\n var stripped = fixProc(buffer, password);\n var type = stripped.tag;\n var data = stripped.data;\n var subtype, ndata;\n\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo;\n // falls through\n\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der');\n }\n\n subtype = ndata.algorithm.algorithm.join('.');\n\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der');\n\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey;\n return {\n type: 'ec',\n data: ndata\n };\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\n default:\n throw new Error('unknown key id ' + subtype);\n }\n\n // throw new Error('unknown key type ' + type)\n\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der');\n data = decrypt(data, password);\n // falls through\n\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der');\n subtype = ndata.algorithm.algorithm.join('.');\n\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der');\n\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\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\n default:\n throw new Error('unknown key id ' + subtype);\n }\n\n // throw new Error('unknown key type ' + type)\n\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der');\n\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der');\n\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n };\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\n default:\n throw new Error('unknown key type ' + type);\n }\n}\n\nparseKeys.signature = asn1.signature;\n\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}","'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');","var Buffer = require('safe-buffer').Buffer;\n\nvar createHash = require('create-hash');\n\nvar stream = require('readable-stream');\n\nvar inherits = require('inherits');\n\nvar sign = require('./sign');\n\nvar verify = require('./verify');\n\nvar algorithms = require('./algorithms.json');\n\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 var data = algorithms[algorithm];\n if (!data) throw new Error('Unknown message digest');\n this._hashType = data.hash;\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\n\ninherits(Sign, stream.Writable);\n\nSign.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n\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\n return this;\n};\n\nSign.prototype.sign = function signMethod(key, enc) {\n this.end();\n\n var hash = this._hash.digest();\n\n var sig = sign(hash, key, this._hashType, this._signType, this._tag);\n return enc ? sig.toString(enc) : sig;\n};\n\nfunction Verify(algorithm) {\n stream.Writable.call(this);\n var data = algorithms[algorithm];\n if (!data) throw new Error('Unknown message digest');\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\n\ninherits(Verify, stream.Writable);\n\nVerify.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n\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\n return this;\n};\n\nVerify.prototype.verify = function verifyMethod(key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc);\n this.end();\n\n var hash = this._hash.digest();\n\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};","'use strict';\n\nvar inherits = require('inherits');\n\nvar Reporter = require('../base/reporter').Reporter;\n\nvar Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n\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}\n\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n } // Or accept compatible API\n\n\n var isCompatible = typeof data === 'object' && Buffer.isBuffer(data.base) && data.constructor.name === 'DecoderBuffer' && typeof data.offset === 'number' && typeof data.length === 'number' && typeof data.save === 'function' && typeof data.restore === 'function' && typeof data.isEmpty === 'function' && typeof data.readUInt8 === 'function' && typeof data.skip === 'function' && typeof data.raw === 'function';\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return {\n offset: this.offset,\n reporter: Reporter.prototype.save.call(this)\n };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n var res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\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) return this.base.readUInt8(this.offset++, true);else return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length)) return this.error(fail || 'DecoderBuffer overrun');\n var res = new DecoderBuffer(this.base); // Share reporter state\n\n res._reporterState = this._reporterState;\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)) 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)) 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}\n\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n } // Or accept compatible API\n\n\n var isCompatible = typeof data === 'object' && data.constructor.name === 'EncoderBuffer' && typeof data.length === 'number' && typeof data.join === 'function';\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out) out = Buffer.alloc(this.length);\n if (!offset) offset = 0;\n if (this.length === 0) 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') out[offset] = this.value;else if (typeof this.value === 'string') out.write(this.value, offset);else if (Buffer.isBuffer(this.value)) this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};","var timespan = require('./lib/timespan');\n\nvar PS_SUPPORTED = require('./lib/psSupported');\n\nvar jws = require('jws');\n\nvar includes = require('lodash.includes');\n\nvar isBoolean = require('lodash.isboolean');\n\nvar isInteger = require('lodash.isinteger');\n\nvar isNumber = require('lodash.isnumber');\n\nvar isPlainObject = require('lodash.isplainobject');\n\nvar isString = require('lodash.isstring');\n\nvar once = require('lodash.once');\n\nvar SUPPORTED_ALGS = ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'HS256', 'HS384', 'HS512', 'none'];\n\nif (PS_SUPPORTED) {\n SUPPORTED_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n}\n\nvar sign_options_schema = {\n expiresIn: {\n isValid: function isValid(value) {\n return isInteger(value) || isString(value) && value;\n },\n message: '\"expiresIn\" should be a number of seconds or string representing a timespan'\n },\n notBefore: {\n isValid: function isValid(value) {\n return isInteger(value) || isString(value) && value;\n },\n message: '\"notBefore\" should be a number of seconds or string representing a timespan'\n },\n audience: {\n isValid: function isValid(value) {\n return isString(value) || Array.isArray(value);\n },\n message: '\"audience\" must be a string or array'\n },\n algorithm: {\n isValid: includes.bind(null, SUPPORTED_ALGS),\n message: '\"algorithm\" must be a valid string enum value'\n },\n header: {\n isValid: isPlainObject,\n message: '\"header\" must be an object'\n },\n encoding: {\n isValid: isString,\n message: '\"encoding\" must be a string'\n },\n issuer: {\n isValid: isString,\n message: '\"issuer\" must be a string'\n },\n subject: {\n isValid: isString,\n message: '\"subject\" must be a string'\n },\n jwtid: {\n isValid: isString,\n message: '\"jwtid\" must be a string'\n },\n noTimestamp: {\n isValid: isBoolean,\n message: '\"noTimestamp\" must be a boolean'\n },\n keyid: {\n isValid: isString,\n message: '\"keyid\" must be a string'\n },\n mutatePayload: {\n isValid: isBoolean,\n message: '\"mutatePayload\" must be a boolean'\n }\n};\nvar registered_claims_schema = {\n iat: {\n isValid: isNumber,\n message: '\"iat\" should be a number of seconds'\n },\n exp: {\n isValid: isNumber,\n message: '\"exp\" should be a number of seconds'\n },\n nbf: {\n isValid: isNumber,\n message: '\"nbf\" should be a number of seconds'\n }\n};\n\nfunction validate(schema, allowUnknown, object, parameterName) {\n if (!isPlainObject(object)) {\n throw new Error('Expected \"' + parameterName + '\" to be a plain object.');\n }\n\n Object.keys(object).forEach(function (key) {\n var validator = schema[key];\n\n if (!validator) {\n if (!allowUnknown) {\n throw new Error('\"' + key + '\" is not allowed in \"' + parameterName + '\"');\n }\n\n return;\n }\n\n if (!validator.isValid(object[key])) {\n throw new Error(validator.message);\n }\n });\n}\n\nfunction validateOptions(options) {\n return validate(sign_options_schema, false, options, 'options');\n}\n\nfunction validatePayload(payload) {\n return validate(registered_claims_schema, true, payload, 'payload');\n}\n\nvar options_to_payload = {\n 'audience': 'aud',\n 'issuer': 'iss',\n 'subject': 'sub',\n 'jwtid': 'jti'\n};\nvar options_for_objects = ['expiresIn', 'notBefore', 'noTimestamp', 'audience', 'issuer', 'subject', 'jwtid'];\n\nmodule.exports = function (payload, secretOrPrivateKey, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n } else {\n options = options || {};\n }\n\n var isObjectPayload = typeof payload === 'object' && !Buffer.isBuffer(payload);\n var header = Object.assign({\n alg: options.algorithm || 'HS256',\n typ: isObjectPayload ? 'JWT' : undefined,\n kid: options.keyid\n }, options.header);\n\n function failure(err) {\n if (callback) {\n return callback(err);\n }\n\n throw err;\n }\n\n if (!secretOrPrivateKey && options.algorithm !== 'none') {\n return failure(new Error('secretOrPrivateKey must have a value'));\n }\n\n if (typeof payload === 'undefined') {\n return failure(new Error('payload is required'));\n } else if (isObjectPayload) {\n try {\n validatePayload(payload);\n } catch (error) {\n return failure(error);\n }\n\n if (!options.mutatePayload) {\n payload = Object.assign({}, payload);\n }\n } else {\n var invalid_options = options_for_objects.filter(function (opt) {\n return typeof options[opt] !== 'undefined';\n });\n\n if (invalid_options.length > 0) {\n return failure(new Error('invalid ' + invalid_options.join(',') + ' option for ' + typeof payload + ' payload'));\n }\n }\n\n if (typeof payload.exp !== 'undefined' && typeof options.expiresIn !== 'undefined') {\n return failure(new Error('Bad \"options.expiresIn\" option the payload already has an \"exp\" property.'));\n }\n\n if (typeof payload.nbf !== 'undefined' && typeof options.notBefore !== 'undefined') {\n return failure(new Error('Bad \"options.notBefore\" option the payload already has an \"nbf\" property.'));\n }\n\n try {\n validateOptions(options);\n } catch (error) {\n return failure(error);\n }\n\n var timestamp = payload.iat || Math.floor(Date.now() / 1000);\n\n if (options.noTimestamp) {\n delete payload.iat;\n } else if (isObjectPayload) {\n payload.iat = timestamp;\n }\n\n if (typeof options.notBefore !== 'undefined') {\n try {\n payload.nbf = timespan(options.notBefore, timestamp);\n } catch (err) {\n return failure(err);\n }\n\n if (typeof payload.nbf === 'undefined') {\n return failure(new Error('\"notBefore\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n }\n\n if (typeof options.expiresIn !== 'undefined' && typeof payload === 'object') {\n try {\n payload.exp = timespan(options.expiresIn, timestamp);\n } catch (err) {\n return failure(err);\n }\n\n if (typeof payload.exp === 'undefined') {\n return failure(new Error('\"expiresIn\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n }\n\n Object.keys(options_to_payload).forEach(function (key) {\n var claim = options_to_payload[key];\n\n if (typeof options[key] !== 'undefined') {\n if (typeof payload[claim] !== 'undefined') {\n return failure(new Error('Bad \"options.' + key + '\" option. The payload already has an \"' + claim + '\" property.'));\n }\n\n payload[claim] = options[key];\n }\n });\n var encoding = options.encoding || 'utf8';\n\n if (typeof callback === 'function') {\n callback = callback && once(callback);\n jws.createSign({\n header: header,\n privateKey: secretOrPrivateKey,\n payload: payload,\n encoding: encoding\n }).once('error', callback).once('done', function (signature) {\n callback(null, signature);\n });\n } else {\n return jws.sign({\n header: header,\n payload: payload,\n secret: secretOrPrivateKey,\n encoding: encoding\n });\n }\n};","'use strict';\n\nvar inherits = require('inherits');\n\nvar DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\n\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n var buf = DEREncoder.prototype.encode.call(this, data);\n var p = buf.toString('base64');\n var out = ['-----BEGIN ' + options.label + '-----'];\n\n for (var i = 0; i < p.length; i += 64) {\n out.push(p.slice(i, i + 64));\n }\n\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};","'use strict';\n\nexports.byteLength = byteLength;\nexports.toByteArray = toByteArray;\nexports.fromByteArray = fromByteArray;\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n} // Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\n\n\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\n\nfunction getLens(b64) {\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4');\n } // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n\n\n var validLen = b64.indexOf('=');\n if (validLen === -1) validLen = len;\n var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n return [validLen, placeHoldersLen];\n} // base64 is 4/3 + up to two characters of the original data\n\n\nfunction byteLength(b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\n\nfunction _byteLength(b64, validLen, placeHoldersLen) {\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\n\nfunction toByteArray(b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n var curByte = 0; // if there are placeholders, only get up to the last complete 4 chars\n\n var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n var i;\n\n for (i = 0; i < len; i += 4) {\n tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n arr[curByte++] = tmp >> 16 & 0xFF;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 1) {\n tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n return arr;\n}\n\nfunction tripletToBase64(num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];\n}\n\nfunction encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF);\n output.push(tripletToBase64(tmp));\n }\n\n return output.join('');\n}\n\nfunction fromByteArray(uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n // go through the array every three bytes, we'll deal with trailing stuff later\n\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n } // pad the end with zeros, but make sure to not forget the extra bytes\n\n\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '==');\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '=');\n }\n\n return parts.join('');\n}","/**\n * Based on Kendo UI Core expression code \n */\n'use strict';\n\nrequire(\"core-js/modules/es.array.reduce.js\");\n\nfunction Cache(maxSize) {\n this._maxSize = maxSize;\n this.clear();\n}\n\nCache.prototype.clear = function () {\n this._size = 0;\n this._values = Object.create(null);\n};\n\nCache.prototype.get = function (key) {\n return this._values[key];\n};\n\nCache.prototype.set = function (key, value) {\n this._size >= this._maxSize && this.clear();\n if (!(key in this._values)) this._size++;\n return this._values[key] = value;\n};\n\nvar SPLIT_REGEX = /[^.^\\]^[]+|(?=\\[\\]|\\.\\.)/g,\n DIGIT_REGEX = /^\\d+$/,\n LEAD_DIGIT_REGEX = /^\\d/,\n SPEC_CHAR_REGEX = /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g,\n CLEAN_QUOTES_REGEX = /^\\s*(['\"]?)(.*?)(\\1)\\s*$/,\n MAX_CACHE_SIZE = 512;\nvar pathCache = new Cache(MAX_CACHE_SIZE),\n setCache = new Cache(MAX_CACHE_SIZE),\n getCache = new Cache(MAX_CACHE_SIZE);\nvar config;\nmodule.exports = {\n Cache: Cache,\n split: split,\n normalizePath: normalizePath,\n setter: function setter(path) {\n var parts = normalizePath(path);\n return setCache.get(path) || setCache.set(path, function setter(obj, value) {\n var index = 0;\n var len = parts.length;\n var data = obj;\n\n while (index < len - 1) {\n var part = parts[index];\n\n if (part === '__proto__' || part === 'constructor' || part === 'prototype') {\n return obj;\n }\n\n data = data[parts[index++]];\n }\n\n data[parts[index]] = value;\n });\n },\n getter: function getter(path, safe) {\n var parts = normalizePath(path);\n return getCache.get(path) || getCache.set(path, function getter(data) {\n var index = 0,\n len = parts.length;\n\n while (index < len) {\n if (data != null || !safe) data = data[parts[index++]];else return;\n }\n\n return data;\n });\n },\n join: function join(segments) {\n return segments.reduce(function (path, part) {\n return path + (isQuoted(part) || DIGIT_REGEX.test(part) ? '[' + part + ']' : (path ? '.' : '') + part);\n }, '');\n },\n forEach: function forEach(path, cb, thisArg) {\n _forEach(Array.isArray(path) ? path : split(path), cb, thisArg);\n }\n};\n\nfunction normalizePath(path) {\n return pathCache.get(path) || pathCache.set(path, split(path).map(function (part) {\n return part.replace(CLEAN_QUOTES_REGEX, '$2');\n }));\n}\n\nfunction split(path) {\n return path.match(SPLIT_REGEX);\n}\n\nfunction _forEach(parts, iter, thisArg) {\n var len = parts.length,\n part,\n idx,\n isArray,\n isBracket;\n\n for (idx = 0; idx < len; idx++) {\n part = parts[idx];\n\n if (part) {\n if (shouldBeQuoted(part)) {\n part = '\"' + part + '\"';\n }\n\n isBracket = isQuoted(part);\n isArray = !isBracket && /^\\d+$/.test(part);\n iter.call(thisArg, part, isBracket, isArray, idx, parts);\n }\n }\n}\n\nfunction isQuoted(str) {\n return typeof str === 'string' && str && [\"'\", '\"'].indexOf(str.charAt(0)) !== -1;\n}\n\nfunction hasLeadingNumber(part) {\n return part.match(LEAD_DIGIT_REGEX) && !part.match(DIGIT_REGEX);\n}\n\nfunction hasSpecialChars(part) {\n return SPEC_CHAR_REGEX.test(part);\n}\n\nfunction shouldBeQuoted(part) {\n return !isQuoted(part) && (hasLeadingNumber(part) || hasSpecialChars(part));\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};","'use strict';\n\nvar utils = require('./utils');\n\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data)) {\n return data;\n }\n\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n\n return data;\n }],\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) {\n /* Ignore */\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n maxContentLength: -1,\n maxBodyLength: -1,\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\nmodule.exports = defaults;","'use strict';\n\nvar utils = require('./../utils'); // Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\n\n\nvar ignoreDuplicateOf = ['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent'];\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\n\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) {\n return parsed;\n }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n return parsed;\n};","import axios from 'axios';\nimport * as Cookies from 'js-cookie';\nimport jwt from 'jsonwebtoken';\nimport { logout } from './auth';\n\nconst sessionThreshold = +(process.env.GATSBY_SESSION_THRESHOLD || 1800);\n\naxios.defaults.baseURL =\n process.env.GATSBY_BASE_API_URL || 'http://localhost:4000/api/v1/';\n\nexport const AxiosPublic = axios.create({\n headers: {\n Accept: 'application/json',\n 'Content-type': 'application/json',\n },\n});\n\nexport const AxiosPrivate = axios.create({\n headers: {\n Accept: 'application/json',\n 'Content-type': 'application/json',\n },\n});\n\nAxiosPrivate.interceptors.request.use(\n async config => {\n try {\n const orsCookie = Cookies.getJSON('ORS');\n\n if (!orsCookie) {\n await logout();\n }\n\n const { profile, refreshToken } = orsCookie;\n let accessToken = orsCookie.accessToken;\n\n const now = new Date().getTime();\n const tokenExpiry = jwt.decode(accessToken).exp * 1000; // both access and refresh has the same exp property\n const tokenTimeLeft = tokenExpiry - now;\n const refreshTokenExpiry = jwt.decode(refreshToken).exp * 1000;\n const refreshTokenTimeLeft = refreshTokenExpiry - now;\n\n // Session Expired\n if (tokenTimeLeft <= 0 && refreshTokenTimeLeft <= 0) {\n await logout(true);\n }\n // Access Token has expired while refresh token still valid\n else if (tokenTimeLeft <= sessionThreshold && refreshTokenTimeLeft > 0) {\n const refreshResponse = await AxiosPublic.post('/auth/refresh', {\n refreshToken,\n });\n const {\n accessToken: newAccessToken,\n refreshToken: newRefreshToken,\n } = refreshResponse.data;\n const refreshExpiry = jwt.decode(newRefreshToken).exp;\n Cookies.set(\n 'ORS',\n {\n accessToken: newAccessToken,\n refreshToken: newRefreshToken,\n profile,\n },\n {\n expires: new Date(refreshExpiry * 1000),\n },\n );\n\n accessToken = newAccessToken;\n }\n\n const authHeader = config.headers['authorization'];\n if (!authHeader) {\n config.headers['authorization'] = `bearer ${accessToken}`;\n }\n return config;\n } catch (e) {\n await logout(true);\n }\n },\n error => {\n Promise.reject(error);\n },\n);\n\nAxiosPublic.interceptors.response.use(response => response.data);\nAxiosPrivate.interceptors.response.use(response => response.data);\n","module.exports = require('./lib/_stream_duplex.js');","import { useState } from 'react';\nimport { AxiosPublic } from '../utils/axios';\nimport { getRelatedReviews } from '../utils/reviews';\nimport { ReviewQueryParameters } from '@mvrb-frontend/shared-ui';\n\nexport const useReviews = () => {\n const [hasReviewError, setError] = useState(false);\n const [isFetchingReviews, setFetching] = useState(false);\n\n return {\n isFetchingReviews,\n hasReviewError,\n getReview: async (id, queryParams?: ReviewQueryParameters) => {\n try {\n setFetching(true);\n const response = await AxiosPublic.get(`/reviews/${id}`, {\n params: queryParams,\n });\n return response;\n } catch (e) {\n setError(e);\n } finally {\n setFetching(false);\n }\n },\n getReviews: async filter => {\n try {\n setFetching(true);\n const response = await AxiosPublic.get(`/reviews${filter}`);\n return response;\n } catch (e) {\n setError(e);\n } finally {\n setFetching(false);\n }\n },\n getRelatedReviews: async (id, isPublic = true) => {\n try {\n const res = await getRelatedReviews(id, isPublic);\n return res;\n } catch (e) {\n setError(e);\n }\n },\n getBoardReviews: async (boardId, filter) => {\n try {\n setFetching(true);\n const response = await AxiosPublic.get(\n `/boards/${boardId}/reviews${filter}`,\n );\n return response;\n } catch (e) {\n setError(e);\n } finally {\n setFetching(false);\n }\n },\n };\n};\n","import { useState } from 'react';\nimport { BoardsQueryParameter } from '@mvrb-frontend/shared-ui';\nimport { AxiosPublic } from '../utils/axios';\n\nconst BASE_URL = 'boards';\n\nexport const useBoards = () => {\n const [hasBoardError, setError] = useState(false);\n const [isFetchingBoard, setFetchingBoard] = useState(false);\n const [isFetchingBoards, setFetching] = useState(false);\n\n return {\n isFetchingBoards,\n isFetchingBoard,\n hasBoardError,\n getBoards: async (queryParams?: BoardsQueryParameter) => {\n try {\n setFetching(true);\n const response = await AxiosPublic.get(`/${BASE_URL}`, {\n params: queryParams,\n });\n setFetching(false);\n if(queryParams?.includePosition){\n response.data.sort((a, b)=>{\n return a.position - b.position;\n })\n }\n return response;\n } catch (e) {\n setFetching(false);\n setError(true);\n }\n },\n getBoard: async (abbr: string) => {\n try {\n setFetchingBoard(true);\n const response = await AxiosPublic.get(`/${BASE_URL}/abbr/${abbr}`);\n setFetching(false);\n return response;\n } catch (e) {\n setFetching(false);\n setError(true);\n }\n },\n };\n};\n","import { useState } from 'react';\n\nimport { AxiosPublic } from '../utils/axios';\n\nexport const useOrganizations = () => {\n const [hasOrgError, setError] = useState(false);\n const [isFetchingOrgs, setFetching] = useState(false);\n\n return {\n isFetchingOrgs,\n hasOrgError,\n getOrganizations: async () => {\n try {\n setFetching(true);\n const response = await AxiosPublic.get(\n '/organizations?orderBy=name&order=ASC',\n );\n setFetching(false);\n return response;\n } catch (e) {\n setFetching(false);\n setError(e);\n }\n },\n };\n};\n","import { useState } from 'react';\nimport { AxiosPublic, AxiosPrivate } from '../utils/axios';\n\nexport const useReviewDownloads = () => {\n const [isFetching, setFetching] = useState(false);\n\n const downloadComments = async (\n reviewId: string,\n format: string,\n published: boolean,\n ) => {\n try {\n setFetching(true);\n const response = published\n ? await AxiosPublic.get(\n `/comments/export-published/${reviewId}?format=${format}`,\n )\n : await AxiosPrivate.get(`/comments/export/${reviewId}`);\n\n return response.data;\n } catch (e) {\n setFetching(false);\n } finally {\n setFetching(false);\n }\n };\n\n const enqueueDownloadAttachments = async (\n reviewId: string,\n dataFormat: string,\n includeComments = false,\n ) => {\n try {\n setFetching(true);\n const { data } = await AxiosPrivate.post(\n `/comments/download/${reviewId}`,\n { includeComments: includeComments, dataFormat: dataFormat },\n );\n\n return data.referenceId;\n } catch (e) {\n setFetching(false);\n } finally {\n setFetching(false);\n }\n };\n\n const downloadAttachments = async (referenceId: string) => {\n try {\n setFetching(true);\n const { data } = await AxiosPrivate.get(\n `/comments/download/${referenceId}`,\n );\n return data;\n } catch (e) {\n setFetching(false);\n } finally {\n setFetching(false);\n }\n };\n\n return {\n isFetching,\n downloadComments,\n enqueueDownloadAttachments,\n downloadAttachments,\n };\n};\n","class ResponseErrorType {\n error: string;\n message: string[];\n\n constructor(errorType: any) {\n this.error = errorType.error || '';\n this.message = errorType.message\n ? Array.isArray(errorType.message)\n ? errorType.message\n : [errorType.message]\n : '';\n }\n}\n\nclass ResponseErrorDetails {\n class: number;\n code: string;\n lineNumber: number;\n message: string;\n name: string;\n number: number;\n\n constructor(details: any) {\n this.class = details.class || -1;\n this.code = details.code || '';\n this.lineNumber = details.lineNumber || -1;\n this.message = details.message || '';\n this.name = details.name || '';\n this.number = details.number || -1;\n }\n\n getMessage(): string {\n return `${this.name} ${this.message}`;\n }\n}\n\nclass ResponseData {\n errorDetails?: ResponseErrorDetails;\n errorMessage: string;\n errorType: ResponseErrorType;\n\n constructor(data: any) {\n this.errorDetails = data.errorDetails\n ? new ResponseErrorDetails(data.errorDetails)\n : undefined;\n this.errorMessage = data.errorMessage || '';\n this.errorType = new ResponseErrorType(data.errorType);\n }\n\n getMessages(): string[] {\n if (process.env.NODE_ENV !== 'production' && this.errorDetails) {\n return [...this.errorType.message, this.errorDetails.getMessage()];\n } else {\n return this.errorType.message;\n }\n }\n\n getErrorType(): string {\n return this.errorType.error;\n }\n}\n\nclass Response {\n config: any;\n data: ResponseData;\n\n constructor(response: any) {\n this.config = response.config || {};\n this.data = new ResponseData(response.data);\n }\n\n getMessages(): string[] {\n return this.data.getMessages();\n }\n\n getErrorType(): string {\n return this.data.getErrorType();\n }\n}\n\ninterface IResponseException {\n config: any;\n isAxiosError: boolean;\n request: any;\n response?: Response;\n\n getErrorMessage(): string[];\n}\n\nexport default class ResponseException implements IResponseException {\n config: any;\n isAxiosError: boolean;\n request: any;\n response?: Response;\n message: string;\n\n constructor(exception: any) {\n this.config = exception.config || {};\n this.isAxiosError = exception.isAxiosError;\n this.request = exception.request || {};\n this.message = exception.message || null;\n this.response = exception.response\n ? new Response(exception.response)\n : undefined;\n }\n\n getErrorMessage(): string[] {\n return this.response ? this.response.getMessages() : [this.message];\n }\n\n getErrorType(): string {\n return this.response ? this.response.getErrorType() : '';\n }\n}\n","import { useState } from 'react';\n\nimport { AxiosPrivate } from '../utils/axios';\nimport ResponseException from '../models/ResponseException';\n\nexport const useUploadResponseAttachments = () => {\n const [uploadingErrors, setUploadErrors] = useState([]);\n const [isUploadingAttachments, setUploading] = useState(false);\n\n return {\n isUploadingAttachments,\n uploadingErrors,\n uploadAttachments: async (file: any, name: string) => {\n try {\n setUploading(true);\n setUploadErrors([]);\n const formData = new FormData();\n formData.append('file', file);\n formData.append('name', name);\n const res = await AxiosPrivate.post('/response-attachments', formData, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n });\n return res;\n } catch (e) {\n setUploadErrors(new ResponseException(e).getErrorMessage());\n } finally {\n setUploading(false);\n }\n },\n };\n};\n","import { useState } from 'react';\n\nimport { AxiosPrivate } from '../utils/axios';\nimport ResponseException from '../models/ResponseException';\n\nexport const useResponses = () => {\n const [resErrors, setResErrors] = useState([]);\n const [isSubmitingResponse, setSubmiting] = useState(false);\n\n return {\n isSubmitingResponse,\n resErrors,\n submitResponses: async values => {\n try {\n setSubmiting(true);\n const res = await AxiosPrivate.post('/responses/reply', values);\n return res;\n } catch (e) {\n setResErrors(new ResponseException(e).getErrorMessage());\n } finally {\n setSubmiting(false);\n }\n },\n };\n};\n","import {\n isJsonString,\n parsePlainTextToJSON,\n} from '@mvrb-frontend/shared-ui/lib/utils/utils';\nimport { ContentState, convertToRaw, EditorState } from 'draft-js';\nimport { useState } from 'react';\n\nimport { AxiosPrivate, AxiosPublic } from '../utils/axios';\n\nexport const useGetCommentSet = () => {\n const [isFetching, setFetching] = useState(false);\n\n const getCommentSetsSummary = async (\n reviewId: string,\n published = true,\n ): Promise => {\n try {\n setFetching(true);\n const { data } = published\n ? await AxiosPublic.get(`/comment-set/summary/public/${reviewId}`)\n : await AxiosPrivate.get(`/comment-set/summary/${reviewId}`);\n\n return data;\n } catch (e) {\n return null;\n } finally {\n setFetching(false);\n }\n };\n\n const getCommentSetById = async (\n commentSetId,\n withReplies = false,\n ): Promise => {\n try {\n const params = {\n withReplies,\n };\n const url = `/comment-set/${commentSetId}`;\n\n setFetching(true);\n const { data } = await AxiosPublic.get(url, { params });\n\n if (data.comments.length > 0) {\n data.comments.forEach(\n c => (c.customTopic = parsePlainTextToJSON(c.customTopic)),\n );\n }\n\n return data || null;\n } catch (e) {\n return null;\n } finally {\n setFetching(false);\n }\n };\n\n return {\n isFetching,\n getCommentSetsSummary,\n getCommentSetById,\n };\n};\n","import { useState } from 'react';\nimport { AxiosPrivate } from '../utils/axios';\nimport { UserModel } from 'ors-frontend/src/models';\n\nexport const useGetUsers = () => {\n const [isFetching, setFetching] = useState(false);\n const [users, setUsers] = useState([]);\n\n const getUsers = async (organizationId: string) => {\n try {\n setFetching(true);\n const { data } = await AxiosPrivate.get(\n `/organizations/${organizationId}/users`,\n );\n\n setUsers(data);\n setFetching(false);\n\n return data;\n } catch (e) {\n setFetching(false);\n }\n };\n\n const getUser = async (id) =>{\n try {\n setFetching(true);\n const response = await AxiosPrivate.get(`/users/${id}`);\n setFetching(false);\n return response;\n } catch (e) {\n setFetching(false);\n }\n }\n\n return {\n isFetching,\n users,\n getUsers,\n getUser,\n };\n};\n","import { useState } from 'react';\nimport { AxiosPublic } from '../utils/axios';\nimport { NewsLetterParams, NewsLetterSubmissionType } from '@mvrb-frontend/shared-ui';\nimport NewsLetterModel from '../models/NewsLetterModel';\nimport ResponseException from '../models/ResponseException';\n\nexport const useNewsLetterApi = ()=>{\n const [isFetching, setFetching]= useState(false);\n const [dataNewsLetter, setDataNewsLetter] = useState([]);\n const [ apiSuccess, setApisuccess] = useState(false);\n const [apiErrors, setApiErrors] = useState([]);\n const [showNL, setShowNL] = useState(false);\n const [ listFile, setListFile ] = useState();\n const [ userCount, setUserCount ] = useState(0);\n\n const updateUserNewsLetter = async (payload: NewsLetterModel, submissionType: NewsLetterSubmissionType) =>{\n try {\n setApisuccess(false);\n switch(submissionType){\n case NewsLetterSubmissionType.Submit:\n await AxiosPublic.post('/newsletter', payload);\n break;\n case NewsLetterSubmissionType.Update:\n await AxiosPublic.patch('/newsletter', payload);\n break;\n case NewsLetterSubmissionType.UpdatePreferences:\n await AxiosPublic.patch('/newsletter/user-preferences', payload);\n break;\n }\n \n setApiErrors([]);\n } catch (error) {\n setApiErrors(new ResponseException(error).getErrorMessage());\n }\n finally{\n setApisuccess(true);\n }\n }\n\n const getNewsLetters = async (queryParams: NewsLetterParams) =>{\n try {\n setFetching(true);\n const {data} = await AxiosPublic.get('/newsletter', {\n params: queryParams\n });\n data.rows.map((item)=>{\n Object.assign(item, {id:item.Email})\n })\n setUserCount(data.userCount);\n setDataNewsLetter(data.rows);\n } catch (error) {\n setApiErrors(new ResponseException(error).getErrorMessage());\n } finally{\n setFetching(false);\n }\n };\n\n const getUserNewsLetter = async (queryParams: NewsLetterParams) =>{\n try{\n setFetching(true);\n const{data}: any = await AxiosPublic.get('/newsletter/usernewsletter', {\n params: queryParams\n });\n\n setDataNewsLetter(data);\n }\n catch(error){\n setApiErrors(new ResponseException(error).getErrorMessage());\n }\n finally{\n setFetching(false);\n }\n }\n\n //-->NewsLetter popup its to only be showed the first time you signin after\n //-->implementation\n\n //-->Get true if a user have sign in and have already seen the Newsletter popup \n const getUserPreferences = async (queryParams: NewsLetterParams) =>{\n try{\n setFetching(true);\n const{data}: any = await AxiosPublic.get('/newsletter/user-preferences', {\n params: queryParams\n });\n \n if(data.length>0){\n data[0].Newsletter===true\n ?setShowNL(false)\n :setShowNL(true)\n }\n }\n catch(error){\n setApiErrors(new ResponseException(error).getErrorMessage());\n }\n finally{\n setFetching(false);\n }\n }\n\n return{\n isFetching,\n dataNewsLetter,\n apiSuccess,\n apiErrors,\n showNL,\n listFile,\n userCount,\n getUserPreferences,\n updateUserNewsLetter,\n getUserNewsLetter,\n getNewsLetters,\n };\n}","import { useState } from \"react\"\nimport { AxiosPrivate, AxiosPublic } from \"../utils/axios\"\n\nexport const useGetEngagements = () => {\n const [isFetching, setIsFetching] = useState(false);\n const [engagementList, setEngagementList] = useState([]);\n const [count, setCount] = useState(0)\n\n const getEngagements = async (queryParams?: any) => {\n setIsFetching(true);\n try {\n const { data } = await AxiosPublic.get(`/organizations/engagement/list`,{\n params: {...queryParams},\n });\n\n setEngagementList(data.engagementData);\n setCount(data.dataCount)\n\n return data.engagementData\n } catch (e) {\n setIsFetching(false);\n }\n finally {\n setIsFetching(false);\n }\n }\n\n\n return{\n getEngagements,\n isFetching,\n engagementList,\n count,\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/**/\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/**/\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 assert = require('minimalistic-assert');\n\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\n\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\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 = [DES.create({\n type: 'encrypt',\n key: k1\n }), DES.create({\n type: 'decrypt',\n key: k2\n }), DES.create({\n type: 'encrypt',\n key: k3\n })];\n } else {\n this.ciphers = [DES.create({\n type: 'decrypt',\n key: k3\n }), DES.create({\n type: 'encrypt',\n key: k2\n }), DES.create({\n type: 'decrypt',\n key: k1\n })];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\n\ninherits(EDE, Cipher);\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\n state.ciphers[1]._update(out, outOff, out, outOff);\n\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;","module.exports = function xor(a, b) {\n var len = a.length;\n var i = -1;\n\n while (++i < len) {\n a[i] ^= b[i];\n }\n\n return a;\n};","'use strict';\n\nvar base = exports;\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');","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 * lodash 4.0.1 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n\nvar isArray = Array.isArray;\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n\n\nfunction isString(value) {\n return typeof value == 'string' || !isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag;\n}\n\nmodule.exports = isString;","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n/** Used as references for various `Number` constants. */\n\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n/** `Object#toString` result references. */\n\nvar symbolTag = '[object Symbol]';\n/** Used to match leading and trailing whitespace. */\n\nvar reTrim = /^\\s+|\\s+$/g;\n/** Used to detect bad signed hexadecimal string values. */\n\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n/** Used to detect binary string values. */\n\nvar reIsBinary = /^0b[01]+$/i;\n/** Used to detect octal string values. */\n\nvar reIsOctal = /^0o[0-7]+$/i;\n/** Built-in method references without a dependency on `root`. */\n\nvar freeParseInt = parseInt;\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n\nfunction before(n, func) {\n var result;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n n = toInteger(n);\n return function () {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n\n if (n <= 1) {\n func = undefined;\n }\n\n return result;\n };\n}\n/**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n\n\nfunction once(func) {\n return before(2, func);\n}\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\n\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\n\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n\n\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n\n\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n\n value = toNumber(value);\n\n if (value === INFINITY || value === -INFINITY) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n\n return value === value ? value : 0;\n}\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n\n\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n}\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n\n\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n\n if (isSymbol(value)) {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\n\nmodule.exports = once;","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg)) return msg.slice();\n if (!msg) return [];\n var res = [];\n\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++) {\n res[i] = msg[i] | 0;\n }\n\n return res;\n }\n\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0) msg = '0' + msg;\n\n for (var i = 0; i < msg.length; i += 2) {\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\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) res.push(hi, lo);else res.push(lo);\n }\n }\n\n return res;\n}\n\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1) return '0' + word;else return word;\n}\n\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n\n for (var i = 0; i < msg.length; i++) {\n res += zero2(msg[i].toString(16));\n }\n\n return res;\n}\n\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex') return toHex(arr);else return arr;\n};","module.exports = require('./lib/axios');","var exports = module.exports = function SHA(algorithm) {\n algorithm = algorithm.toLowerCase();\n var Algorithm = exports[algorithm];\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)');\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');","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer');\n\nvar Buffer = buffer.Buffer; // alternative to using Object.keys for old browsers\n\nfunction copyProps(src, dst) {\n for (var key in src) {\n dst[key] = src[key];\n }\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} // Copy static methods from Buffer\n\n\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\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\n var buf = Buffer(size);\n\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\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\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\n return buffer.SlowBuffer(size);\n};","var JsonWebTokenError = function JsonWebTokenError(message, error) {\n Error.call(this, message);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = 'JsonWebTokenError';\n this.message = message;\n if (error) this.inner = error;\n};\n\nJsonWebTokenError.prototype = Object.create(Error.prototype);\nJsonWebTokenError.prototype.constructor = JsonWebTokenError;\nmodule.exports = JsonWebTokenError;","'use strict'; // limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\n\nvar MAX_BYTES = 65536; // Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\n\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;\n\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 var bytes = Buffer.allocUnsafe(size);\n\n if (size > 0) {\n // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) {\n // 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}","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar Transform = require('readable-stream').Transform;\n\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 this._block = Buffer.allocUnsafe(blockSize);\n this._blockSize = blockSize;\n this._blockOffset = 0;\n this._length = [0, 0, 0, 0];\n this._finalized = false;\n}\n\ninherits(HashBase, Transform);\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null;\n\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\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); // consume data\n\n var block = this._block;\n var offset = 0;\n\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) {\n block[i++] = data[offset++];\n }\n\n this._update();\n\n this._blockOffset = 0;\n }\n\n while (offset < data.length) {\n block[this._blockOffset++] = data[offset++];\n } // update length\n\n\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\n if (encoding !== undefined) digest = digest.toString(encoding); // reset state\n\n this._block.fill(0);\n\n this._blockOffset = 0;\n\n for (var i = 0; i < 4; ++i) {\n this._length[i] = 0;\n }\n\n return digest;\n};\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented');\n};\n\nmodule.exports = HashBase;","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer');\n\nvar Buffer = buffer.Buffer; // alternative to using Object.keys for old browsers\n\nfunction copyProps(src, dst) {\n for (var key in src) {\n dst[key] = src[key];\n }\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} // Copy static methods from Buffer\n\n\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\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\n var buf = Buffer(size);\n\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\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\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\n return buffer.SlowBuffer(size);\n};","exports.pbkdf2 = require('./lib/async');\nexports.pbkdf2Sync = require('./lib/sync');","'use strict';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\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, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\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 = /*#__PURE__*/function () {\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}();","'use strict';\n\nvar utils = require('../utils');\n\nvar common = require('../common');\n\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;\nvar BlockHash = common.BlockHash;\nvar sha512_K = [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817];\n\nfunction SHA512() {\n if (!(this instanceof SHA512)) return new SHA512();\n BlockHash.call(this);\n this.h = [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1, 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179];\n this.k = sha512_K;\n this.W = new Array(160);\n}\n\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\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; // 32 x 32bit words\n\n for (var i = 0; i < 32; i++) {\n W[i] = msg[start + i];\n }\n\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n\n var c3_lo = W[i - 31];\n W[i] = sum64_4_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, 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 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 assert(this.k.length === W.length);\n\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 var T1_hi = sum64_5_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo);\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 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 hh = gh;\n hl = gl;\n gh = fh;\n gl = fl;\n fh = eh;\n fl = el;\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n dh = ch;\n dl = cl;\n ch = bh;\n cl = bl;\n bh = ah;\n bl = al;\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') return utils.toHex32(this.h, 'big');else 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) 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) 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) 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) 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\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) 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\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) 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) 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) 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 var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) 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 var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) 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\n var c2_hi = shr64_hi(xh, xl, 6);\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) 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\n var c2_lo = shr64_lo(xh, xl, 6);\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}","'use strict';\n\nvar inherits = require('inherits');\n\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\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\n return this._alg(Buffer.concat([this._opad, h]));\n};\n\nmodule.exports = Hmac;","var ciphers = require('./encrypter');\n\nvar deciphers = require('./decrypter');\n\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;","'use strict';\n\nvar elliptic = exports;\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'); // Protocols\n\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');","'use strict';\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\n\nmodule.exports = function isAxiosError(payload) {\n return typeof payload === 'object' && payload.isAxiosError === true;\n};","export * from './arrays';\nexport * from './routes';\nexport * from './constants';\nexport * from './validation';\n","var inherits = require('inherits');\n\nvar SHA512 = require('./sha512');\n\nvar Hash = require('./hash');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar W = new Array(160);\n\nfunction Sha384() {\n this.init();\n this._w = W;\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 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 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 return H;\n};\n\nmodule.exports = Sha384;","'use strict';\n\nvar utils = require('./utils');\n\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac)) 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}\n\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize) key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize); // Add padding to key\n\n for (var i = key.length; i < this.blockSize; i++) {\n key.push(0);\n }\n\n for (i = 0; i < key.length; i++) {\n key[i] ^= 0x36;\n }\n\n this.inner = new this.Hash().update(key); // 0x36 ^ 0x5c = 0x6a\n\n for (i = 0; i < key.length; i++) {\n key[i] ^= 0x6a;\n }\n\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};","var BN = require('bn.js');\n\nvar MillerRabin = require('miller-rabin');\n\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);\n\nvar primes = require('./generatePrime');\n\nvar randomBytes = require('randombytes');\n\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\n\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n\n if (hex in primeCache) {\n return primeCache[hex];\n }\n\n var error = 0;\n\n if (prime.isEven() || !primes.simpleSieve || !primes.fermatTest(prime) || !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\n primeCache[hex] = error;\n return error;\n }\n\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n\n var rem;\n\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n\n break;\n\n case '05':\n rem = prime.mod(TEN);\n\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n\n break;\n\n default:\n error += 4;\n }\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\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\n\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function get() {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n\n return this._primeCode;\n }\n});\n\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\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\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\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\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\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\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\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 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};","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\n self._cache = self._cache.slice(chunk.length);\n return xor(chunk, pad);\n};","'use strict';\n\nvar utils = require('../utils');\n\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\n\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub)) this._pub = params.pub;else this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair) return pub;\n return new KeyPair(eddsa, {\n pub: pub\n });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair) return secret;\n return new KeyPair(eddsa, {\n secret: secret\n });\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});\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes) return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n return a;\n});\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\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;","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\n\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature) return options;\n if (this._importDER(options, enc)) return;\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) this.recoveryParam = null;else this.recoveryParam = options.recoveryParam;\n}\n\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n\n if (!(initial & 0x80)) {\n return initial;\n }\n\n var octetLen = initial & 0xf; // Indefinite length or overflow\n\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n } // Leading zeroes\n\n\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\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n\n if (i === 0) {\n return buf;\n }\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\n if (data[p.place++] !== 0x30) {\n return false;\n }\n\n var len = getLength(data, p);\n\n if (len === false) {\n return false;\n }\n\n if (len + p.place !== data.length) {\n return false;\n }\n\n if (data[p.place++] !== 0x02) {\n return false;\n }\n\n var rlen = getLength(data, p);\n\n if (rlen === false) {\n return false;\n }\n\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n\n if (data[p.place++] !== 0x02) {\n return false;\n }\n\n var slen = getLength(data, p);\n\n if (slen === false) {\n return false;\n }\n\n if (data.length !== slen + p.place) {\n return false;\n }\n\n var s = data.slice(p.place, slen + p.place);\n\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\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 return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n\n while (--octets) {\n arr.push(len >>> (octets << 3) & 0xff);\n }\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(); // Pad values\n\n if (r[0] & 0x80) r = [0].concat(r); // Pad values\n\n if (s[0] & 0x80) s = [0].concat(s);\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\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};","var ms = require('ms');\n\nmodule.exports = function (time, iat) {\n var timestamp = iat || Math.floor(Date.now() / 1000);\n\n if (typeof time === 'string') {\n var milliseconds = ms(time);\n\n if (typeof milliseconds === 'undefined') {\n return;\n }\n\n return Math.floor(timestamp + milliseconds / 1000);\n } else if (typeof time === 'number') {\n return timestamp + time;\n } else {\n return;\n }\n};","var JsonWebTokenError = require('./JsonWebTokenError');\n\nvar NotBeforeError = function NotBeforeError(message, date) {\n JsonWebTokenError.call(this, message);\n this.name = 'NotBeforeError';\n this.date = date;\n};\n\nNotBeforeError.prototype = Object.create(JsonWebTokenError.prototype);\nNotBeforeError.prototype.constructor = NotBeforeError;\nmodule.exports = NotBeforeError;","(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\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; // Reduction context\n\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\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 var Buffer;\n\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && 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\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this._strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\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\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\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\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\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\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this._strip();\n };\n\n function parseHex(str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n var z = 0;\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r <<= 4;\n var b; // 'a' - 'f'\n\n if (c >= 49 && c <= 54) {\n b = c - 49 + 0xa; // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n b = c - 17 + 0xa; // '0' - '9'\n } else {\n b = c;\n }\n\n r |= b;\n z |= b;\n }\n\n assert(!(z & 0xf0), 'Invalid character in ' + str);\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start) {\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\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w; // Scan 24-bit chunks and add them to the number\n\n var off = 0;\n\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= w << off & 0x3ffffff; // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n\n this.words[j + 1] |= w >>> 26 - off & 0x3fffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] |= w >>> 26 - off & 0x3fffff;\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\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n b = c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa; // '0' - '9'\n } else {\n b = c;\n }\n\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\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; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\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\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\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\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype._strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\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\n return this;\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\n\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 ? '';\n }\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\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 = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\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\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 off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\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]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\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\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\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\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\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\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 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 res[position++] = word & 0xff;\n\n if (position < res.length) {\n res[position++] = word >> 8 & 0xff;\n }\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\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 res[position--] = word & 0xff;\n\n if (position >= 0) {\n res[position--] = word >> 8 & 0xff;\n }\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\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\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\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 var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\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 w[bit] = num.words[off] >>> wbit & 0x01;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\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\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\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\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 }; // Or `num` with `this` in-place\n\n\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 }; // Or `num` with `this`\n\n\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 }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\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 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 }; // And `num` with `this`\n\n\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 }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\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 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 }; // Xor `num` with `this`\n\n\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 }; // Not ``this`` with ``width`` bitwidth\n\n\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this._strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\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 }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\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(); // 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 } // a.length > b.length\n\n\n var a, b;\n\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\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\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\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // 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 }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\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 return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\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(); // -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 } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\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\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\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 } // Copy rest of the words\n\n\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 }; // Subtract `num` from `this`\n\n\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; // Peel one iteration (compiler can't do it, because of code complexity)\n\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\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\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\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\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\n\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 out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\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 var carry = 0;\n var hncarry = 0;\n\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\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 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 hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\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\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 }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\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\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\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 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 var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n /* jshint maxdepth : false */\n\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\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\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 rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\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\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\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\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n } // Pad with zeroes\n\n\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\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 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 var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, 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 out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n }; // Multiply `this` by `num`\n\n\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 }; // Multiply employing FFT\n\n\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 }; // In-place Multiplication\n\n\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 assert(typeof num === 'number');\n assert(num < 0x4000000); // Carry\n\n var carry = 0;\n\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; // NOTE: lo is 27bit maximum\n\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 }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\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 res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\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 }; // 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\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\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 h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\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\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 } // Push carried bits as a mask\n\n\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 }; // Shift-left\n\n\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 }; // Shift-right\n\n\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 }; // Test if n bit is set\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\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 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\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 }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\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 } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\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 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\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\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(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\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\n this.negative = 1;\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\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\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\n if (diff.negative === 0) {\n a = diff;\n\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 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q._strip();\n }\n\n a._strip(); // Denormalize\n\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\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\n\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\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\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\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\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 }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\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 }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\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 assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n\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 }; // WARNING: DEPRECATED\n\n\n BN.prototype.modn = function modn(num) {\n return this.modrn(num);\n }; // In-place division by number\n\n\n BN.prototype.idivn = function idivn(num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n assert(num <= 0x3ffffff);\n var carry = 0;\n\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\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 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 } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\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 ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\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 ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\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 }; // 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\n\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\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 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 ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\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 ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\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\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 var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\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\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\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 }; // Invert number in the field F(num)\n\n\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 }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\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\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\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 if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n\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 var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\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 var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Unsigned comparison\n\n\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 var res = 0;\n\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 if (a === b) continue;\n\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\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 // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\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\n this.red._verify2(this, num);\n\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\n this.red._verify2(this, num);\n\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\n this.red._verify1(this);\n\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\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\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\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\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 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\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(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\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\n prev >>>= 22;\n input.words[i - 10] = prev;\n\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; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\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 } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\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 num.words[i] = lo;\n carry = hi;\n }\n\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\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\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\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, '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 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\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\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\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\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\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\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\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\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 var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\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\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\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\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 var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\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\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\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\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 res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\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 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 // Montgomery method engine\n //\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 this.shift = this.m.bitLength();\n\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 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\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 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\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);","'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 * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n/** `Object#toString` result references. */\n\nvar symbolTag = '[object Symbol]';\n/** Used to match leading and trailing whitespace. */\n\nvar reTrim = /^\\s+|\\s+$/g;\n/** Used to detect bad signed hexadecimal string values. */\n\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n/** Used to detect binary string values. */\n\nvar reIsBinary = /^0b[01]+$/i;\n/** Used to detect octal string values. */\n\nvar reIsOctal = /^0o[0-7]+$/i;\n/** Built-in method references without a dependency on `root`. */\n\nvar freeParseInt = parseInt;\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n\nfunction isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n}\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\n\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\n\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n\n\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n\n\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n\n value = toNumber(value);\n\n if (value === INFINITY || value === -INFINITY) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n\n return value === value ? value : 0;\n}\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n\n\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n}\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n\n\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n\n if (isSymbol(value)) {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\n\nmodule.exports = isInteger;","var Buffer = require('safe-buffer').Buffer;\n\nfunction encryptByte(self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev);\n\n var out = pad[0] ^ byteParam;\n self._prev = Buffer.concat([self._prev.slice(1), Buffer.from([decrypt ? byteParam : out])]);\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};","'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};","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\n\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null; // KeyPair(ec, { priv: ..., pub: ... })\n\n if (options.priv) this._importPrivate(options.priv, options.privEnc);\n if (options.pub) this._importPublic(options.pub, options.pubEnc);\n}\n\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair) return pub;\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) return priv;\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 if (pub.isInfinity()) return {\n result: false,\n reason: 'Invalid public key'\n };\n if (!pub.validate()) return {\n result: false,\n reason: 'Public key is not a point'\n };\n if (!pub.mul(this.ec.curve.n).isInfinity()) return {\n result: false,\n reason: 'Public key * N != O'\n };\n return {\n result: true,\n reason: null\n };\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) this.pub = this.ec.g.mul(this.priv);\n if (!enc) return this.pub;\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex') return this.priv.toString(16, 2);else return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16); // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n\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' || this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n\n this.pub = this.ec.curve.decodePoint(key, enc);\n}; // ECDH\n\n\nKeyPair.prototype.derive = function derive(pub) {\n return pub.mul(this.priv).getX();\n}; // ECDSA\n\n\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 '';\n};","var JsonWebTokenError = require('./lib/JsonWebTokenError');\n\nvar NotBeforeError = require('./lib/NotBeforeError');\n\nvar TokenExpiredError = require('./lib/TokenExpiredError');\n\nvar decode = require('./decode');\n\nvar timespan = require('./lib/timespan');\n\nvar PS_SUPPORTED = require('./lib/psSupported');\n\nvar jws = require('jws');\n\nvar PUB_KEY_ALGS = ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512'];\nvar RSA_KEY_ALGS = ['RS256', 'RS384', 'RS512'];\nvar HS_ALGS = ['HS256', 'HS384', 'HS512'];\n\nif (PS_SUPPORTED) {\n PUB_KEY_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n RSA_KEY_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n}\n\nmodule.exports = function (jwtString, secretOrPublicKey, options, callback) {\n if (typeof options === 'function' && !callback) {\n callback = options;\n options = {};\n }\n\n if (!options) {\n options = {};\n } //clone this object since we are going to mutate it.\n\n\n options = Object.assign({}, options);\n var done;\n\n if (callback) {\n done = callback;\n } else {\n done = function done(err, data) {\n if (err) throw err;\n return data;\n };\n }\n\n if (options.clockTimestamp && typeof options.clockTimestamp !== 'number') {\n return done(new JsonWebTokenError('clockTimestamp must be a number'));\n }\n\n if (options.nonce !== undefined && (typeof options.nonce !== 'string' || options.nonce.trim() === '')) {\n return done(new JsonWebTokenError('nonce must be a non-empty string'));\n }\n\n var clockTimestamp = options.clockTimestamp || Math.floor(Date.now() / 1000);\n\n if (!jwtString) {\n return done(new JsonWebTokenError('jwt must be provided'));\n }\n\n if (typeof jwtString !== 'string') {\n return done(new JsonWebTokenError('jwt must be a string'));\n }\n\n var parts = jwtString.split('.');\n\n if (parts.length !== 3) {\n return done(new JsonWebTokenError('jwt malformed'));\n }\n\n var decodedToken;\n\n try {\n decodedToken = decode(jwtString, {\n complete: true\n });\n } catch (err) {\n return done(err);\n }\n\n if (!decodedToken) {\n return done(new JsonWebTokenError('invalid token'));\n }\n\n var header = decodedToken.header;\n var getSecret;\n\n if (typeof secretOrPublicKey === 'function') {\n if (!callback) {\n return done(new JsonWebTokenError('verify must be called asynchronous if secret or public key is provided as a callback'));\n }\n\n getSecret = secretOrPublicKey;\n } else {\n getSecret = function getSecret(header, secretCallback) {\n return secretCallback(null, secretOrPublicKey);\n };\n }\n\n return getSecret(header, function (err, secretOrPublicKey) {\n if (err) {\n return done(new JsonWebTokenError('error in secret or public key callback: ' + err.message));\n }\n\n var hasSignature = parts[2].trim() !== '';\n\n if (!hasSignature && secretOrPublicKey) {\n return done(new JsonWebTokenError('jwt signature is required'));\n }\n\n if (hasSignature && !secretOrPublicKey) {\n return done(new JsonWebTokenError('secret or public key must be provided'));\n }\n\n if (!hasSignature && !options.algorithms) {\n options.algorithms = ['none'];\n }\n\n if (!options.algorithms) {\n options.algorithms = ~secretOrPublicKey.toString().indexOf('BEGIN CERTIFICATE') || ~secretOrPublicKey.toString().indexOf('BEGIN PUBLIC KEY') ? PUB_KEY_ALGS : ~secretOrPublicKey.toString().indexOf('BEGIN RSA PUBLIC KEY') ? RSA_KEY_ALGS : HS_ALGS;\n }\n\n if (!~options.algorithms.indexOf(decodedToken.header.alg)) {\n return done(new JsonWebTokenError('invalid algorithm'));\n }\n\n var valid;\n\n try {\n valid = jws.verify(jwtString, decodedToken.header.alg, secretOrPublicKey);\n } catch (e) {\n return done(e);\n }\n\n if (!valid) {\n return done(new JsonWebTokenError('invalid signature'));\n }\n\n var payload = decodedToken.payload;\n\n if (typeof payload.nbf !== 'undefined' && !options.ignoreNotBefore) {\n if (typeof payload.nbf !== 'number') {\n return done(new JsonWebTokenError('invalid nbf value'));\n }\n\n if (payload.nbf > clockTimestamp + (options.clockTolerance || 0)) {\n return done(new NotBeforeError('jwt not active', new Date(payload.nbf * 1000)));\n }\n }\n\n if (typeof payload.exp !== 'undefined' && !options.ignoreExpiration) {\n if (typeof payload.exp !== 'number') {\n return done(new JsonWebTokenError('invalid exp value'));\n }\n\n if (clockTimestamp >= payload.exp + (options.clockTolerance || 0)) {\n return done(new TokenExpiredError('jwt expired', new Date(payload.exp * 1000)));\n }\n }\n\n if (options.audience) {\n var audiences = Array.isArray(options.audience) ? options.audience : [options.audience];\n var target = Array.isArray(payload.aud) ? payload.aud : [payload.aud];\n var match = target.some(function (targetAudience) {\n return audiences.some(function (audience) {\n return audience instanceof RegExp ? audience.test(targetAudience) : audience === targetAudience;\n });\n });\n\n if (!match) {\n return done(new JsonWebTokenError('jwt audience invalid. expected: ' + audiences.join(' or ')));\n }\n }\n\n if (options.issuer) {\n var invalid_issuer = typeof options.issuer === 'string' && payload.iss !== options.issuer || Array.isArray(options.issuer) && options.issuer.indexOf(payload.iss) === -1;\n\n if (invalid_issuer) {\n return done(new JsonWebTokenError('jwt issuer invalid. expected: ' + options.issuer));\n }\n }\n\n if (options.subject) {\n if (payload.sub !== options.subject) {\n return done(new JsonWebTokenError('jwt subject invalid. expected: ' + options.subject));\n }\n }\n\n if (options.jwtid) {\n if (payload.jti !== options.jwtid) {\n return done(new JsonWebTokenError('jwt jwtid invalid. expected: ' + options.jwtid));\n }\n }\n\n if (options.nonce) {\n if (payload.nonce !== options.nonce) {\n return done(new JsonWebTokenError('jwt nonce invalid. expected: ' + options.nonce));\n }\n }\n\n if (options.maxAge) {\n if (typeof payload.iat !== 'number') {\n return done(new JsonWebTokenError('iat required when maxAge is specified'));\n }\n\n var maxAgeTimestamp = timespan(options.maxAge, payload.iat);\n\n if (typeof maxAgeTimestamp === 'undefined') {\n return done(new JsonWebTokenError('\"maxAge\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n\n if (clockTimestamp >= maxAgeTimestamp + (options.clockTolerance || 0)) {\n return done(new TokenExpiredError('maxAge exceeded', new Date(maxAgeTimestamp * 1000)));\n }\n }\n\n if (options.complete === true) {\n var signature = decodedToken.signature;\n return done(null, {\n header: header,\n payload: payload,\n signature: signature\n });\n }\n\n return done(null, payload);\n });\n};","'use strict';\n\nvar enhanceError = require('./enhanceError');\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\n\n\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};","/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\n\nvar DataStream = require('./data-stream');\n\nvar jwa = require('jwa');\n\nvar Stream = require('stream');\n\nvar toString = require('./tostring');\n\nvar util = require('util');\n\nfunction base64url(string, encoding) {\n return Buffer.from(string, encoding).toString('base64').replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\n\nfunction jwsSecuredInput(header, payload, encoding) {\n encoding = encoding || 'utf8';\n var encodedHeader = base64url(toString(header), 'binary');\n var encodedPayload = base64url(toString(payload), encoding);\n return util.format('%s.%s', encodedHeader, encodedPayload);\n}\n\nfunction jwsSign(opts) {\n var header = opts.header;\n var payload = opts.payload;\n var secretOrKey = opts.secret || opts.privateKey;\n var encoding = opts.encoding;\n var algo = jwa(header.alg);\n var securedInput = jwsSecuredInput(header, payload, encoding);\n var signature = algo.sign(securedInput, secretOrKey);\n return util.format('%s.%s', securedInput, signature);\n}\n\nfunction SignStream(opts) {\n var secret = opts.secret || opts.privateKey || opts.key;\n var secretStream = new DataStream(secret);\n this.readable = true;\n this.header = opts.header;\n this.encoding = opts.encoding;\n this.secret = this.privateKey = this.key = secretStream;\n this.payload = new DataStream(opts.payload);\n this.secret.once('close', function () {\n if (!this.payload.writable && this.readable) this.sign();\n }.bind(this));\n this.payload.once('close', function () {\n if (!this.secret.writable && this.readable) this.sign();\n }.bind(this));\n}\n\nutil.inherits(SignStream, Stream);\n\nSignStream.prototype.sign = function sign() {\n try {\n var signature = jwsSign({\n header: this.header,\n payload: this.payload.buffer,\n secret: this.secret.buffer,\n encoding: this.encoding\n });\n this.emit('done', signature);\n this.emit('data', signature);\n this.emit('end');\n this.readable = false;\n return signature;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\n\nSignStream.sign = jwsSign;\nmodule.exports = SignStream;","module.exports = require('./readable').Transform;","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\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}","'use strict';\n\nvar decoders = exports;\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');","module.exports = require('./browser/algorithms.json');","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\n\nvar combineURLs = require('../helpers/combineURLs');\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\n\n\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n\n return requestedURL;\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/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n\nmodule.exports = Readable;\n/**/\n\nvar isArray = require('isarray');\n/**/\n\n/**/\n\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\n\nvar Buffer = require('safe-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/**/\n\n/**/\n\n\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\n\nvar debugUtil = require('util');\n\nvar debug = void 0;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/BufferList');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar StringDecoder;\nutil.inherits(Readable, Stream);\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 (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 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 var 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 var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; // cast to ints.\n\n this.highWaterMark = Math.floor(this.highWaterMark); // 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; // 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);\n this._readableState = new ReadableState(options, this); // 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 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 this.push(null);\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 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 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\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 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 TypeError('Invalid non-string/buffer chunk');\n }\n\n return er;\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.\n\n\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}; // backwards compatibility.\n\n\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}; // Don't raise the hwm > 8MB\n\n\nvar MAX_HWM = 0x800000;\n\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\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.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); // 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 = 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; // 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 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; // emit 'readable' now to make sure it gets picked up.\n\n emitReadable(stream);\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 state.needReadable = false;\n\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} // 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 pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n\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) // didn't get any data, stop spinning.\n break;else len = state.length;\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 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\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) pna.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 } // 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\n\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n\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\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) dest.emit('error', 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 () {\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, unpipeInfo);\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\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\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n\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};\n\nReadable.prototype.addListener = Readable.prototype.on;\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');\n state.flowing = true;\n resume(this, state);\n }\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\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\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} // 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 (method) {\n return function () {\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\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}); // exposed for testing purposes only.\n\nReadable._fromList = fromList; // 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.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 return ret;\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.\n\n\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n\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\n return ret;\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.\n\n\nfunction copyFromBufferString(n, list) {\n var p = list.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) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n list.length -= c;\n return ret;\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.\n\n\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\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) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState; // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n\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\n return -1;\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\nvar R = typeof Reflect === 'object' ? Reflect : null;\nvar ReflectApply = R && typeof R.apply === 'function' ? R.apply : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n};\nvar ReflectOwnKeys;\n\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).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}\n\nmodule.exports = EventEmitter;\nmodule.exports.once = once; // Backwards-compat with node 0.10.x\n\nEventEmitter.EventEmitter = EventEmitter;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined; // 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.\n\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 get() {\n return defaultMaxListeners;\n },\n set: function set(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\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function () {\n if (this._events === undefined || 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}; // Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\n\n\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\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined) 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\n for (var i = 1; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var doError = type === 'error';\n var events = this._events;\n if (events !== undefined) doError = doError && events.error === undefined;else if (!doError) return false; // If there is no 'error' event listener then throw.\n\n if (doError) {\n var er;\n if (args.length > 0) er = args[0];\n\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 } // At least give some kind of context to the user\n\n\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 if (handler === undefined) 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\n for (var i = 0; i < len; ++i) {\n ReflectApply(listeners[i], this, args);\n }\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n checkListener(listener);\n events = target._events;\n\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, listener.listener ? listener.listener : listener); // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n\n events = target._events;\n }\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] = prepend ? [listener, existing] : [existing, listener]; // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n } // Check for listener leak\n\n\n m = _getMaxListeners(target);\n\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true; // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n\n var w = new Error('Possible EventEmitter memory leak detected. ' + existing.length + ' ' + String(type) + ' listeners ' + 'added. Use emitter.setMaxListeners() to ' + '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 = 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) 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 = {\n fired: false,\n wrapFn: undefined,\n target: target,\n type: type,\n listener: listener\n };\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 = function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n}; // Emits a 'removeListener' event if and only if the listener was removed.\n\n\nEventEmitter.prototype.removeListener = function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n checkListener(listener);\n events = this._events;\n if (events === undefined) return this;\n list = events[type];\n if (list === undefined) return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0) this._events = Object.create(null);else {\n delete events[type];\n if (events.removeListener) 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) return this;\n if (position === 0) list.shift();else {\n spliceOne(list, position);\n }\n if (list.length === 1) events[type] = list[0];\n if (events.removeListener !== undefined) this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(type) {\n var listeners, events, i;\n events = this._events;\n if (events === undefined) return this; // not listening for removeListener, no need to emit\n\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) this._events = Object.create(null);else delete events[type];\n }\n\n return this;\n } // emit removeListener for all listeners on all events\n\n\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\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 if (events === undefined) return [];\n var evlistener = events[type];\n if (evlistener === undefined) return [];\n if (typeof evlistener === 'function') return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n return unwrap ? 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;\n\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\n for (var i = 0; i < n; ++i) {\n copy[i] = arr[i];\n }\n\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++) {\n list[index] = list[index + 1];\n }\n\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function eventListener() {\n if (errorListener !== undefined) {\n emitter.removeListener('error', errorListener);\n }\n\n resolve([].slice.call(arguments));\n }\n\n ;\n var errorListener; // Adding an error listener is not optional because\n // if an error is thrown on an event emitter we cannot\n // guarantee that the actual event we are waiting will\n // be fired. The result could be a silent way to create\n // memory or file descriptor leaks, which is something\n // we should avoid.\n\n if (name !== 'error') {\n errorListener = function errorListener(err) {\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n emitter.once(name, eventListener);\n });\n}","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};","'use strict';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\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, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\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 = /*#__PURE__*/function () {\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}();","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224)) return new SHA224();\n SHA256.call(this);\n this.h = [0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4];\n}\n\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\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') return utils.toHex32(this.h.slice(0, 7), 'big');else return utils.split32(this.h.slice(0, 7), 'big');\n};","'use strict';\n\nvar utils = require('./utils');\n\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 this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\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) this.pending = msg;else this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length; // Enough data, try updating\n\n if (this.pending.length >= this._delta8) {\n msg = this.pending; // Process pending data in blocks\n\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0) this.pending = null;\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n\n for (var i = 0; i < msg.length; i += this._delta32) {\n this._update(msg, i, i + this._delta32);\n }\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\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\n for (var i = 1; i < k; i++) {\n res[i] = 0;\n } // Append length\n\n\n len <<= 3;\n\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++) {\n res[i++] = 0;\n }\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\n return res;\n};","(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\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; // Reduction context\n\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\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 var Buffer;\n\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && 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\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\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\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\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\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\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\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this.strip();\n };\n\n function parseHex(str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r <<= 4; // 'a' - 'f'\n\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa; // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa; // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start) {\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\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w; // Scan 24-bit chunks and add them to the number\n\n var off = 0;\n\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= w << off & 0x3ffffff; // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n\n this.words[j + 1] |= w >>> 26 - off & 0x3fffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] |= w >>> 26 - off & 0x3fffff;\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\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n r += c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa; // '0' - '9'\n } else {\n r += c;\n }\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; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\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\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\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\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\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\n return this;\n };\n\n BN.prototype.inspect = function inspect() {\n return (this.red ? '';\n };\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\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 = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\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\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 off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\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]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\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\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\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\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\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 this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n\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 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 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\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\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 var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\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 w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\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\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\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\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 }; // Or `num` with `this` in-place\n\n\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 }; // Or `num` with `this`\n\n\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 }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\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 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 }; // And `num` with `this`\n\n\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 }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\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 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 }; // Xor `num` with `this`\n\n\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 }; // Not ``this`` with ``width`` bitwidth\n\n\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this.strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\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 }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\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(); // 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 } // a.length > b.length\n\n\n var a, b;\n\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\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\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\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // 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 }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\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 return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\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(); // -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 } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\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\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\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 } // Copy rest of the words\n\n\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 }; // Subtract `num` from `this`\n\n\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; // Peel one iteration (compiler can't do it, because of code complexity)\n\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\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\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\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\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\n\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 out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\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 var carry = 0;\n var hncarry = 0;\n\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\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 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 hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\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\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 }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\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\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\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 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 var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n /* jshint maxdepth : false */\n\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\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\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 rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\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\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\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\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n } // Pad with zeroes\n\n\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\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 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 var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, 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 out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n }; // Multiply `this` by `num`\n\n\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 }; // Multiply employing FFT\n\n\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 }; // In-place Multiplication\n\n\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); // Carry\n\n var carry = 0;\n\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; // NOTE: lo is 27bit maximum\n\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 }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\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 res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\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 }; // 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\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\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 h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\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\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 } // Push carried bits as a mask\n\n\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 }; // Shift-left\n\n\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 }; // Shift-right\n\n\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 }; // Test if n bit is set\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\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 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\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 }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\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 } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\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 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\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\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(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\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\n this.negative = 1;\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\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\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\n if (diff.negative === 0) {\n a = diff;\n\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 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q.strip();\n }\n\n a.strip(); // Denormalize\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\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\n\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\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\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\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\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 }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\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 }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\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 var acc = 0;\n\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 }; // In-place division by number\n\n\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n\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 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 } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\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 ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\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 ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\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 }; // 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\n\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\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 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 ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\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 ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\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\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 var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\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\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\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 }; // Invert number in the field F(num)\n\n\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 }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\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\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\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 if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n\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 var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\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 var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Unsigned comparison\n\n\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 var res = 0;\n\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 if (a === b) continue;\n\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\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 // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\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\n this.red._verify2(this, num);\n\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\n this.red._verify2(this, num);\n\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\n this.red._verify1(this);\n\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\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\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\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\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 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\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(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\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\n prev >>>= 22;\n input.words[i - 10] = prev;\n\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; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\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 } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\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 num.words[i] = lo;\n carry = hi;\n }\n\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\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\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\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, '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\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\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\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\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\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\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\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\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 var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\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\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\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\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 var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\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\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\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\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 res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\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 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 // Montgomery method engine\n //\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 this.shift = this.m.bitLength();\n\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 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\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 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\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);","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n this.iv = new Array(8);\n\n for (var i = 0; i < this.iv.length; i++) {\n this.iv[i] = iv[i];\n }\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n\n this._cbcInit();\n }\n\n inherits(CBC, Base);\n var keys = Object.keys(proto);\n\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 var iv = state.iv;\n\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++) {\n iv[i] ^= inp[inOff + i];\n }\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 }\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\n for (var i = 0; i < this.blockSize; i++) {\n iv[i] = inp[inOff + i];\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};","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');","function incr32(iv) {\n var len = iv.length;\n var item;\n\n while (len--) {\n item = iv.readUInt8(len);\n\n if (item === 255) {\n iv.writeUInt8(0, len);\n } else {\n item++;\n iv.writeUInt8(item, len);\n break;\n }\n }\n}\n\nmodule.exports = incr32;","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384)) return new SHA384();\n SHA512.call(this);\n this.h = [0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939, 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4];\n}\n\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h.slice(0, 12), 'big');else return utils.split32(this.h.slice(0, 12), 'big');\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};","var r;\n\nmodule.exports = function rand(len) {\n if (!r) r = new Rand(null);\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\n\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n}; // Emulate crypto API using randy\n\n\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes) return this.rand.getBytes(n);\n var res = new Uint8Array(n);\n\n for (var i = 0; i < res.length; i++) {\n res[i] = this.rand.getByte();\n }\n\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 }; // Safari's WebWorkers do not have `crypto`\n\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\n if (typeof crypto.randomBytes !== 'function') throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {}\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/**/\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/**/\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 curve = exports;\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');","// 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/**/\n\n\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.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\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n return fn.apply(thisArg, args);\n };\n};","'use strict'; // Helper\n\nfunction reverse(map) {\n var res = {};\n Object.keys(map).forEach(function (key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key) key = key | 0;\n var value = map[key];\n res[value] = key;\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);\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);","// 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/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n\nmodule.exports = Writable;\n/* */\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/* */\n\n/**/\n\n\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\n\nvar Buffer = require('safe-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/**/\n\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 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 var 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 var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; // cast to ints.\n\n this.highWaterMark = Math.floor(this.highWaterMark); // 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; // 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 () {\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\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this); // 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 this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end'); // TODO: defer error events consistently everywhere, not just the cb\n\n stream.emit('error', er);\n pna.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 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\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n\n return valid;\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.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 return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n state.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.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\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 (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); // this can emit finish, and it will always happen\n // after error\n\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); // 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 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);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\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 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); // .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 && !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}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n stream.emit('error', 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') {\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\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\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) pna.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 }\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 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 this.end();\n cb(err);\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) {\n /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length');\n }\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;\n\nvar evp = require('evp_bytestokey');\n\nvar ciphers = require('browserify-aes');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nmodule.exports = function (okey, password) {\n var key = okey.toString();\n var match = key.match(findProc);\n var decrypted;\n\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\n var tag = key.match(startRegex)[1];\n return {\n tag: tag,\n data: decrypted\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/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\n\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/**/\n\n\nmodule.exports = Duplex;\n/**/\n\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n{\n // avoid scope creep, the keys array can then be collected\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 if (options && options.readable === false) this.readable = false;\n if (options && options.writable === false) this.writable = false;\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\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 get() {\n return this._writableState.highWaterMark;\n }\n}); // the no-half-open enforcer\n\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; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\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});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n pna.nextTick(cb, err);\n};","module.exports = require('events').EventEmitter;","'use strict';\n\nvar utils = require('../utils');\n\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0) return ch32(x, y, z);\n if (s === 1 || s === 3) return p32(x, y, z);\n if (s === 2) return maj32(x, y, z);\n}\n\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return x & y ^ ~x & z;\n}\n\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return x & y ^ x & z ^ y & z;\n}\n\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\n\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\n\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\n\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ x >>> 3;\n}\n\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ x >>> 10;\n}\n\nexports.g1_256 = g1_256;","var aes = require('./aes');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar Transform = require('cipher-base');\n\nvar inherits = require('inherits');\n\nfunction StreamCipher(mode, key, iv, decrypt) {\n Transform.call(this);\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;","'use strict';\n\nvar utils = require('./utils');\n\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)) return new RIPEMD160();\n BlockHash.call(this);\n this.h = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n this.endian = 'little';\n}\n\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\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\n for (var j = 0; j < 80; j++) {\n var T = sum32(rotl32(sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)), s[j]), E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(rotl32(sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)), sh[j]), Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\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') return utils.toHex32(this.h, 'little');else return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15) return x ^ y ^ z;else if (j <= 31) return x & y | ~x & z;else if (j <= 47) return (x | ~y) ^ z;else if (j <= 63) return x & z | y & ~z;else return x ^ (y | ~z);\n}\n\nfunction K(j) {\n if (j <= 15) return 0x00000000;else if (j <= 31) return 0x5a827999;else if (j <= 47) return 0x6ed9eba1;else if (j <= 63) return 0x8f1bbcdc;else return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15) return 0x50a28be6;else if (j <= 31) return 0x5c4dd124;else if (j <= 47) return 0x6d703ef3;else if (j <= 63) return 0x7a6d76e9;else return 0x00000000;\n}\n\nvar r = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];\nvar rh = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];\nvar s = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];\nvar sh = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];","var defaultEncoding;\n/* istanbul ignore next */\n\nif (process.browser) {\n defaultEncoding = 'utf-8';\n} else if (process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10);\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary';\n} else {\n defaultEncoding = 'utf-8';\n}\n\nmodule.exports = defaultEncoding;","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = utils.isStandardBrowserEnv() ? // Standard browser envs support document.cookie\nfunction standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return match ? decodeURIComponent(match[3]) : null;\n },\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n}() : // Non standard browser env (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() {\n return null;\n },\n remove: function remove() {}\n };\n}();","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nexport default baseHas;","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n/** Used to match property names within property paths. */\n\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n\n var type = typeof value;\n\n if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) {\n return true;\n }\n\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);\n}\n\nexport default isKey;","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n\n object = object[key];\n }\n\n if (result || ++index != length) {\n return result;\n }\n\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;","import baseHas from './_baseHas.js';\nimport hasPath from './_hasPath.js';\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nexport default has;","import baseClone from './_baseClone.js';\n/** Used to compose bitmasks for cloning. */\n\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n/**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n\nfunction cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n}\n\nexport default cloneDeepWith;","import baseGetTag from './_baseGetTag.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\n/** `Object#toString` result references. */\n\nvar stringTag = '[object String]';\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n\nfunction isString(value) {\n return typeof value == 'string' || !isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag;\n}\n\nexport default isString;","/**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n\n return result;\n}\n\nexport default iteratorToArray;","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n map.forEach(function (value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n set.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nexport default asciiToArray;","/** Used to compose unicode character classes. */\nvar rsAstralRange = \"\\\\ud800-\\\\udfff\",\n rsComboMarksRange = \"\\\\u0300-\\\\u036f\",\n reComboHalfMarksRange = \"\\\\ufe20-\\\\ufe2f\",\n rsComboSymbolsRange = \"\\\\u20d0-\\\\u20ff\",\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = \"\\\\ufe0e\\\\ufe0f\";\n/** Used to compose unicode capture groups. */\n\nvar rsZWJ = \"\\\\u200d\";\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;","/** Used to compose unicode character classes. */\nvar rsAstralRange = \"\\\\ud800-\\\\udfff\",\n rsComboMarksRange = \"\\\\u0300-\\\\u036f\",\n reComboHalfMarksRange = \"\\\\ufe20-\\\\ufe2f\",\n rsComboSymbolsRange = \"\\\\u20d0-\\\\u20ff\",\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = \"\\\\ufe0e\\\\ufe0f\";\n/** Used to compose unicode capture groups. */\n\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = \"\\\\ud83c[\\\\udffb-\\\\udfff]\",\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = \"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",\n rsSurrPair = \"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",\n rsZWJ = \"\\\\u200d\";\n/** Used to compose unicode regexes. */\n\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n\nfunction stringToArray(string) {\n return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string);\n}\n\nexport default stringToArray;","import arrayMap from './_arrayMap.js';\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n\nfunction baseValues(object, props) {\n return arrayMap(props, function (key) {\n return object[key];\n });\n}\n\nexport default baseValues;","import baseValues from './_baseValues.js';\nimport keys from './keys.js';\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nexport default values;","import Symbol from './_Symbol.js';\nimport copyArray from './_copyArray.js';\nimport getTag from './_getTag.js';\nimport isArrayLike from './isArrayLike.js';\nimport isString from './isString.js';\nimport iteratorToArray from './_iteratorToArray.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\nimport stringToArray from './_stringToArray.js';\nimport values from './values.js';\n/** `Object#toString` result references. */\n\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n/** Built-in value references. */\n\nvar symIterator = Symbol ? Symbol.iterator : undefined;\n/**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n\nfunction toArray(value) {\n if (!value) {\n return [];\n }\n\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values;\n return func(value);\n}\n\nexport default toArray;","var toString = Object.prototype.toString;\nvar errorToString = Error.prototype.toString;\nvar regExpToString = RegExp.prototype.toString;\nvar symbolToString = typeof Symbol !== 'undefined' ? Symbol.prototype.toString : function () {\n return '';\n};\nvar SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\n\nfunction printNumber(val) {\n if (val != +val) return 'NaN';\n var isNegativeZero = val === 0 && 1 / val < 0;\n return isNegativeZero ? '-0' : '' + val;\n}\n\nfunction printSimpleValue(val, quoteStrings) {\n if (quoteStrings === void 0) {\n quoteStrings = false;\n }\n\n if (val == null || val === true || val === false) return '' + val;\n var typeOf = typeof val;\n if (typeOf === 'number') return printNumber(val);\n if (typeOf === 'string') return quoteStrings ? \"\\\"\" + val + \"\\\"\" : val;\n if (typeOf === 'function') return '[Function ' + (val.name || 'anonymous') + ']';\n if (typeOf === 'symbol') return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n var tag = toString.call(val).slice(8, -1);\n if (tag === 'Date') return isNaN(val.getTime()) ? '' + val : val.toISOString(val);\n if (tag === 'Error' || val instanceof Error) return '[' + errorToString.call(val) + ']';\n if (tag === 'RegExp') return regExpToString.call(val);\n return null;\n}\n\nexport default function printValue(value, quoteStrings) {\n var result = printSimpleValue(value, quoteStrings);\n if (result !== null) return result;\n return JSON.stringify(value, function (key, value) {\n var result = printSimpleValue(this[key], quoteStrings);\n if (result !== null) return result;\n return value;\n }, 2);\n}","import printValue from './util/printValue';\nexport var mixed = {\n default: '${path} is invalid',\n required: '${path} is a required field',\n oneOf: '${path} must be one of the following values: ${values}',\n notOneOf: '${path} must not be one of the following values: ${values}',\n notType: function notType(_ref) {\n var path = _ref.path,\n type = _ref.type,\n value = _ref.value,\n originalValue = _ref.originalValue;\n var isCast = originalValue != null && originalValue !== value;\n var msg = path + \" must be a `\" + type + \"` type, \" + (\"but the final value was: `\" + printValue(value, true) + \"`\") + (isCast ? \" (cast from the value `\" + printValue(originalValue, true) + \"`).\" : '.');\n\n if (value === null) {\n msg += \"\\n If \\\"null\\\" is intended as an empty value be sure to mark the schema as `.nullable()`\";\n }\n\n return msg;\n },\n defined: '${path} must be defined'\n};\nexport var string = {\n length: '${path} must be exactly ${length} characters',\n min: '${path} must be at least ${min} characters',\n max: '${path} must be at most ${max} characters',\n matches: '${path} must match the following: \"${regex}\"',\n email: '${path} must be a valid email',\n url: '${path} must be a valid URL',\n uuid: '${path} must be a valid UUID',\n trim: '${path} must be a trimmed string',\n lowercase: '${path} must be a lowercase string',\n uppercase: '${path} must be a upper case string'\n};\nexport var number = {\n min: '${path} must be greater than or equal to ${min}',\n max: '${path} must be less than or equal to ${max}',\n lessThan: '${path} must be less than ${less}',\n moreThan: '${path} must be greater than ${more}',\n notEqual: '${path} must be not equal to ${notEqual}',\n positive: '${path} must be a positive number',\n negative: '${path} must be a negative number',\n integer: '${path} must be an integer'\n};\nexport var date = {\n min: '${path} field must be later than ${min}',\n max: '${path} field must be at earlier than ${max}'\n};\nexport var boolean = {};\nexport var object = {\n noUnknown: '${path} field has unspecified keys: ${unknown}'\n};\nexport var array = {\n min: '${path} field must have at least ${min} items',\n max: '${path} field must have less than or equal to ${max} items'\n};\nexport default {\n mixed: mixed,\n string: string,\n number: number,\n date: date,\n object: object,\n array: array,\n boolean: boolean\n};","export default (function (obj) {\n return obj && obj.__isYupSchema__;\n});","import has from \"lodash-es/has\";\nimport isSchema from './util/isSchema';\n\nvar Condition = /*#__PURE__*/function () {\n function Condition(refs, options) {\n this.refs = refs;\n\n if (typeof options === 'function') {\n this.fn = options;\n return;\n }\n\n if (!has(options, 'is')) throw new TypeError('`is:` is required for `when()` conditions');\n if (!options.then && !options.otherwise) throw new TypeError('either `then:` or `otherwise:` is required for `when()` conditions');\n var is = options.is,\n then = options.then,\n otherwise = options.otherwise;\n var check = typeof is === 'function' ? is : function () {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n\n return values.every(function (value) {\n return value === is;\n });\n };\n\n this.fn = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var options = args.pop();\n var schema = args.pop();\n var branch = check.apply(void 0, args) ? then : otherwise;\n if (!branch) return undefined;\n if (typeof branch === 'function') return branch(schema);\n return schema.concat(branch.resolve(options));\n };\n }\n\n var _proto = Condition.prototype;\n\n _proto.resolve = function resolve(base, options) {\n var values = this.refs.map(function (ref) {\n return ref.getValue(options);\n });\n var schema = this.fn.apply(base, values.concat(base, options));\n if (schema === undefined || schema === base) return base;\n if (!isSchema(schema)) throw new TypeError('conditions must return a schema object');\n return schema.resolve(options);\n };\n\n return Condition;\n}();\n\nexport default Condition;","import printValue from './util/printValue';\nvar strReg = /\\$\\{\\s*(\\w+)\\s*\\}/g;\n\nvar replace = function replace(str) {\n return function (params) {\n return str.replace(strReg, function (_, key) {\n return printValue(params[key]);\n });\n };\n};\n\nexport default function ValidationError(errors, value, field, type) {\n var _this = this;\n\n this.name = 'ValidationError';\n this.value = value;\n this.path = field;\n this.type = type;\n this.errors = [];\n this.inner = [];\n if (errors) [].concat(errors).forEach(function (err) {\n _this.errors = _this.errors.concat(err.errors || err);\n if (err.inner) _this.inner = _this.inner.concat(err.inner.length ? err.inner : err);\n });\n this.message = this.errors.length > 1 ? this.errors.length + \" errors occurred\" : this.errors[0];\n if (Error.captureStackTrace) Error.captureStackTrace(this, ValidationError);\n}\nValidationError.prototype = Object.create(Error.prototype);\nValidationError.prototype.constructor = ValidationError;\n\nValidationError.isError = function (err) {\n return err && err.name === 'ValidationError';\n};\n\nValidationError.formatError = function (message, params) {\n if (typeof message === 'string') message = replace(message);\n\n var fn = function fn(params) {\n params.path = params.label || params.path || 'this';\n return typeof message === 'function' ? message(params) : message;\n };\n\n return arguments.length === 1 ? fn : fn(params);\n};","import \"core-js/modules/es.array.reduce.js\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport { SynchronousPromise } from 'synchronous-promise';\nimport ValidationError from '../ValidationError';\n\nvar promise = function promise(sync) {\n return sync ? SynchronousPromise : Promise;\n};\n\nvar unwrapError = function unwrapError(errors) {\n if (errors === void 0) {\n errors = [];\n }\n\n return errors.inner && errors.inner.length ? errors.inner : [].concat(errors);\n};\n\nfunction scopeToValue(promises, value, sync) {\n //console.log('scopeToValue', promises, value)\n var p = promise(sync).all(promises); //console.log('scopeToValue B', p)\n\n var b = p.catch(function (err) {\n if (err.name === 'ValidationError') err.value = value;\n throw err;\n }); //console.log('scopeToValue c', b)\n\n var c = b.then(function () {\n return value;\n }); //console.log('scopeToValue d', c)\n\n return c;\n}\n/**\n * If not failing on the first error, catch the errors\n * and collect them in an array\n */\n\n\nexport function propagateErrors(endEarly, errors) {\n return endEarly ? null : function (err) {\n errors.push(err);\n return err.value;\n };\n}\nexport function settled(promises, sync) {\n var Promise = promise(sync);\n return Promise.all(promises.map(function (p) {\n return Promise.resolve(p).then(function (value) {\n return {\n fulfilled: true,\n value: value\n };\n }, function (value) {\n return {\n fulfilled: false,\n value: value\n };\n });\n }));\n}\nexport function collectErrors(_ref) {\n var validations = _ref.validations,\n value = _ref.value,\n path = _ref.path,\n sync = _ref.sync,\n errors = _ref.errors,\n sort = _ref.sort;\n errors = unwrapError(errors);\n return settled(validations, sync).then(function (results) {\n var nestedErrors = results.filter(function (r) {\n return !r.fulfilled;\n }).reduce(function (arr, _ref2) {\n var error = _ref2.value; // we are only collecting validation errors\n\n if (!ValidationError.isError(error)) {\n throw error;\n }\n\n return arr.concat(error);\n }, []);\n if (sort) nestedErrors.sort(sort); //show parent errors after the nested ones: name.first, name\n\n errors = nestedErrors.concat(errors);\n if (errors.length) throw new ValidationError(errors, value, path);\n return value;\n });\n}\nexport default function runValidations(_ref3) {\n var endEarly = _ref3.endEarly,\n options = _objectWithoutPropertiesLoose(_ref3, [\"endEarly\"]);\n\n if (endEarly) return scopeToValue(options.validations, options.value, options.sync);\n return collectErrors(options);\n}","import has from \"lodash-es/has\";\nimport isSchema from './isSchema';\n\nvar isObject = function isObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n};\n\nexport default function prependDeep(target, source) {\n for (var key in source) {\n if (has(source, key)) {\n var sourceVal = source[key],\n targetVal = target[key];\n\n if (targetVal === undefined) {\n target[key] = sourceVal;\n } else if (targetVal === sourceVal) {\n continue;\n } else if (isSchema(targetVal)) {\n if (isSchema(sourceVal)) target[key] = sourceVal.concat(targetVal);\n } else if (isObject(targetVal)) {\n if (isObject(sourceVal)) target[key] = prependDeep(targetVal, sourceVal);\n } else if (Array.isArray(targetVal)) {\n if (Array.isArray(sourceVal)) target[key] = sourceVal.concat(targetVal);\n }\n }\n }\n\n return target;\n}","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function (object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n\n return object;\n };\n}\n\nexport default createBaseFor;","import createBaseFor from './_createBaseFor.js';\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n\nvar baseFor = createBaseFor();\nexport default baseFor;","import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n\n return this;\n}\n\nexport default setCacheAdd;","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n this.__data__ = new MapCache();\n\n while (++index < length) {\n this.add(values[index]);\n }\n} // Add methods to `SetCache`.\n\n\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\nexport default SetCache;","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport default arraySome;","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n/** Used to compose bitmasks for value comparisons. */\n\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n } // Check that cyclic values are equal.\n\n\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n\n var index = -1,\n result = true,\n seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined;\n stack.set(array, other);\n stack.set(other, array); // Ignore non-index properties.\n\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n }\n\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n\n result = false;\n break;\n } // Recursively compare arrays (susceptible to call stack limits).\n\n\n if (seen) {\n if (!arraySome(other, function (othValue, othIndex) {\n if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n/** Used to compose bitmasks for value comparisons. */\n\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n/** `Object#toString` result references. */\n\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n/** Used to convert symbols to primitives and strings. */\n\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == other + '';\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(object);\n\n if (stacked) {\n return stacked == other;\n }\n\n bitmask |= COMPARE_UNORDERED_FLAG; // Recursively compare objects (susceptible to call stack limits).\n\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n\n }\n\n return false;\n}\n\nexport default equalByTag;","import getAllKeys from './_getAllKeys.js';\n/** Used to compose bitmasks for value comparisons. */\n\nvar COMPARE_PARTIAL_FLAG = 1;\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n\n var index = objLength;\n\n while (index--) {\n var key = objProps[index];\n\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n } // Check that cyclic values are equal.\n\n\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n var skipCtor = isPartial;\n\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n } // Recursively compare objects (susceptible to call stack limits).\n\n\n if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n result = false;\n break;\n }\n\n skipCtor || (skipCtor = key == 'constructor');\n }\n\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor; // Non `Object` object instances with different constructors are not equal.\n\n if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n/** Used to compose bitmasks for value comparisons. */\n\nvar COMPARE_PARTIAL_FLAG = 1;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n\n objIsArr = true;\n objIsObj = false;\n }\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack());\n return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n stack || (stack = new Stack());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n\n if (!isSameTag) {\n return false;\n }\n\n stack || (stack = new Stack());\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n\n if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {\n return value !== value && other !== other;\n }\n\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;","import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n/** Used to compose bitmasks for value comparisons. */\n\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n\n object = Object(object);\n\n while (index--) {\n var data = matchData[index];\n\n if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n return false;\n }\n }\n\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack();\n\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n\n if (!(result === undefined ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result)) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nexport default baseIsMatch;","import isObject from './isObject.js';\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;","import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n result[length] = [key, value, isStrictComparable(value)];\n }\n\n return result;\n}\n\nexport default getMatchData;","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function (object) {\n if (object == null) {\n return false;\n }\n\n return object[key] === srcValue && (srcValue !== undefined || key in Object(object));\n };\n}\n\nexport default matchesStrictComparable;","import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n\n return function (object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nexport default baseMatches;","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n\nfunction baseGet(object, path) {\n path = castPath(path, object);\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n\n return index && index == length ? object : undefined;\n}\n\nexport default baseGet;","import baseGet from './_baseGet.js';\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;","import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;","import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n/** Used to compose bitmasks for value comparisons. */\n\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n\n return function (object) {\n var objValue = get(object, path);\n return objValue === undefined && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nexport default baseMatchesProperty;","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function (object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;","import baseGet from './_baseGet.js';\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n\nfunction basePropertyDeep(path) {\n return function (object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;","import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n\n if (value == null) {\n return identity;\n }\n\n if (typeof value == 'object') {\n return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);\n }\n\n return property(value);\n}\n\nexport default baseIteratee;","import baseAssignValue from './_baseAssignValue.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n baseForOwn(object, function (value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nexport default mapValues;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getter } from 'property-expr';\nvar prefixes = {\n context: '$',\n value: '.'\n};\n\nvar Reference = /*#__PURE__*/function () {\n function Reference(key, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (typeof key !== 'string') throw new TypeError('ref must be a string, got: ' + key);\n this.key = key.trim();\n if (key === '') throw new TypeError('ref must be a non-empty string');\n this.isContext = this.key[0] === prefixes.context;\n this.isValue = this.key[0] === prefixes.value;\n this.isSibling = !this.isContext && !this.isValue;\n var prefix = this.isContext ? prefixes.context : this.isValue ? prefixes.value : '';\n this.path = this.key.slice(prefix.length);\n this.getter = this.path && getter(this.path, true);\n this.map = options.map;\n }\n\n var _proto = Reference.prototype;\n\n _proto.getValue = function getValue(options) {\n var result = this.isContext ? options.context : this.isValue ? options.value : options.parent;\n if (this.getter) result = this.getter(result || {});\n if (this.map) result = this.map(result);\n return result;\n };\n\n _proto.cast = function cast(value, options) {\n return this.getValue(_extends({}, options, {\n value: value\n }));\n };\n\n _proto.resolve = function resolve() {\n return this;\n };\n\n _proto.describe = function describe() {\n return {\n type: 'ref',\n key: this.key\n };\n };\n\n _proto.toString = function toString() {\n return \"Ref(\" + this.key + \")\";\n };\n\n Reference.isRef = function isRef(value) {\n return value && value.__isYupRef;\n };\n\n return Reference;\n}();\n\nexport { Reference as default };\nReference.prototype.__isYupRef = true;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport mapValues from \"lodash-es/mapValues\";\nimport ValidationError from '../ValidationError';\nimport Ref from '../Reference';\nimport { SynchronousPromise } from 'synchronous-promise';\nvar formatError = ValidationError.formatError;\n\nvar thenable = function thenable(p) {\n return p && typeof p.then === 'function' && typeof p.catch === 'function';\n};\n\nfunction runTest(testFn, ctx, value, sync) {\n var result = testFn.call(ctx, value);\n if (!sync) return Promise.resolve(result);\n\n if (thenable(result)) {\n throw new Error(\"Validation test of type: \\\"\" + ctx.type + \"\\\" returned a Promise during a synchronous validate. \" + \"This test will finish after the validate call has returned\");\n }\n\n return SynchronousPromise.resolve(result);\n}\n\nfunction resolveParams(oldParams, newParams, resolve) {\n return mapValues(_extends({}, oldParams, newParams), resolve);\n}\n\nexport function createErrorFactory(_ref) {\n var value = _ref.value,\n label = _ref.label,\n resolve = _ref.resolve,\n originalValue = _ref.originalValue,\n opts = _objectWithoutPropertiesLoose(_ref, [\"value\", \"label\", \"resolve\", \"originalValue\"]);\n\n return function createError(_temp) {\n var _ref2 = _temp === void 0 ? {} : _temp,\n _ref2$path = _ref2.path,\n path = _ref2$path === void 0 ? opts.path : _ref2$path,\n _ref2$message = _ref2.message,\n message = _ref2$message === void 0 ? opts.message : _ref2$message,\n _ref2$type = _ref2.type,\n type = _ref2$type === void 0 ? opts.name : _ref2$type,\n params = _ref2.params;\n\n params = _extends({\n path: path,\n value: value,\n originalValue: originalValue,\n label: label\n }, resolveParams(opts.params, params, resolve));\n return _extends(new ValidationError(formatError(message, params), value, path, type), {\n params: params\n });\n };\n}\nexport default function createValidation(options) {\n var name = options.name,\n message = options.message,\n test = options.test,\n params = options.params;\n\n function validate(_ref3) {\n var value = _ref3.value,\n path = _ref3.path,\n label = _ref3.label,\n options = _ref3.options,\n originalValue = _ref3.originalValue,\n sync = _ref3.sync,\n rest = _objectWithoutPropertiesLoose(_ref3, [\"value\", \"path\", \"label\", \"options\", \"originalValue\", \"sync\"]);\n\n var parent = options.parent;\n\n var resolve = function resolve(item) {\n return Ref.isRef(item) ? item.getValue({\n value: value,\n parent: parent,\n context: options.context\n }) : item;\n };\n\n var createError = createErrorFactory({\n message: message,\n path: path,\n value: value,\n originalValue: originalValue,\n params: params,\n label: label,\n resolve: resolve,\n name: name\n });\n\n var ctx = _extends({\n path: path,\n parent: parent,\n type: name,\n createError: createError,\n resolve: resolve,\n options: options\n }, rest);\n\n return runTest(test, ctx, value, sync).then(function (validOrError) {\n if (ValidationError.isError(validOrError)) throw validOrError;else if (!validOrError) throw createError();\n });\n }\n\n validate.OPTIONS = options;\n return validate;\n}","import { forEach } from 'property-expr';\n\nvar trim = function trim(part) {\n return part.substr(0, part.length - 1).substr(1);\n};\n\nexport function getIn(schema, path, value, context) {\n if (context === void 0) {\n context = value;\n }\n\n var parent, lastPart, lastPartDebug; // root path: ''\n\n if (!path) return {\n parent: parent,\n parentPath: path,\n schema: schema\n };\n forEach(path, function (_part, isBracket, isArray) {\n var part = isBracket ? trim(_part) : _part;\n schema = schema.resolve({\n context: context,\n parent: parent,\n value: value\n });\n\n if (schema.innerType) {\n var idx = isArray ? parseInt(part, 10) : 0;\n\n if (value && idx >= value.length) {\n throw new Error(\"Yup.reach cannot resolve an array item at index: \" + _part + \", in the path: \" + path + \". \" + \"because there is no value at that index. \");\n }\n\n parent = value;\n value = value && value[idx];\n schema = schema.innerType;\n } // sometimes the array index part of a path doesn't exist: \"nested.arr.child\"\n // in these cases the current part is the next schema and should be processed\n // in this iteration. For cases where the index signature is included this\n // check will fail and we'll handle the `child` part on the next iteration like normal\n\n\n if (!isArray) {\n if (!schema.fields || !schema.fields[part]) throw new Error(\"The schema does not contain the path: \" + path + \". \" + (\"(failed at: \" + lastPartDebug + \" which is a type: \\\"\" + schema._type + \"\\\")\"));\n parent = value;\n value = value && value[part];\n schema = schema.fields[part];\n }\n\n lastPart = part;\n lastPartDebug = isBracket ? '[' + _part + ']' : '.' + _part;\n });\n return {\n schema: schema,\n parent: parent,\n parentPath: lastPart\n };\n}\n\nvar reach = function reach(obj, path, value, context) {\n return getIn(obj, path, value, context).schema;\n};\n\nexport default reach;","import \"core-js/modules/es.array.reduce.js\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n it = o[Symbol.iterator]();\n return it.next.bind(it);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nimport has from \"lodash-es/has\";\nimport cloneDeepWith from \"lodash-es/cloneDeepWith\";\nimport _toArray from \"lodash-es/toArray\";\nimport { mixed as locale } from './locale';\nimport Condition from './Condition';\nimport runValidations from './util/runValidations';\nimport prependDeep from './util/prependDeep';\nimport isSchema from './util/isSchema';\nimport createValidation from './util/createValidation';\nimport printValue from './util/printValue';\nimport Ref from './Reference';\nimport { getIn } from './util/reach';\n\nvar RefSet = /*#__PURE__*/function () {\n function RefSet() {\n this.list = new Set();\n this.refs = new Map();\n }\n\n var _proto = RefSet.prototype;\n\n _proto.describe = function describe() {\n var description = [];\n\n for (var _iterator = _createForOfIteratorHelperLoose(this.list), _step; !(_step = _iterator()).done;) {\n var item = _step.value;\n description.push(item);\n }\n\n for (var _iterator2 = _createForOfIteratorHelperLoose(this.refs), _step2; !(_step2 = _iterator2()).done;) {\n var _step2$value = _step2.value,\n ref = _step2$value[1];\n description.push(ref.describe());\n }\n\n return description;\n };\n\n _proto.toArray = function toArray() {\n return _toArray(this.list).concat(_toArray(this.refs.values()));\n };\n\n _proto.add = function add(value) {\n Ref.isRef(value) ? this.refs.set(value.key, value) : this.list.add(value);\n };\n\n _proto.delete = function _delete(value) {\n Ref.isRef(value) ? this.refs.delete(value.key) : this.list.delete(value);\n };\n\n _proto.has = function has(value, resolve) {\n if (this.list.has(value)) return true;\n var item,\n values = this.refs.values();\n\n while (item = values.next(), !item.done) {\n if (resolve(item.value) === value) return true;\n }\n\n return false;\n };\n\n _proto.clone = function clone() {\n var next = new RefSet();\n next.list = new Set(this.list);\n next.refs = new Map(this.refs);\n return next;\n };\n\n _proto.merge = function merge(newItems, removeItems) {\n var next = this.clone();\n newItems.list.forEach(function (value) {\n return next.add(value);\n });\n newItems.refs.forEach(function (value) {\n return next.add(value);\n });\n removeItems.list.forEach(function (value) {\n return next.delete(value);\n });\n removeItems.refs.forEach(function (value) {\n return next.delete(value);\n });\n return next;\n };\n\n _createClass(RefSet, [{\n key: \"size\",\n get: function get() {\n return this.list.size + this.refs.size;\n }\n }]);\n\n return RefSet;\n}();\n\nexport default function SchemaType(options) {\n var _this = this;\n\n if (options === void 0) {\n options = {};\n }\n\n if (!(this instanceof SchemaType)) return new SchemaType();\n this._deps = [];\n this._conditions = [];\n this._options = {\n abortEarly: true,\n recursive: true\n };\n this._exclusive = Object.create(null);\n this._whitelist = new RefSet();\n this._blacklist = new RefSet();\n this.tests = [];\n this.transforms = [];\n this.withMutation(function () {\n _this.typeError(locale.notType);\n });\n if (has(options, 'default')) this._defaultDefault = options.default;\n this.type = options.type || 'mixed'; // TODO: remove\n\n this._type = options.type || 'mixed';\n}\nvar proto = SchemaType.prototype = {\n __isYupSchema__: true,\n constructor: SchemaType,\n clone: function clone() {\n var _this2 = this;\n\n if (this._mutate) return this; // if the nested value is a schema we can skip cloning, since\n // they are already immutable\n\n return cloneDeepWith(this, function (value) {\n if (isSchema(value) && value !== _this2) return value;\n });\n },\n label: function label(_label) {\n var next = this.clone();\n next._label = _label;\n return next;\n },\n meta: function meta(obj) {\n if (arguments.length === 0) return this._meta;\n var next = this.clone();\n next._meta = _extends(next._meta || {}, obj);\n return next;\n },\n withMutation: function withMutation(fn) {\n var before = this._mutate;\n this._mutate = true;\n var result = fn(this);\n this._mutate = before;\n return result;\n },\n concat: function concat(schema) {\n if (!schema || schema === this) return this;\n if (schema._type !== this._type && this._type !== 'mixed') throw new TypeError(\"You cannot `concat()` schema's of different types: \" + this._type + \" and \" + schema._type);\n var next = prependDeep(schema.clone(), this); // new undefined default is overridden by old non-undefined one, revert\n\n if (has(schema, '_default')) next._default = schema._default;\n next.tests = this.tests;\n next._exclusive = this._exclusive; // manually merge the blacklist/whitelist (the other `schema` takes\n // precedence in case of conflicts)\n\n next._whitelist = this._whitelist.merge(schema._whitelist, schema._blacklist);\n next._blacklist = this._blacklist.merge(schema._blacklist, schema._whitelist); // manually add the new tests to ensure\n // the deduping logic is consistent\n\n next.withMutation(function (next) {\n schema.tests.forEach(function (fn) {\n next.test(fn.OPTIONS);\n });\n });\n return next;\n },\n isType: function isType(v) {\n if (this._nullable && v === null) return true;\n return !this._typeCheck || this._typeCheck(v);\n },\n resolve: function resolve(options) {\n var schema = this;\n\n if (schema._conditions.length) {\n var conditions = schema._conditions;\n schema = schema.clone();\n schema._conditions = [];\n schema = conditions.reduce(function (schema, condition) {\n return condition.resolve(schema, options);\n }, schema);\n schema = schema.resolve(options);\n }\n\n return schema;\n },\n cast: function cast(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var resolvedSchema = this.resolve(_extends({}, options, {\n value: value\n }));\n\n var result = resolvedSchema._cast(value, options);\n\n if (value !== undefined && options.assert !== false && resolvedSchema.isType(result) !== true) {\n var formattedValue = printValue(value);\n var formattedResult = printValue(result);\n throw new TypeError(\"The value of \" + (options.path || 'field') + \" could not be cast to a value \" + (\"that satisfies the schema type: \\\"\" + resolvedSchema._type + \"\\\". \\n\\n\") + (\"attempted value: \" + formattedValue + \" \\n\") + (formattedResult !== formattedValue ? \"result of cast: \" + formattedResult : ''));\n }\n\n return result;\n },\n _cast: function _cast(rawValue) {\n var _this3 = this;\n\n var value = rawValue === undefined ? rawValue : this.transforms.reduce(function (value, fn) {\n return fn.call(_this3, value, rawValue);\n }, rawValue);\n\n if (value === undefined && has(this, '_default')) {\n value = this.default();\n }\n\n return value;\n },\n _validate: function _validate(_value, options) {\n var _this4 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var value = _value;\n var originalValue = options.originalValue != null ? options.originalValue : _value;\n\n var isStrict = this._option('strict', options);\n\n var endEarly = this._option('abortEarly', options);\n\n var sync = options.sync;\n var path = options.path;\n var label = this._label;\n\n if (!isStrict) {\n value = this._cast(value, _extends({\n assert: false\n }, options));\n } // value is cast, we can check if it meets type requirements\n\n\n var validationParams = {\n value: value,\n path: path,\n schema: this,\n options: options,\n label: label,\n originalValue: originalValue,\n sync: sync\n };\n\n if (options.from) {\n validationParams.from = options.from;\n }\n\n var initialTests = [];\n if (this._typeError) initialTests.push(this._typeError(validationParams));\n if (this._whitelistError) initialTests.push(this._whitelistError(validationParams));\n if (this._blacklistError) initialTests.push(this._blacklistError(validationParams));\n return runValidations({\n validations: initialTests,\n endEarly: endEarly,\n value: value,\n path: path,\n sync: sync\n }).then(function (value) {\n return runValidations({\n path: path,\n sync: sync,\n value: value,\n endEarly: endEarly,\n validations: _this4.tests.map(function (fn) {\n return fn(validationParams);\n })\n });\n });\n },\n validate: function validate(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var schema = this.resolve(_extends({}, options, {\n value: value\n }));\n return schema._validate(value, options);\n },\n validateSync: function validateSync(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var schema = this.resolve(_extends({}, options, {\n value: value\n }));\n var result, err;\n\n schema._validate(value, _extends({}, options, {\n sync: true\n })).then(function (r) {\n return result = r;\n }).catch(function (e) {\n return err = e;\n });\n\n if (err) throw err;\n return result;\n },\n isValid: function isValid(value, options) {\n return this.validate(value, options).then(function () {\n return true;\n }).catch(function (err) {\n if (err.name === 'ValidationError') return false;\n throw err;\n });\n },\n isValidSync: function isValidSync(value, options) {\n try {\n this.validateSync(value, options);\n return true;\n } catch (err) {\n if (err.name === 'ValidationError') return false;\n throw err;\n }\n },\n getDefault: function getDefault(options) {\n if (options === void 0) {\n options = {};\n }\n\n var schema = this.resolve(options);\n return schema.default();\n },\n default: function _default(def) {\n if (arguments.length === 0) {\n var defaultValue = has(this, '_default') ? this._default : this._defaultDefault;\n return typeof defaultValue === 'function' ? defaultValue.call(this) : cloneDeepWith(defaultValue);\n }\n\n var next = this.clone();\n next._default = def;\n return next;\n },\n strict: function strict(isStrict) {\n if (isStrict === void 0) {\n isStrict = true;\n }\n\n var next = this.clone();\n next._options.strict = isStrict;\n return next;\n },\n _isPresent: function _isPresent(value) {\n return value != null;\n },\n required: function required(message) {\n if (message === void 0) {\n message = locale.required;\n }\n\n return this.test({\n message: message,\n name: 'required',\n exclusive: true,\n test: function test(value) {\n return this.schema._isPresent(value);\n }\n });\n },\n notRequired: function notRequired() {\n var next = this.clone();\n next.tests = next.tests.filter(function (test) {\n return test.OPTIONS.name !== 'required';\n });\n return next;\n },\n nullable: function nullable(isNullable) {\n if (isNullable === void 0) {\n isNullable = true;\n }\n\n var next = this.clone();\n next._nullable = isNullable;\n return next;\n },\n transform: function transform(fn) {\n var next = this.clone();\n next.transforms.push(fn);\n return next;\n },\n\n /**\n * Adds a test function to the schema's queue of tests.\n * tests can be exclusive or non-exclusive.\n *\n * - exclusive tests, will replace any existing tests of the same name.\n * - non-exclusive: can be stacked\n *\n * If a non-exclusive test is added to a schema with an exclusive test of the same name\n * the exclusive test is removed and further tests of the same name will be stacked.\n *\n * If an exclusive test is added to a schema with non-exclusive tests of the same name\n * the previous tests are removed and further tests of the same name will replace each other.\n */\n test: function test() {\n var opts;\n\n if (arguments.length === 1) {\n if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'function') {\n opts = {\n test: arguments.length <= 0 ? undefined : arguments[0]\n };\n } else {\n opts = arguments.length <= 0 ? undefined : arguments[0];\n }\n } else if (arguments.length === 2) {\n opts = {\n name: arguments.length <= 0 ? undefined : arguments[0],\n test: arguments.length <= 1 ? undefined : arguments[1]\n };\n } else {\n opts = {\n name: arguments.length <= 0 ? undefined : arguments[0],\n message: arguments.length <= 1 ? undefined : arguments[1],\n test: arguments.length <= 2 ? undefined : arguments[2]\n };\n }\n\n if (opts.message === undefined) opts.message = locale.default;\n if (typeof opts.test !== 'function') throw new TypeError('`test` is a required parameters');\n var next = this.clone();\n var validate = createValidation(opts);\n var isExclusive = opts.exclusive || opts.name && next._exclusive[opts.name] === true;\n\n if (opts.exclusive && !opts.name) {\n throw new TypeError('Exclusive tests must provide a unique `name` identifying the test');\n }\n\n next._exclusive[opts.name] = !!opts.exclusive;\n next.tests = next.tests.filter(function (fn) {\n if (fn.OPTIONS.name === opts.name) {\n if (isExclusive) return false;\n if (fn.OPTIONS.test === validate.OPTIONS.test) return false;\n }\n\n return true;\n });\n next.tests.push(validate);\n return next;\n },\n when: function when(keys, options) {\n if (arguments.length === 1) {\n options = keys;\n keys = '.';\n }\n\n var next = this.clone(),\n deps = [].concat(keys).map(function (key) {\n return new Ref(key);\n });\n deps.forEach(function (dep) {\n if (dep.isSibling) next._deps.push(dep.key);\n });\n\n next._conditions.push(new Condition(deps, options));\n\n return next;\n },\n typeError: function typeError(message) {\n var next = this.clone();\n next._typeError = createValidation({\n message: message,\n name: 'typeError',\n test: function test(value) {\n if (value !== undefined && !this.schema.isType(value)) return this.createError({\n params: {\n type: this.schema._type\n }\n });\n return true;\n }\n });\n return next;\n },\n oneOf: function oneOf(enums, message) {\n if (message === void 0) {\n message = locale.oneOf;\n }\n\n var next = this.clone();\n enums.forEach(function (val) {\n next._whitelist.add(val);\n\n next._blacklist.delete(val);\n });\n next._whitelistError = createValidation({\n message: message,\n name: 'oneOf',\n test: function test(value) {\n if (value === undefined) return true;\n var valids = this.schema._whitelist;\n return valids.has(value, this.resolve) ? true : this.createError({\n params: {\n values: valids.toArray().join(', ')\n }\n });\n }\n });\n return next;\n },\n notOneOf: function notOneOf(enums, message) {\n if (message === void 0) {\n message = locale.notOneOf;\n }\n\n var next = this.clone();\n enums.forEach(function (val) {\n next._blacklist.add(val);\n\n next._whitelist.delete(val);\n });\n next._blacklistError = createValidation({\n message: message,\n name: 'notOneOf',\n test: function test(value) {\n var invalids = this.schema._blacklist;\n if (invalids.has(value, this.resolve)) return this.createError({\n params: {\n values: invalids.toArray().join(', ')\n }\n });\n return true;\n }\n });\n return next;\n },\n strip: function strip(_strip) {\n if (_strip === void 0) {\n _strip = true;\n }\n\n var next = this.clone();\n next._strip = _strip;\n return next;\n },\n _option: function _option(key, overrides) {\n return has(overrides, key) ? overrides[key] : this._options[key];\n },\n describe: function describe() {\n var next = this.clone();\n var description = {\n type: next._type,\n meta: next._meta,\n label: next._label,\n tests: next.tests.map(function (fn) {\n return {\n name: fn.OPTIONS.name,\n params: fn.OPTIONS.params\n };\n }).filter(function (n, idx, list) {\n return list.findIndex(function (c) {\n return c.name === n.name;\n }) === idx;\n })\n };\n if (next._whitelist.size) description.oneOf = next._whitelist.describe();\n if (next._blacklist.size) description.notOneOf = next._blacklist.describe();\n return description;\n },\n defined: function defined(message) {\n if (message === void 0) {\n message = locale.defined;\n }\n\n return this.nullable().test({\n message: message,\n name: 'defined',\n exclusive: true,\n test: function test(value) {\n return value !== undefined;\n }\n });\n }\n};\n\nvar _loop = function _loop() {\n var method = _arr[_i];\n\n proto[method + \"At\"] = function (path, value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _getIn = getIn(this, path, value, options.context),\n parent = _getIn.parent,\n parentPath = _getIn.parentPath,\n schema = _getIn.schema;\n\n return schema[method](parent && parent[parentPath], _extends({}, options, {\n parent: parent,\n path: path\n }));\n };\n};\n\nfor (var _i = 0, _arr = ['validate', 'validateSync']; _i < _arr.length; _i++) {\n _loop();\n}\n\nfor (var _i2 = 0, _arr2 = ['equals', 'is']; _i2 < _arr2.length; _i2++) {\n var alias = _arr2[_i2];\n proto[alias] = proto.oneOf;\n}\n\nfor (var _i3 = 0, _arr3 = ['not', 'nope']; _i3 < _arr3.length; _i3++) {\n var _alias = _arr3[_i3];\n proto[_alias] = proto.notOneOf;\n}\n\nproto.optional = proto.notRequired;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function inherits(ctor, superCtor, spec) {\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 _extends(ctor.prototype, spec);\n}","import inherits from './util/inherits';\nimport MixedSchema from './mixed';\nexport default BooleanSchema;\n\nfunction BooleanSchema() {\n var _this = this;\n\n if (!(this instanceof BooleanSchema)) return new BooleanSchema();\n MixedSchema.call(this, {\n type: 'boolean'\n });\n this.withMutation(function () {\n _this.transform(function (value) {\n if (!this.isType(value)) {\n if (/^(true|1)$/i.test(value)) return true;\n if (/^(false|0)$/i.test(value)) return false;\n }\n\n return value;\n });\n });\n}\n\ninherits(BooleanSchema, MixedSchema, {\n _typeCheck: function _typeCheck(v) {\n if (v instanceof Boolean) v = v.valueOf();\n return typeof v === 'boolean';\n }\n});","export default (function (value) {\n return value == null;\n});","import inherits from './util/inherits';\nimport MixedSchema from './mixed';\nimport { string as locale } from './locale';\nimport isAbsent from './util/isAbsent'; // eslint-disable-next-line\n\nvar rEmail = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i; // eslint-disable-next-line\n\nvar rUrl = /^((https?|ftp):)?\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i; // eslint-disable-next-line\n\nvar rUUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\nvar isTrimmed = function isTrimmed(value) {\n return isAbsent(value) || value === value.trim();\n};\n\nexport default function StringSchema() {\n var _this = this;\n\n if (!(this instanceof StringSchema)) return new StringSchema();\n MixedSchema.call(this, {\n type: 'string'\n });\n this.withMutation(function () {\n _this.transform(function (value) {\n if (this.isType(value)) return value;\n return value != null && value.toString ? value.toString() : value;\n });\n });\n}\ninherits(StringSchema, MixedSchema, {\n _typeCheck: function _typeCheck(value) {\n if (value instanceof String) value = value.valueOf();\n return typeof value === 'string';\n },\n _isPresent: function _isPresent(value) {\n return MixedSchema.prototype._isPresent.call(this, value) && value.length > 0;\n },\n length: function length(_length, message) {\n if (message === void 0) {\n message = locale.length;\n }\n\n return this.test({\n message: message,\n name: 'length',\n exclusive: true,\n params: {\n length: _length\n },\n test: function test(value) {\n return isAbsent(value) || value.length === this.resolve(_length);\n }\n });\n },\n min: function min(_min, message) {\n if (message === void 0) {\n message = locale.min;\n }\n\n return this.test({\n message: message,\n name: 'min',\n exclusive: true,\n params: {\n min: _min\n },\n test: function test(value) {\n return isAbsent(value) || value.length >= this.resolve(_min);\n }\n });\n },\n max: function max(_max, message) {\n if (message === void 0) {\n message = locale.max;\n }\n\n return this.test({\n name: 'max',\n exclusive: true,\n message: message,\n params: {\n max: _max\n },\n test: function test(value) {\n return isAbsent(value) || value.length <= this.resolve(_max);\n }\n });\n },\n matches: function matches(regex, options) {\n var excludeEmptyString = false;\n var message;\n var name;\n\n if (options) {\n if (typeof options === 'object') {\n excludeEmptyString = options.excludeEmptyString;\n message = options.message;\n name = options.name;\n } else {\n message = options;\n }\n }\n\n return this.test({\n name: name || 'matches',\n message: message || locale.matches,\n params: {\n regex: regex\n },\n test: function test(value) {\n return isAbsent(value) || value === '' && excludeEmptyString || value.search(regex) !== -1;\n }\n });\n },\n email: function email(message) {\n if (message === void 0) {\n message = locale.email;\n }\n\n return this.matches(rEmail, {\n name: 'email',\n message: message,\n excludeEmptyString: true\n });\n },\n url: function url(message) {\n if (message === void 0) {\n message = locale.url;\n }\n\n return this.matches(rUrl, {\n name: 'url',\n message: message,\n excludeEmptyString: true\n });\n },\n uuid: function uuid(message) {\n if (message === void 0) {\n message = locale.uuid;\n }\n\n return this.matches(rUUID, {\n name: 'uuid',\n message: message,\n excludeEmptyString: false\n });\n },\n //-- transforms --\n ensure: function ensure() {\n return this.default('').transform(function (val) {\n return val === null ? '' : val;\n });\n },\n trim: function trim(message) {\n if (message === void 0) {\n message = locale.trim;\n }\n\n return this.transform(function (val) {\n return val != null ? val.trim() : val;\n }).test({\n message: message,\n name: 'trim',\n test: isTrimmed\n });\n },\n lowercase: function lowercase(message) {\n if (message === void 0) {\n message = locale.lowercase;\n }\n\n return this.transform(function (value) {\n return !isAbsent(value) ? value.toLowerCase() : value;\n }).test({\n message: message,\n name: 'string_case',\n exclusive: true,\n test: function test(value) {\n return isAbsent(value) || value === value.toLowerCase();\n }\n });\n },\n uppercase: function uppercase(message) {\n if (message === void 0) {\n message = locale.uppercase;\n }\n\n return this.transform(function (value) {\n return !isAbsent(value) ? value.toUpperCase() : value;\n }).test({\n message: message,\n name: 'string_case',\n exclusive: true,\n test: function test(value) {\n return isAbsent(value) || value === value.toUpperCase();\n }\n });\n }\n});","import inherits from './util/inherits';\nimport MixedSchema from './mixed';\nimport { number as locale } from './locale';\nimport isAbsent from './util/isAbsent';\n\nvar isNaN = function isNaN(value) {\n return value != +value;\n};\n\nexport default function NumberSchema() {\n var _this = this;\n\n if (!(this instanceof NumberSchema)) return new NumberSchema();\n MixedSchema.call(this, {\n type: 'number'\n });\n this.withMutation(function () {\n _this.transform(function (value) {\n var parsed = value;\n\n if (typeof parsed === 'string') {\n parsed = parsed.replace(/\\s/g, '');\n if (parsed === '') return NaN; // don't use parseFloat to avoid positives on alpha-numeric strings\n\n parsed = +parsed;\n }\n\n if (this.isType(parsed)) return parsed;\n return parseFloat(parsed);\n });\n });\n}\ninherits(NumberSchema, MixedSchema, {\n _typeCheck: function _typeCheck(value) {\n if (value instanceof Number) value = value.valueOf();\n return typeof value === 'number' && !isNaN(value);\n },\n min: function min(_min, message) {\n if (message === void 0) {\n message = locale.min;\n }\n\n return this.test({\n message: message,\n name: 'min',\n exclusive: true,\n params: {\n min: _min\n },\n test: function test(value) {\n return isAbsent(value) || value >= this.resolve(_min);\n }\n });\n },\n max: function max(_max, message) {\n if (message === void 0) {\n message = locale.max;\n }\n\n return this.test({\n message: message,\n name: 'max',\n exclusive: true,\n params: {\n max: _max\n },\n test: function test(value) {\n return isAbsent(value) || value <= this.resolve(_max);\n }\n });\n },\n lessThan: function lessThan(less, message) {\n if (message === void 0) {\n message = locale.lessThan;\n }\n\n return this.test({\n message: message,\n name: 'max',\n exclusive: true,\n params: {\n less: less\n },\n test: function test(value) {\n return isAbsent(value) || value < this.resolve(less);\n }\n });\n },\n moreThan: function moreThan(more, message) {\n if (message === void 0) {\n message = locale.moreThan;\n }\n\n return this.test({\n message: message,\n name: 'min',\n exclusive: true,\n params: {\n more: more\n },\n test: function test(value) {\n return isAbsent(value) || value > this.resolve(more);\n }\n });\n },\n positive: function positive(msg) {\n if (msg === void 0) {\n msg = locale.positive;\n }\n\n return this.moreThan(0, msg);\n },\n negative: function negative(msg) {\n if (msg === void 0) {\n msg = locale.negative;\n }\n\n return this.lessThan(0, msg);\n },\n integer: function integer(message) {\n if (message === void 0) {\n message = locale.integer;\n }\n\n return this.test({\n name: 'integer',\n message: message,\n test: function test(val) {\n return isAbsent(val) || Number.isInteger(val);\n }\n });\n },\n truncate: function truncate() {\n return this.transform(function (value) {\n return !isAbsent(value) ? value | 0 : value;\n });\n },\n round: function round(method) {\n var avail = ['ceil', 'floor', 'round', 'trunc'];\n method = method && method.toLowerCase() || 'round'; // this exists for symemtry with the new Math.trunc\n\n if (method === 'trunc') return this.truncate();\n if (avail.indexOf(method.toLowerCase()) === -1) throw new TypeError('Only valid options for round() are: ' + avail.join(', '));\n return this.transform(function (value) {\n return !isAbsent(value) ? Math[method](value) : value;\n });\n }\n});","/* eslint-disable */\n\n/**\n *\n * Date.parse with progressive enhancement for ISO 8601 \n * NON-CONFORMANT EDITION.\n * © 2011 Colin Snover \n * Released under MIT license.\n */\n// 1 YYYY 2 MM 3 DD 4 HH 5 mm 6 ss 7 msec 8 Z 9 ± 10 tzHH 11 tzmm\nvar isoReg = /^(\\d{4}|[+\\-]\\d{6})(?:-?(\\d{2})(?:-?(\\d{2}))?)?(?:[ T]?(\\d{2}):?(\\d{2})(?::?(\\d{2})(?:[,\\.](\\d{1,}))?)?(?:(Z)|([+\\-])(\\d{2})(?::?(\\d{2}))?)?)?$/;\nexport default function parseIsoDate(date) {\n var numericKeys = [1, 4, 5, 6, 7, 10, 11],\n minutesOffset = 0,\n timestamp,\n struct;\n\n if (struct = isoReg.exec(date)) {\n // avoid NaN timestamps caused by “undefined” values being passed to Date.UTC\n for (var i = 0, k; k = numericKeys[i]; ++i) {\n struct[k] = +struct[k] || 0;\n } // allow undefined days and months\n\n\n struct[2] = (+struct[2] || 1) - 1;\n struct[3] = +struct[3] || 1; // allow arbitrary sub-second precision beyond milliseconds\n\n struct[7] = struct[7] ? String(struct[7]).substr(0, 3) : 0; // timestamps without timezone identifiers should be considered local time\n\n if ((struct[8] === undefined || struct[8] === '') && (struct[9] === undefined || struct[9] === '')) timestamp = +new Date(struct[1], struct[2], struct[3], struct[4], struct[5], struct[6], struct[7]);else {\n if (struct[8] !== 'Z' && struct[9] !== undefined) {\n minutesOffset = struct[10] * 60 + struct[11];\n if (struct[9] === '+') minutesOffset = 0 - minutesOffset;\n }\n\n timestamp = Date.UTC(struct[1], struct[2], struct[3], struct[4], struct[5] + minutesOffset, struct[6], struct[7]);\n }\n } else timestamp = Date.parse ? Date.parse(date) : NaN;\n\n return timestamp;\n}","import MixedSchema from './mixed';\nimport inherits from './util/inherits';\nimport isoParse from './util/isodate';\nimport { date as locale } from './locale';\nimport isAbsent from './util/isAbsent';\nimport Ref from './Reference';\nvar invalidDate = new Date('');\n\nvar isDate = function isDate(obj) {\n return Object.prototype.toString.call(obj) === '[object Date]';\n};\n\nexport default DateSchema;\n\nfunction DateSchema() {\n var _this = this;\n\n if (!(this instanceof DateSchema)) return new DateSchema();\n MixedSchema.call(this, {\n type: 'date'\n });\n this.withMutation(function () {\n _this.transform(function (value) {\n if (this.isType(value)) return value;\n value = isoParse(value); // 0 is a valid timestamp equivalent to 1970-01-01T00:00:00Z(unix epoch) or before.\n\n return !isNaN(value) ? new Date(value) : invalidDate;\n });\n });\n}\n\ninherits(DateSchema, MixedSchema, {\n _typeCheck: function _typeCheck(v) {\n return isDate(v) && !isNaN(v.getTime());\n },\n min: function min(_min, message) {\n if (message === void 0) {\n message = locale.min;\n }\n\n var limit = _min;\n\n if (!Ref.isRef(limit)) {\n limit = this.cast(_min);\n if (!this._typeCheck(limit)) throw new TypeError('`min` must be a Date or a value that can be `cast()` to a Date');\n }\n\n return this.test({\n message: message,\n name: 'min',\n exclusive: true,\n params: {\n min: _min\n },\n test: function test(value) {\n return isAbsent(value) || value >= this.resolve(limit);\n }\n });\n },\n max: function max(_max, message) {\n if (message === void 0) {\n message = locale.max;\n }\n\n var limit = _max;\n\n if (!Ref.isRef(limit)) {\n limit = this.cast(_max);\n if (!this._typeCheck(limit)) throw new TypeError('`max` must be a Date or a value that can be `cast()` to a Date');\n }\n\n return this.test({\n message: message,\n name: 'max',\n exclusive: true,\n params: {\n max: _max\n },\n test: function test(value) {\n return isAbsent(value) || value <= this.resolve(limit);\n }\n });\n }\n});","export default function _taggedTemplateLiteralLoose(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n strings.raw = raw;\n return strings;\n}","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n\n return accumulator;\n}\n\nexport default arrayReduce;","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function (key) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default basePropertyOf;","import basePropertyOf from './_basePropertyOf.js';\n/** Used to map Latin Unicode letters to basic Latin letters. */\n\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A',\n '\\xc1': 'A',\n '\\xc2': 'A',\n '\\xc3': 'A',\n '\\xc4': 'A',\n '\\xc5': 'A',\n '\\xe0': 'a',\n '\\xe1': 'a',\n '\\xe2': 'a',\n '\\xe3': 'a',\n '\\xe4': 'a',\n '\\xe5': 'a',\n '\\xc7': 'C',\n '\\xe7': 'c',\n '\\xd0': 'D',\n '\\xf0': 'd',\n '\\xc8': 'E',\n '\\xc9': 'E',\n '\\xca': 'E',\n '\\xcb': 'E',\n '\\xe8': 'e',\n '\\xe9': 'e',\n '\\xea': 'e',\n '\\xeb': 'e',\n '\\xcc': 'I',\n '\\xcd': 'I',\n '\\xce': 'I',\n '\\xcf': 'I',\n '\\xec': 'i',\n '\\xed': 'i',\n '\\xee': 'i',\n '\\xef': 'i',\n '\\xd1': 'N',\n '\\xf1': 'n',\n '\\xd2': 'O',\n '\\xd3': 'O',\n '\\xd4': 'O',\n '\\xd5': 'O',\n '\\xd6': 'O',\n '\\xd8': 'O',\n '\\xf2': 'o',\n '\\xf3': 'o',\n '\\xf4': 'o',\n '\\xf5': 'o',\n '\\xf6': 'o',\n '\\xf8': 'o',\n '\\xd9': 'U',\n '\\xda': 'U',\n '\\xdb': 'U',\n '\\xdc': 'U',\n '\\xf9': 'u',\n '\\xfa': 'u',\n '\\xfb': 'u',\n '\\xfc': 'u',\n '\\xdd': 'Y',\n '\\xfd': 'y',\n '\\xff': 'y',\n '\\xc6': 'Ae',\n '\\xe6': 'ae',\n '\\xde': 'Th',\n '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n \"\\u0100\": 'A',\n \"\\u0102\": 'A',\n \"\\u0104\": 'A',\n \"\\u0101\": 'a',\n \"\\u0103\": 'a',\n \"\\u0105\": 'a',\n \"\\u0106\": 'C',\n \"\\u0108\": 'C',\n \"\\u010A\": 'C',\n \"\\u010C\": 'C',\n \"\\u0107\": 'c',\n \"\\u0109\": 'c',\n \"\\u010B\": 'c',\n \"\\u010D\": 'c',\n \"\\u010E\": 'D',\n \"\\u0110\": 'D',\n \"\\u010F\": 'd',\n \"\\u0111\": 'd',\n \"\\u0112\": 'E',\n \"\\u0114\": 'E',\n \"\\u0116\": 'E',\n \"\\u0118\": 'E',\n \"\\u011A\": 'E',\n \"\\u0113\": 'e',\n \"\\u0115\": 'e',\n \"\\u0117\": 'e',\n \"\\u0119\": 'e',\n \"\\u011B\": 'e',\n \"\\u011C\": 'G',\n \"\\u011E\": 'G',\n \"\\u0120\": 'G',\n \"\\u0122\": 'G',\n \"\\u011D\": 'g',\n \"\\u011F\": 'g',\n \"\\u0121\": 'g',\n \"\\u0123\": 'g',\n \"\\u0124\": 'H',\n \"\\u0126\": 'H',\n \"\\u0125\": 'h',\n \"\\u0127\": 'h',\n \"\\u0128\": 'I',\n \"\\u012A\": 'I',\n \"\\u012C\": 'I',\n \"\\u012E\": 'I',\n \"\\u0130\": 'I',\n \"\\u0129\": 'i',\n \"\\u012B\": 'i',\n \"\\u012D\": 'i',\n \"\\u012F\": 'i',\n \"\\u0131\": 'i',\n \"\\u0134\": 'J',\n \"\\u0135\": 'j',\n \"\\u0136\": 'K',\n \"\\u0137\": 'k',\n \"\\u0138\": 'k',\n \"\\u0139\": 'L',\n \"\\u013B\": 'L',\n \"\\u013D\": 'L',\n \"\\u013F\": 'L',\n \"\\u0141\": 'L',\n \"\\u013A\": 'l',\n \"\\u013C\": 'l',\n \"\\u013E\": 'l',\n \"\\u0140\": 'l',\n \"\\u0142\": 'l',\n \"\\u0143\": 'N',\n \"\\u0145\": 'N',\n \"\\u0147\": 'N',\n \"\\u014A\": 'N',\n \"\\u0144\": 'n',\n \"\\u0146\": 'n',\n \"\\u0148\": 'n',\n \"\\u014B\": 'n',\n \"\\u014C\": 'O',\n \"\\u014E\": 'O',\n \"\\u0150\": 'O',\n \"\\u014D\": 'o',\n \"\\u014F\": 'o',\n \"\\u0151\": 'o',\n \"\\u0154\": 'R',\n \"\\u0156\": 'R',\n \"\\u0158\": 'R',\n \"\\u0155\": 'r',\n \"\\u0157\": 'r',\n \"\\u0159\": 'r',\n \"\\u015A\": 'S',\n \"\\u015C\": 'S',\n \"\\u015E\": 'S',\n \"\\u0160\": 'S',\n \"\\u015B\": 's',\n \"\\u015D\": 's',\n \"\\u015F\": 's',\n \"\\u0161\": 's',\n \"\\u0162\": 'T',\n \"\\u0164\": 'T',\n \"\\u0166\": 'T',\n \"\\u0163\": 't',\n \"\\u0165\": 't',\n \"\\u0167\": 't',\n \"\\u0168\": 'U',\n \"\\u016A\": 'U',\n \"\\u016C\": 'U',\n \"\\u016E\": 'U',\n \"\\u0170\": 'U',\n \"\\u0172\": 'U',\n \"\\u0169\": 'u',\n \"\\u016B\": 'u',\n \"\\u016D\": 'u',\n \"\\u016F\": 'u',\n \"\\u0171\": 'u',\n \"\\u0173\": 'u',\n \"\\u0174\": 'W',\n \"\\u0175\": 'w',\n \"\\u0176\": 'Y',\n \"\\u0177\": 'y',\n \"\\u0178\": 'Y',\n \"\\u0179\": 'Z',\n \"\\u017B\": 'Z',\n \"\\u017D\": 'Z',\n \"\\u017A\": 'z',\n \"\\u017C\": 'z',\n \"\\u017E\": 'z',\n \"\\u0132\": 'IJ',\n \"\\u0133\": 'ij',\n \"\\u0152\": 'Oe',\n \"\\u0153\": 'oe',\n \"\\u0149\": \"'n\",\n \"\\u017F\": 's'\n};\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n\nvar deburrLetter = basePropertyOf(deburredLetters);\nexport default deburrLetter;","import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\n\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n/** Used to compose unicode character classes. */\n\nvar rsComboMarksRange = \"\\\\u0300-\\\\u036f\",\n reComboHalfMarksRange = \"\\\\ufe20-\\\\ufe2f\",\n rsComboSymbolsRange = \"\\\\u20d0-\\\\u20ff\",\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n/** Used to compose unicode capture groups. */\n\nvar rsCombo = '[' + rsComboRange + ']';\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n\nvar reComboMark = RegExp(rsCombo, 'g');\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nexport default asciiWords;","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nexport default hasUnicodeWord;","/** Used to compose unicode character classes. */\nvar rsAstralRange = \"\\\\ud800-\\\\udfff\",\n rsComboMarksRange = \"\\\\u0300-\\\\u036f\",\n reComboHalfMarksRange = \"\\\\ufe20-\\\\ufe2f\",\n rsComboSymbolsRange = \"\\\\u20d0-\\\\u20ff\",\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = \"\\\\u2700-\\\\u27bf\",\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = \"\\\\u2000-\\\\u206f\",\n rsSpaceRange = \" \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\",\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = \"\\\\ufe0e\\\\ufe0f\",\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n/** Used to compose unicode capture groups. */\n\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = \"\\\\ud83c[\\\\udffb-\\\\udfff]\",\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = \"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",\n rsSurrPair = \"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = \"\\\\u200d\";\n/** Used to compose unicode regexes. */\n\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n/** Used to match complex or compound words. */\n\nvar reUnicodeWord = RegExp([rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, rsUpper + '+' + rsOptContrUpper, rsOrdUpper, rsOrdLower, rsDigits, rsEmoji].join('|'), 'g');\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nexport default unicodeWords;","import asciiWords from './_asciiWords.js';\nimport hasUnicodeWord from './_hasUnicodeWord.js';\nimport toString from './toString.js';\nimport unicodeWords from './_unicodeWords.js';\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n\n return string.match(pattern) || [];\n}\n\nexport default words;","import arrayReduce from './_arrayReduce.js';\nimport deburr from './deburr.js';\nimport words from './words.js';\n/** Used to compose unicode capture groups. */\n\nvar rsApos = \"['\\u2019]\";\n/** Used to match apostrophes. */\n\nvar reApos = RegExp(rsApos, 'g');\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n\nfunction createCompounder(callback) {\n return function (string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nexport default createCompounder;","import createCompounder from './_createCompounder.js';\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n\nvar snakeCase = createCompounder(function (result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n});\nexport default snakeCase;","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : length + start;\n }\n\n end = end > length ? length : end;\n\n if (end < 0) {\n end += length;\n }\n\n length = start > end ? 0 : end - start >>> 0;\n start >>>= 0;\n var result = Array(length);\n\n while (++index < length) {\n result[index] = array[index + start];\n }\n\n return result;\n}\n\nexport default baseSlice;","import baseSlice from './_baseSlice.js';\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return !start && end >= length ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;","import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n\nfunction createCaseFirst(methodName) {\n return function (string) {\n string = toString(string);\n var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined;\n var chr = strSymbols ? strSymbols[0] : string.charAt(0);\n var trailing = strSymbols ? castSlice(strSymbols, 1).join('') : string.slice(1);\n return chr[methodName]() + trailing;\n };\n}\n\nexport default createCaseFirst;","import createCaseFirst from './_createCaseFirst.js';\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n\nvar upperFirst = createCaseFirst('toUpperCase');\nexport default upperFirst;","import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;","import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n\nvar camelCase = createCompounder(function (result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\nexport default camelCase;","import baseAssignValue from './_baseAssignValue.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\n/**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n\nfunction mapKeys(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n baseForOwn(object, function (value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n}\n\nexport default mapKeys;","import has from \"lodash-es/has\";\nimport toposort from 'toposort';\nimport { split } from 'property-expr';\nimport Ref from '../Reference';\nimport isSchema from './isSchema';\nexport default function sortFields(fields, excludes) {\n if (excludes === void 0) {\n excludes = [];\n }\n\n var edges = [],\n nodes = [];\n\n function addNode(depPath, key) {\n var node = split(depPath)[0];\n if (!~nodes.indexOf(node)) nodes.push(node);\n if (!~excludes.indexOf(key + \"-\" + node)) edges.push([key, node]);\n }\n\n for (var key in fields) {\n if (has(fields, key)) {\n var value = fields[key];\n if (!~nodes.indexOf(key)) nodes.push(key);\n if (Ref.isRef(value) && value.isSibling) addNode(value.path, key);else if (isSchema(value) && value._deps) value._deps.forEach(function (path) {\n return addNode(path, key);\n });\n }\n }\n\n return toposort.array(nodes, edges).reverse();\n}","function findIndex(arr, err) {\n var idx = Infinity;\n arr.some(function (key, ii) {\n if (err.path.indexOf(key) !== -1) {\n idx = ii;\n return true;\n }\n });\n return idx;\n}\n\nexport default function sortByKeyOrder(fields) {\n var keys = Object.keys(fields);\n return function (a, b) {\n return findIndex(keys, a) - findIndex(keys, b);\n };\n}","import \"core-js/modules/es.array.reduce.js\";\nexport default function makePath(strings) {\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n values[_key - 1] = arguments[_key];\n }\n\n var path = strings.reduce(function (str, next) {\n var value = values.shift();\n return str + (value == null ? '' : value) + next;\n });\n return path.replace(/^\\./, '');\n}","import _taggedTemplateLiteralLoose from \"@babel/runtime/helpers/esm/taggedTemplateLiteralLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n\nfunction _templateObject3() {\n var data = _taggedTemplateLiteralLoose([\"\", \"[\\\"\", \"\\\"]\"]);\n\n _templateObject3 = function _templateObject3() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject2() {\n var data = _taggedTemplateLiteralLoose([\"\", \".\", \"\"]);\n\n _templateObject2 = function _templateObject2() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject() {\n var data = _taggedTemplateLiteralLoose([\"\", \".\", \"\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\nimport has from \"lodash-es/has\";\nimport _snakeCase from \"lodash-es/snakeCase\";\nimport _camelCase from \"lodash-es/camelCase\";\nimport mapKeys from \"lodash-es/mapKeys\";\nimport mapValues from \"lodash-es/mapValues\";\nimport { getter } from 'property-expr';\nimport MixedSchema from './mixed';\nimport { object as locale } from './locale.js';\nimport sortFields from './util/sortFields';\nimport sortByKeyOrder from './util/sortByKeyOrder';\nimport inherits from './util/inherits';\nimport makePath from './util/makePath';\nimport runValidations, { propagateErrors } from './util/runValidations';\nimport { SynchronousPromise } from 'synchronous-promise';\n\nvar isObject = function isObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n};\n\nvar promise = function promise(sync) {\n return sync ? SynchronousPromise : Promise;\n};\n\nfunction unknown(ctx, value) {\n var known = Object.keys(ctx.fields);\n return Object.keys(value).filter(function (key) {\n return known.indexOf(key) === -1;\n });\n}\n\nexport default function ObjectSchema(spec) {\n var _this2 = this;\n\n if (!(this instanceof ObjectSchema)) return new ObjectSchema(spec);\n MixedSchema.call(this, {\n type: 'object',\n default: function _default() {\n var _this = this;\n\n if (!this._nodes.length) return undefined;\n var dft = {};\n\n this._nodes.forEach(function (key) {\n dft[key] = _this.fields[key].default ? _this.fields[key].default() : undefined;\n });\n\n return dft;\n }\n });\n this.fields = Object.create(null);\n this._nodes = [];\n this._excludedEdges = [];\n this.withMutation(function () {\n _this2.transform(function coerce(value) {\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value);\n } catch (err) {\n value = null;\n }\n }\n\n if (this.isType(value)) return value;\n return null;\n });\n\n if (spec) {\n _this2.shape(spec);\n }\n });\n}\ninherits(ObjectSchema, MixedSchema, {\n _typeCheck: function _typeCheck(value) {\n return isObject(value) || typeof value === 'function';\n },\n _cast: function _cast(_value, options) {\n var _this3 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var value = MixedSchema.prototype._cast.call(this, _value, options); //should ignore nulls here\n\n\n if (value === undefined) return this.default();\n if (!this._typeCheck(value)) return value;\n var fields = this.fields;\n var strip = this._option('stripUnknown', options) === true;\n\n var props = this._nodes.concat(Object.keys(value).filter(function (v) {\n return _this3._nodes.indexOf(v) === -1;\n }));\n\n var intermediateValue = {}; // is filled during the transform below\n\n var innerOptions = _extends({}, options, {\n parent: intermediateValue,\n __validating: options.__validating || false\n });\n\n var isChanged = false;\n props.forEach(function (prop) {\n var field = fields[prop];\n var exists = has(value, prop);\n\n if (field) {\n var fieldValue;\n var strict = field._options && field._options.strict; // safe to mutate since this is fired in sequence\n\n innerOptions.path = makePath(_templateObject(), options.path, prop);\n innerOptions.value = value[prop];\n field = field.resolve(innerOptions);\n\n if (field._strip === true) {\n isChanged = isChanged || prop in value;\n return;\n }\n\n fieldValue = !options.__validating || !strict ? field.cast(value[prop], innerOptions) : value[prop];\n if (fieldValue !== undefined) intermediateValue[prop] = fieldValue;\n } else if (exists && !strip) intermediateValue[prop] = value[prop];\n\n if (intermediateValue[prop] !== value[prop]) isChanged = true;\n });\n return isChanged ? intermediateValue : value;\n },\n _validate: function _validate(_value, opts) {\n var _this4 = this;\n\n if (opts === void 0) {\n opts = {};\n }\n\n var endEarly, recursive;\n var sync = opts.sync;\n var errors = [];\n var originalValue = opts.originalValue != null ? opts.originalValue : _value;\n var from = [{\n schema: this,\n value: originalValue\n }].concat(opts.from || []);\n endEarly = this._option('abortEarly', opts);\n recursive = this._option('recursive', opts);\n opts = _extends({}, opts, {\n __validating: true,\n originalValue: originalValue,\n from: from\n });\n return MixedSchema.prototype._validate.call(this, _value, opts).catch(propagateErrors(endEarly, errors)).then(function (value) {\n if (!recursive || !isObject(value)) {\n // only iterate though actual objects\n if (errors.length) throw errors[0];\n return value;\n }\n\n from = originalValue ? [].concat(from) : [{\n schema: _this4,\n value: originalValue || value\n }].concat(opts.from || []);\n originalValue = originalValue || value;\n\n var validations = _this4._nodes.map(function (key) {\n var path = key.indexOf('.') === -1 ? makePath(_templateObject2(), opts.path, key) : makePath(_templateObject3(), opts.path, key);\n var field = _this4.fields[key];\n\n var innerOptions = _extends({}, opts, {\n path: path,\n from: from,\n parent: value,\n originalValue: originalValue[key]\n });\n\n if (field && field.validate) {\n // inner fields are always strict:\n // 1. this isn't strict so the casting will also have cast inner values\n // 2. this is strict in which case the nested values weren't cast either\n innerOptions.strict = true;\n return field.validate(value[key], innerOptions);\n }\n\n return promise(sync).resolve(true);\n });\n\n return runValidations({\n sync: sync,\n validations: validations,\n value: value,\n errors: errors,\n endEarly: endEarly,\n path: opts.path,\n sort: sortByKeyOrder(_this4.fields)\n });\n });\n },\n concat: function concat(schema) {\n var next = MixedSchema.prototype.concat.call(this, schema);\n next._nodes = sortFields(next.fields, next._excludedEdges);\n return next;\n },\n shape: function shape(schema, excludes) {\n if (excludes === void 0) {\n excludes = [];\n }\n\n var next = this.clone();\n\n var fields = _extends(next.fields, schema);\n\n next.fields = fields;\n\n if (excludes.length) {\n if (!Array.isArray(excludes[0])) excludes = [excludes];\n var keys = excludes.map(function (_ref) {\n var first = _ref[0],\n second = _ref[1];\n return first + \"-\" + second;\n });\n next._excludedEdges = next._excludedEdges.concat(keys);\n }\n\n next._nodes = sortFields(fields, next._excludedEdges);\n return next;\n },\n from: function from(_from, to, alias) {\n var fromGetter = getter(_from, true);\n return this.transform(function (obj) {\n if (obj == null) return obj;\n var newObj = obj;\n\n if (has(obj, _from)) {\n newObj = _extends({}, obj);\n if (!alias) delete newObj[_from];\n newObj[to] = fromGetter(obj);\n }\n\n return newObj;\n });\n },\n noUnknown: function noUnknown(noAllow, message) {\n if (noAllow === void 0) {\n noAllow = true;\n }\n\n if (message === void 0) {\n message = locale.noUnknown;\n }\n\n if (typeof noAllow === 'string') {\n message = noAllow;\n noAllow = true;\n }\n\n var next = this.test({\n name: 'noUnknown',\n exclusive: true,\n message: message,\n test: function test(value) {\n if (value == null) return true;\n var unknownKeys = unknown(this.schema, value);\n return !noAllow || unknownKeys.length === 0 || this.createError({\n params: {\n unknown: unknownKeys.join(', ')\n }\n });\n }\n });\n next._options.stripUnknown = noAllow;\n return next;\n },\n unknown: function unknown(allow, message) {\n if (allow === void 0) {\n allow = true;\n }\n\n if (message === void 0) {\n message = locale.noUnknown;\n }\n\n return this.noUnknown(!allow, message);\n },\n transformKeys: function transformKeys(fn) {\n return this.transform(function (obj) {\n return obj && mapKeys(obj, function (_, key) {\n return fn(key);\n });\n });\n },\n camelCase: function camelCase() {\n return this.transformKeys(_camelCase);\n },\n snakeCase: function snakeCase() {\n return this.transformKeys(_snakeCase);\n },\n constantCase: function constantCase() {\n return this.transformKeys(function (key) {\n return _snakeCase(key).toUpperCase();\n });\n },\n describe: function describe() {\n var base = MixedSchema.prototype.describe.call(this);\n base.fields = mapValues(this.fields, function (value) {\n return value.describe();\n });\n return base;\n }\n});","import _taggedTemplateLiteralLoose from \"@babel/runtime/helpers/esm/taggedTemplateLiteralLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n\nfunction _templateObject2() {\n var data = _taggedTemplateLiteralLoose([\"\", \"[\", \"]\"]);\n\n _templateObject2 = function _templateObject2() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject() {\n var data = _taggedTemplateLiteralLoose([\"\", \"[\", \"]\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\nimport inherits from './util/inherits';\nimport isAbsent from './util/isAbsent';\nimport isSchema from './util/isSchema';\nimport makePath from './util/makePath';\nimport printValue from './util/printValue';\nimport MixedSchema from './mixed';\nimport { array as locale } from './locale';\nimport runValidations, { propagateErrors } from './util/runValidations';\nexport default ArraySchema;\n\nfunction ArraySchema(type) {\n var _this = this;\n\n if (!(this instanceof ArraySchema)) return new ArraySchema(type);\n MixedSchema.call(this, {\n type: 'array'\n }); // `undefined` specifically means uninitialized, as opposed to\n // \"no subtype\"\n\n this._subType = undefined;\n this.innerType = undefined;\n this.withMutation(function () {\n _this.transform(function (values) {\n if (typeof values === 'string') try {\n values = JSON.parse(values);\n } catch (err) {\n values = null;\n }\n return this.isType(values) ? values : null;\n });\n\n if (type) _this.of(type);\n });\n}\n\ninherits(ArraySchema, MixedSchema, {\n _typeCheck: function _typeCheck(v) {\n return Array.isArray(v);\n },\n _cast: function _cast(_value, _opts) {\n var _this2 = this;\n\n var value = MixedSchema.prototype._cast.call(this, _value, _opts); //should ignore nulls here\n\n\n if (!this._typeCheck(value) || !this.innerType) return value;\n var isChanged = false;\n var castArray = value.map(function (v, idx) {\n var castElement = _this2.innerType.cast(v, _extends({}, _opts, {\n path: makePath(_templateObject(), _opts.path, idx)\n }));\n\n if (castElement !== v) {\n isChanged = true;\n }\n\n return castElement;\n });\n return isChanged ? castArray : value;\n },\n _validate: function _validate(_value, options) {\n var _this3 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var errors = [];\n var sync = options.sync;\n var path = options.path;\n var innerType = this.innerType;\n\n var endEarly = this._option('abortEarly', options);\n\n var recursive = this._option('recursive', options);\n\n var originalValue = options.originalValue != null ? options.originalValue : _value;\n return MixedSchema.prototype._validate.call(this, _value, options).catch(propagateErrors(endEarly, errors)).then(function (value) {\n if (!recursive || !innerType || !_this3._typeCheck(value)) {\n if (errors.length) throw errors[0];\n return value;\n }\n\n originalValue = originalValue || value; // #950 Ensure that sparse array empty slots are validated\n\n var validations = new Array(value.length);\n\n for (var idx = 0; idx < value.length; idx++) {\n var item = value[idx];\n\n var _path = makePath(_templateObject2(), options.path, idx); // object._validate note for isStrict explanation\n\n\n var innerOptions = _extends({}, options, {\n path: _path,\n strict: true,\n parent: value,\n index: idx,\n originalValue: originalValue[idx]\n });\n\n validations[idx] = innerType.validate ? innerType.validate(item, innerOptions) : true;\n }\n\n return runValidations({\n sync: sync,\n path: path,\n value: value,\n errors: errors,\n endEarly: endEarly,\n validations: validations\n });\n });\n },\n _isPresent: function _isPresent(value) {\n return MixedSchema.prototype._isPresent.call(this, value) && value.length > 0;\n },\n of: function of(schema) {\n var next = this.clone();\n if (schema !== false && !isSchema(schema)) throw new TypeError('`array.of()` sub-schema must be a valid yup schema, or `false` to negate a current sub-schema. ' + 'not: ' + printValue(schema));\n next._subType = schema;\n next.innerType = schema;\n return next;\n },\n min: function min(_min, message) {\n message = message || locale.min;\n return this.test({\n message: message,\n name: 'min',\n exclusive: true,\n params: {\n min: _min\n },\n test: function test(value) {\n return isAbsent(value) || value.length >= this.resolve(_min);\n }\n });\n },\n max: function max(_max, message) {\n message = message || locale.max;\n return this.test({\n message: message,\n name: 'max',\n exclusive: true,\n params: {\n max: _max\n },\n test: function test(value) {\n return isAbsent(value) || value.length <= this.resolve(_max);\n }\n });\n },\n ensure: function ensure() {\n var _this4 = this;\n\n return this.default(function () {\n return [];\n }).transform(function (val, original) {\n // We don't want to return `null` for nullable schema\n if (_this4._typeCheck(val)) return val;\n return original == null ? [] : [].concat(original);\n });\n },\n compact: function compact(rejector) {\n var reject = !rejector ? function (v) {\n return !!v;\n } : function (v, i, a) {\n return !rejector(v, i, a);\n };\n return this.transform(function (values) {\n return values != null ? values.filter(reject) : values;\n });\n },\n describe: function describe() {\n var base = MixedSchema.prototype.describe.call(this);\n if (this.innerType) base.innerType = this.innerType.describe();\n return base;\n }\n});","import isSchema from './util/isSchema';\n\nvar Lazy = /*#__PURE__*/function () {\n function Lazy(mapFn) {\n this._resolve = function (value, options) {\n var schema = mapFn(value, options);\n if (!isSchema(schema)) throw new TypeError('lazy() functions must return a valid schema');\n return schema.resolve(options);\n };\n }\n\n var _proto = Lazy.prototype;\n\n _proto.resolve = function resolve(options) {\n return this._resolve(options.value, options);\n };\n\n _proto.cast = function cast(value, options) {\n return this._resolve(value, options).cast(value, options);\n };\n\n _proto.validate = function validate(value, options) {\n return this._resolve(value, options).validate(value, options);\n };\n\n _proto.validateSync = function validateSync(value, options) {\n return this._resolve(value, options).validateSync(value, options);\n };\n\n _proto.validateAt = function validateAt(path, value, options) {\n return this._resolve(value, options).validateAt(path, value, options);\n };\n\n _proto.validateSyncAt = function validateSyncAt(path, value, options) {\n return this._resolve(value, options).validateSyncAt(path, value, options);\n };\n\n return Lazy;\n}();\n\nLazy.prototype.__isYupSchema__ = true;\nexport default Lazy;","import mixed from './mixed';\nimport bool from './boolean';\nimport string from './string';\nimport number from './number';\nimport date from './date';\nimport object from './object';\nimport array from './array';\nimport Ref from './Reference';\nimport Lazy from './Lazy';\nimport ValidationError from './ValidationError';\nimport reach from './util/reach';\nimport isSchema from './util/isSchema';\nimport setLocale from './setLocale';\nvar boolean = bool;\n\nvar ref = function ref(key, options) {\n return new Ref(key, options);\n};\n\nvar lazy = function lazy(fn) {\n return new Lazy(fn);\n};\n\nfunction addMethod(schemaType, name, fn) {\n if (!schemaType || !isSchema(schemaType.prototype)) throw new TypeError('You must provide a yup schema constructor function');\n if (typeof name !== 'string') throw new TypeError('A Method name must be provided');\n if (typeof fn !== 'function') throw new TypeError('Method function must be provided');\n schemaType.prototype[name] = fn;\n}\n\nexport { mixed, string, number, bool, boolean, date, object, array, ref, lazy, reach, isSchema, addMethod, setLocale, ValidationError };","import * as yup from 'yup';\nimport { Utils } from '@mvrb-frontend/shared-ui';\n\nconst richTextContentValidation = config => {\n return yup\n .mixed()\n .required(config.EMPTY_RICH_TEXT_ERROR_MESSAGE)\n .transform(richTextInput => {\n return Utils.richTextContentToPlainText(richTextInput);\n })\n .test('transformation', config.TRANSFORMATION_ERROR_MESSAGE, value => {\n return !(value instanceof Error);\n })\n .test('string type', config.TYPE_ERROR_MESSAGE, value => {\n return typeof value === 'string' || value instanceof String;\n })\n .test(\n 'non-empty richText content',\n config.EMPTY_RICH_TEXT_CONTENT_ERROR_MESSAGE,\n value => {\n return Boolean(value);\n },\n )\n .test('max length', `Must be ${config.max} characters or less`, value => {\n return value?.length < config.max;\n });\n};\n\nexport const AddReplySchema = yup.object().shape({\n organizationId: yup.string().optional().nullable(),\n proponentId: yup.string().required('Reviewer is required').nullable(),\n description: richTextContentValidation({\n max: 30000,\n TRANSFORMATION_ERROR_MESSAGE: 'Rich Text parsing error',\n TYPE_ERROR_MESSAGE: 'Description should be a string',\n }),\n parentId: yup.string(),\n commentId: yup.string(),\n status: yup.string(),\n attachments: yup.array(),\n});\n\nexport const NewsLetterSchema = yup.object().shape({\n username: yup.string().required('Name is required'),\n email: yup.string().email('Must be an email address').required('Email is required'),\n agree: yup.boolean().oneOf([true], \"Please agree before continue\"),\n options: yup.object().shape({\n lwb: yup.bool(),\n rboard: yup.bool(),\n }).test('options', 'Please select at least one board',function(values){\n return values?.lwb || values?.rboard;\n })\n});\n"],"sourceRoot":""}